Stand der laufenden Anwendung von 192.168.1.5:/opt/timer-app (systemd-Dienst timer-app, Port 3003). Zeiterfassung mit Kostenberechnung: Node/Express, SQLite, Anmeldung ausschliesslich ueber Authentik (OIDC, PKCE, RP-Logout) - der frueher vorhandene Passwort-Login ist entfernt. Nicht im Repo, bewusst: - backend/.env und die .env-Sicherung: enthalten Session-Secret und die Authentik-Zugangsdaten. Vorlage ist backend/.env.example. - data/: die Datenbank mit den echten Zeiterfassungen. - node_modules/. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
46 lines
1.1 KiB
Desktop File
46 lines
1.1 KiB
Desktop File
[Unit]
|
|
Description=Timer App - Zeiterfassung
|
|
Documentation=file:///opt/timer-app/DEPLOY.md
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
|
|
# --- Anpassen ---------------------------------------------------------------
|
|
WorkingDirectory=/opt/timer-app/backend
|
|
ExecStart=/usr/bin/node server.js
|
|
User=timerapp
|
|
Group=timerapp
|
|
# ----------------------------------------------------------------------------
|
|
|
|
Restart=always
|
|
RestartSec=10
|
|
|
|
Environment=NODE_ENV=production
|
|
# Zeitzone bestimmt die Tagesgrenzen im Historien-Filter
|
|
Environment=TZ=Europe/Berlin
|
|
|
|
# Ausgabe landet im Journal: journalctl -u timer-app -f
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
|
|
# --- Härtung ----------------------------------------------------------------
|
|
NoNewPrivileges=true
|
|
PrivateTmp=true
|
|
ProtectSystem=strict
|
|
ProtectHome=true
|
|
ProtectKernelTunables=true
|
|
ProtectKernelModules=true
|
|
ProtectControlGroups=true
|
|
RestrictSUIDSGID=true
|
|
RestrictNamespaces=true
|
|
LockPersonality=true
|
|
|
|
# Einziger Pfad mit Schreibrecht: das Datenverzeichnis
|
|
ReadWritePaths=/opt/timer-app/data
|
|
|
|
LimitNOFILE=4096
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|