[Unit] Description=EdgeGuard Management API Documentation=https://git.netcell-it.de/projekte/edgeguard-native After=network-online.target postgresql.service keydb-server.service Wants=network-online.target keydb-server.service Requires=postgresql.service [Service] Type=simple User=edgeguard Group=edgeguard ExecStart=/usr/bin/edgeguard-api Restart=on-failure RestartSec=5 # Hardening — API needs to shell out to `sudo systemctl reload haproxy/squid` # after writing configs. Sandboxing stays strict around fs/net. NoNewPrivileges=false ProtectSystem=strict ProtectHome=true ProtectKernelTunables=true ProtectKernelModules=true ProtectControlGroups=true PrivateTmp=true PrivateDevices=true RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 AF_NETLINK SystemCallFilter=@system-service # /var/lib/apt /var/cache/apt /etc/apt/apt.conf.d: damit `sudo -n apt-get # update -qq` aus dem Update-Banner-Handler überhaupt in die Apt-Lists # schreiben darf. Ohne diese Pfade läuft das Kommando still durch # (exit 0) und der Cache bleibt veraltet — Banner zeigt nie ein Update. # Befund 2026-05-14: trotz 30s-Poll blieb Candidate=Installed. mail- # gateway hat dasselbe Set unter nmg-api.service. # # /var/backups/edgeguard: Backup-Service schreibt tar.gz Snapshots # hierhin. Ohne Pfad in ReadWritePaths: read-only filesystem → EROFS. # Befund 2026-05-15: "create eg-…tar.gz: read-only file system". # # /etc/chrony/conf.d /etc/unbound/unbound.conf.d /etc/wireguard: # chrony/unbound/wg-Renderer schreiben edgeguard.conf bzw. .conf # direkt in den distro-Conf-Dir (chrony+unbound) bzw. legen Symlinks # nach /etc/edgeguard/wireguard (wg). Ohne diese Pfade scheitern alle # UI-Mutationen an DNS/NTP/WireGuard-Settings still mit EROFS. ReadWritePaths=/etc/edgeguard /var/lib/edgeguard /var/log/edgeguard /var/backups/edgeguard /var/lib/apt /var/cache/apt /etc/apt/apt.conf.d /etc/chrony/conf.d /etc/unbound/unbound.conf.d /etc/wireguard /var/lib/crowdsec [Install] WantedBy=multi-user.target