[Unit] Description=Linux Patch API - Secure Remote Package Management Documentation=man:linux-patch-api(8) After=network-online.target Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/linux-patch-api --config /etc/linux_patch_api/config.yaml Restart=on-failure RestartSec=5s TimeoutStopSec=30s # Process management RuntimeDirectory=linux-patch-api RuntimeDirectoryMode=0755 # Security hardening NoNewPrivileges=true ProtectSystem=strict ProtectHome=true ReadWritePaths=/var/lib/linux_patch_api /var/log/linux_patch_api PrivateTmp=true PrivateDevices=true ProtectHostname=true ProtectClock=true ProtectKernelTunables=true ProtectKernelModules=true ProtectKernelLogs=true RestrictNamespaces=true LockPersonality=true MemoryDenyWriteExecute=false RestrictRealtime=true RestrictSUIDSGID=true RemoveIPC=true # System call filtering (whitelist approach) SystemCallFilter=@system-service SystemCallErrorNumber=EPERM # Environment Environment="RUST_BACKTRACE=1" Environment="RUST_LOG=info" # Logging StandardOutput=journal StandardError=journal SyslogIdentifier=linux-patch-api SyslogFacility=daemon SyslogLevel=info # Resource limits LimitNOFILE=65536 LimitNPROC=4096 [Install] WantedBy=multi-user.target