emergency-access.service 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. [Unit]
  2. Description=Emergency Access Key Server
  3. After=network.target
  4. Wants=network.target
  5. [Service]
  6. Type=simple
  7. User=emergency-access
  8. Group=emergency-access
  9. WorkingDirectory=/opt/emergency-access
  10. Environment=EMERGENCY_CONFIG=/etc/emergency-access/config.json
  11. Environment=PYTHONPATH=/opt/emergency-access
  12. Environment=NTFY_CONFIG=/etc/emergency-access/ntfy.yml
  13. ExecStart=/opt/emergency-access/venv/bin/python /opt/emergency-access/main.py
  14. ExecReload=/bin/kill -HUP $MAINPID
  15. Restart=always
  16. RestartSec=5
  17. StartLimitIntervalSec=300
  18. StartLimitBurst=5
  19. StandardOutput=journal
  20. StandardError=journal
  21. SyslogIdentifier=emergency-access
  22. # Security settings
  23. NoNewPrivileges=true
  24. ProtectSystem=strict
  25. ProtectHome=true
  26. ReadWritePaths=/var/log
  27. ReadOnlyPaths=/etc/emergency-access
  28. PrivateTmp=true
  29. ProtectKernelTunables=true
  30. ProtectKernelModules=true
  31. ProtectControlGroups=true
  32. RestrictRealtime=true
  33. RestrictNamespaces=true
  34. LockPersonality=true
  35. MemoryDenyWriteExecute=true
  36. RestrictSUIDSGID=true
  37. # Monitoring and health
  38. WatchdogSec=30
  39. NotifyAccess=main
  40. KillMode=mixed
  41. TimeoutStopSec=10
  42. # Network restrictions - allow localhost only (Caddy reverse proxy)
  43. IPAddressDeny=any
  44. IPAddressAllow=localhost
  45. IPAddressAllow=127.0.0.0/8
  46. [Install]
  47. WantedBy=multi-user.target