Files
stechuhr3/timeclock.service

136 lines
2.7 KiB
Desktop File

# Systemd Service für TimeClock v3 Backend
# Installation:
# sudo cp timeclock.service /etc/systemd/system/
# sudo systemctl daemon-reload
# sudo systemctl enable timeclock
# sudo systemctl start timeclock
#
# Status prüfen:
# sudo systemctl status timeclock
#
# Logs ansehen:
# sudo journalctl -u timeclock -f
[Unit]
Description=TimeClock v3 Backend API
Documentation=https://github.com/yourusername/TimeClock
After=network.target mysql.service mariadb.service
Wants=mysql.service
[Service]
# Service-Typ
Type=simple
# User und Group
User=www-data
Group=www-data
# Arbeitsverzeichnis
WorkingDirectory=/var/www/timeclock/backend
# Umgebungsvariablen
Environment=NODE_ENV=production
Environment=PATH=/usr/bin:/usr/local/bin
EnvironmentFile=/var/www/timeclock/backend/.env
# Start-Befehl
ExecStart=/usr/bin/node src/index.js
# Restart-Policy
Restart=always
RestartSec=10
# Timeouts
TimeoutStartSec=30s
TimeoutStopSec=30s
# Logging
StandardOutput=append:/var/log/timeclock/backend.log
StandardError=append:/var/log/timeclock/backend.error.log
SyslogIdentifier=timeclock
# Process Management
KillMode=mixed
KillSignal=SIGTERM
# Limits
LimitNOFILE=65536
LimitNPROC=4096
# =================================================================
# Sicherheits-Härtung (Security Hardening)
# =================================================================
# Verhindert Privilege Escalation
NoNewPrivileges=true
# Privates /tmp Verzeichnis
PrivateTmp=true
# Schützt bestimmte Kernel-Variablen
ProtectKernelTunables=true
# Verhindert Laden von Kernel-Modulen
ProtectKernelModules=true
# Schützt Kernel-Logs
ProtectKernelLogs=true
# Verhindert Zugriff auf /proc
ProtectProc=invisible
# Verhindert Zugriff auf /sys
ProtectControlGroups=true
# Schützt Hostnamen
ProtectHostname=true
# Macht /home, /root und /run/user read-only
ProtectHome=true
# Macht das System teilweise read-only
ProtectSystem=strict
# Erlaubt Schreibzugriff auf bestimmte Verzeichnisse
ReadWritePaths=/var/www/timeclock/backend
ReadWritePaths=/var/log/timeclock
# Verhindert Zugriff auf andere Benutzer
PrivateUsers=false
# Verhindert neue Devices
PrivateDevices=true
# Verhindert Zugriff auf Clock
ProtectClock=true
# Verhindert Realtime-Scheduling
RestrictRealtime=true
# Filtert gefährliche System-Calls
SystemCallFilter=@system-service
SystemCallFilter=~@privileged @resources @obsolete
# Verhindert Nutzung bestimmter Namespaces
RestrictNamespaces=true
# Verhindert SUID/SGID
RestrictSUIDSGID=true
# Entfernt Capabilities
CapabilityBoundingSet=
AmbientCapabilities=
# Address Space Layout Randomization
LockPersonality=true
# Verhindert Zugriff auf andere User-Sessions
RemoveIPC=true
# Umask setzen
UMask=0077
[Install]
WantedBy=multi-user.target