136 lines
2.7 KiB
Desktop File
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
|
|
|