fix(systemd): wait for network connectivity before starting services (#335)

Change After=network.target → After=network-online.target + Wants=network-
online.target in both service templates and install_web_service.sh.

network.target only guarantees NetworkManager has started — it does NOT
mean the device has an active internet connection. On boot the LED matrix
service was starting within seconds of the network interface appearing,
before WiFi association and DHCP completed, causing every first-update API
call to fail with "Network is unreachable" or DNS resolution errors.

network-online.target waits for a confirmed route before the service fires.
On Raspberry Pi OS this is provided by NetworkManager-wait-online. The
tradeoff is a few extra seconds at boot, acceptable for a display device.

Observed on devpi: service started at 14:48:03, all API calls (weather,
FlightRadar24, local ADS-B) failed at 14:48:07 with network errors, then
the service restarted cleanly at 14:50:40 once WiFi was established.

Co-authored-by: Chuck <chuck@example.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Chuck
2026-05-15 15:47:35 -04:00
committed by GitHub
parent 054ad78d7b
commit d941c91f24
3 changed files with 6 additions and 3 deletions

View File

@@ -31,7 +31,8 @@ echo "Generating service file with dynamic paths..."
WEB_SERVICE_FILE_CONTENT=$(cat <<EOF
[Unit]
Description=LED Matrix Web Interface Service
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=simple

View File

@@ -7,7 +7,8 @@
[Unit]
Description=LED Matrix Web Interface Service
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=simple

View File

@@ -1,6 +1,7 @@
[Unit]
Description=LED Matrix Display Service
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
Type=simple