[Unit] Description=ninlight recovery station (HTTP image server) # Ohne den Zugangspunkt hat der Server beim Start keine Adresse zum Binden. # Bewusst kein BindsTo=NetworkManager.service: ein dadurch ausgeloester Stop # gilt fuer systemd als sauber und wuerde von KEINER Restart=-Politik erneut # gestartet - ein NetworkManager-Neustart wuerde den Server dann still und # dauerhaft mitreissen. Stattdessen nur Start-Reihenfolge vorgeben und den # Prozess bei jedem Absturz (z.B. Bind-Fehler nach einem NM-Neustart) per # Restart=always in kurzen Abstaenden neu versuchen lassen. After=network.target NetworkManager.service # Steht der Zugangspunkt nicht, kann server.py 192.168.8.1 nicht binden und # stirbt sofort; Restart=always versucht es alle RestartSec=2 erneut. Damit # das nicht endlos das Journal flutet, sondern nach kurzer Zeit ehrlich # aufgibt (und ninlight-station dann mit einer klaren Fehlermeldung reagieren # kann statt in einer stillen Neustartschleife zu haengen), hier explizit # gedeckelt statt sich auf systemds Vorgabewerte zu verlassen. StartLimitIntervalSec=30 StartLimitBurst=5 [Service] Type=simple EnvironmentFile=/etc/ninlight-station.conf ExecStart=/usr/bin/python3 /opt/ninlight-station/server.py --image-dir ${IMAGE_DIR} --mode-file /run/ninlight-station/mode Restart=always RestartSec=2 # Laeuft als root: Port 80 und - fuer 4c - die DHCP-Leases in # /var/lib/NetworkManager (Verzeichnis 0700 root:root) sind sonst nicht erreichbar. # Gegengewicht: NoNewPrivileges=yes ProtectSystem=strict ProtectHome=yes PrivateTmp=yes RuntimeDirectory=ninlight-station ReadWritePaths=/run/ninlight-station RestrictAddressFamilies=AF_INET AF_UNIX MemoryMax=128M [Install] WantedBy=multi-user.target