Yesterday I ran into an issue with deleting files from atom editor .
When trying to delete a folder, I was presented with the message The following file couldn't be moved to trash (is gvfs-trash installed?)

Turns out, gvfs-trash is superseded by gio trash.
To solve this, you can simply create a file /usr/local/bin/gvfs-trash
with just the following contents:

#!/bin/bash

/usr/bin/gio trash !*

In fact, just an alias but as I don’t want to rely on reading ~/.profile / ~/.zshrc / ~/.bashrc , the above way just works for me.

On my laptop with an Arch Linux installation, I use iwd and systemd-networkd for networking.

I had this problem that when my laptop booted up, no networking was available. It turned out that iwd was started before the interface `wlp2s0` was ready and never detected it afterwards. Restarting iwd every time was annoying so I went to look for a solution.

I found one here.

I added two lines in a systemd override file (`systemctl edit iwd`):

/etc/systemd/system/iwd.service.d/override.conf

[Unit]
BindsTo=sys-subsystem-net-devices-wlp2s0.device
After=sys-subsystem-net-devices-wlp2s0.device

After this changes, networking is available on boot.

First, thanks to Major Hayden for his blog post which pointed out the use of systemd-resolved:
https://major.io/2017/04/13/openstack-ansible-on-centos-7-with-systemd-networkd/

So, now we have the possibility to use systemd-networkd under ubuntu 18.04, I’d like to use it also under CentOS 7.
And yes, we can.

Install systemd-networkd:

yum -y install systemd-networkd

Disable network manager and enable networkd and resolved:

systemctl disable network NetworkManager
systemctl enable systemd-networkd systemd-resolved

Save the following contents to /etc/systemd/network/99-wildcard.network:

[Match]
Name=eth*

[Network]
DHCP=yes
IPv6AcceptRA=yes

(On my server the interface was no longer called ens3 but now eth0, hence the eth*)

Now create a symlink to the systemd-resolved resolv.conf:

rm -f /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

And just to be sure, reboot 🙂

Now we have it up and running:

[root@el7 ~]# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 eth0             ether              routable    configured

2 links listed.
[root@el7 ~]# networkctl status eth0
● 2: eth0
   Link File: n/a
Network File: /etc/systemd/network/99-wildcard.network
        Type: ether
       State: routable (configured)
        Path: pci-0000:00:03.0
      Driver: virtio_net
      Vendor: Red Hat, Inc.
       Model: Virtio network device
  HW Address: 1e:00:85:00:1b:5a
         MTU: 1500
     Address: 185.107.213.51
              2a00:f10:121:b00:1c00:85ff:fe00:1b5a
              fe80::1c00:85ff:fe00:1b5a
     Gateway: 185.107.213.3 (ICANN, IANA Department)
              fe80::d6ca:6dff:fe74:870d (Routerboard.com)
         DNS: 93.180.70.22
              93.180.70.30

Ubuntu’s first point release for Bionic Beaver (18.04 LTS) has been released.

Now this release has had some time to mature, it’s time to have a look.
First thing that you notice is that /etc/network/interfaces is no longer in use and we have netplan.io .

Come on Canonical, haven’t you learned from Mir?

So, if I’m to use this distro, I want to ditch netplan and use native systemd-networkd, which after all is what netplan is built onto.
So can we? Yes, we can.

With a simple setup where you only have one or more wired network cards, this is fairly straightforward.

Remove netplan:

apt remove netplan

Enable systemd-networkd

systemctl enable systemd-networkd

Add the following contents to a file called /etc/systemd/network/99-wildcard.network

[Match]
Name=en*

[Network]
DHCP=yes
IPv6AcceptRA=yes

(Of course I want IPv6 enabled)

Now reboot, and systemd-networkd is up and running:

root@1804:~# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 ens3             ether              routable    configured

2 links listed.

root@1804:~# networkctl status ens3
● 2: ens3
       Link File: /lib/systemd/network/99-default.link
    Network File: /etc/systemd/network/99-wildcard.network
            Type: ether
           State: routable (configured)
            Path: pci-0000:00:03.0
          Driver: virtio_net
          Vendor: Red Hat, Inc.
           Model: Virtio network device
      HW Address: 1e:00:6f:00:17:ac
         Address: 185.66.250.47
                  2a00:f10:121:a00:1c00:6fff:fe00:17ac
                  fe80::1c00:6fff:fe00:17ac
         Gateway: 185.66.250.3 (ICANN, IANA Department)
                  fe80::d6ca:6dff:fe74:870d (Routerboard.com)
             DNS: 93.180.70.22
                  93.180.70.30
                  2a00:f10:ff04:253::53
                  2a00:f10:ff04:153::53
  Search Domains: zone01.ams02.cldin.net
    Connected To: n06.c01.ap01.zone01.ams02.cldin.net on port fe:00:6f:00:17:ac (vnet37)

A few months ago, I came across PassBolt.

PassBolt

Currently at work we’re using TeamPass, but we feel
it’s not that usable.
PassBolt uses Open Source technology such as GnuPG, CakePHP, OpenSSL and other software.

Currently, the demo is rather basic as a lot of functionality is still to be built.
But even when that’s the case, the interface looks clean and fresh ; the experience smooth.
Have a look at their roadmap, and see why this really could become a gem!
https://www.passbolt.com/roadmap

I use my smartphone regularly to login on servers of mine with SSH. This works really well, but obviously you have less width than with a normal computer screen.

Some tools, like w, will not work with this limited width and give you a message like 

w: 60 column window is too narrow

Being a sysadmin, I don’t like to be told something just can’t work. So, a little trick to make it work:

 w | cat

This will have w output it’s text through stdout to cat and cat just outputs the text to the console, no questions asked.

Yesterday I have installed Ubuntu 16.04 LTS on my laptop to try it out.
While overall the experience is quite good, I found that notifications were broken for apps like slack and atom.
Following the issue found on github, I have found the following workaround to work for me:

Add the following line to /etc/environment ( edit as root ) and reboot ( or logout and login )

ELECTRON_USE_UBUNTU_NOTIFIER=1

Here’s how I managed to install the memcached module for php 7.0 running on a server running CentOS with DirectAdmin.

Install the remi repo and install the latest version of memcached and libmemcached

yum -y install http://rpms.remirepo.net/enterprise/remi-release-$(awk -F 'release ' '{print $2}' /etc/system-release| head -c 1).rpm
yum --enablerepo remi install memcached libmemcached-last libmemcached-last-devel git

Now configure and install the memcached extension:

cd ~
git clone https://github.com/php-memcached-dev/php-memcached.git
cd php-memcached
git checkout php7
phpize
./configure --disable-memcached-sasl --with-php-config=/usr/local/php70/bin/php-config
make
sudo make install

Add the extension to the php config:

echo "extension=memcached.so" | sudo tee /usr/local/php70/lib/php.conf.d/60-memcached.ini

And finally, restart php-fpm:

service php-fpm70 restart

Or if you run mod_php:

service httpd restart

I have a system running several docker containers with httpd, mariadb and redis. The httpd containers are running with names like ‘site1tld_httpd_1’.
Each httpd container writes the access_log and error_log to a host volume in /srv/volumes/<vhost>/httpd/logs . Just easy to have them accessible.

For these containers, I needed to run logrotate to keep those files from getting too large. Of course, these docker containers just run httpd as pid 1 and do not have logrotate installed.
The solution for me was to have logrotate on the host rotate every log, and then reload every docker container running httpd. A httpd reload is just done by sending a kill signal 1 to the httpd process.

This is done as follows ( a file in /etc/logrotate.d ):

/srv/volumes/*/httpd/logs/*log {
  daily
  rotate 7
  create
  compress
  delaycompress
  nodateext
  sharedscripts
  postrotate
    docker ps -f name=httpd -q | xargs docker kill -s 1 >/dev/null 2>&1
  endscript 
}

So the postrotate section is simple but effective: give me the ids of docker containers with “httpd” in the name and feed those ids to docker kill and use signal 1 to notify each process.