Arch Linux is great, change is great, except when you don’t know what has changed and why.
Case in point, my home server is up 100+ days, I update and reboot. My web access is gone and SSH doesn’t work either. When I regained physical access, I see both services are failed as they could not bind to the network card, that’s funny because samba, ftp and NFS all managed fine. Why?
As I’m running systemd I was able to figure out the following with a few ‘systemctl status something.service’ commands. sshd and apache come up before the network card, they retry but fail. 5 seconds later the network is up, so when I restart the services manually all works as expected.
Fixing it was a bit more messy. Both systemd scripts are small and simple both specify ‘After=network.target’ that target doesn’t give away much. I’m using NetworkManager so I changed both to ‘After=NetworkManager.service’.
Result, the services http/SSH start later but still too soon. Appears NetworkManager has started but not completed its job yet.
Try again:
‘After=NetworkManager-wait-online.service’
This “service” starts when network manager completes its startup, so telling SSH and http that they start after this will ensure the network is up.
Fixed! until the next update 🙂