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>
39 lines
989 B
Caddyfile
39 lines
989 B
Caddyfile
# Caddy - Beispiel für die Timer App
|
|
#
|
|
# Caddy holt und erneuert das Zertifikat selbst. Bei dieser Variante
|
|
# in der .env COOKIE_SECURE=true und HOST=127.0.0.1 setzen.
|
|
|
|
timer.firma.example {
|
|
header {
|
|
Strict-Transport-Security "max-age=31536000; includeSubDomains"
|
|
X-Frame-Options "SAMEORIGIN"
|
|
X-Content-Type-Options "nosniff"
|
|
Referrer-Policy "no-referrer"
|
|
}
|
|
|
|
reverse_proxy 127.0.0.1:3003 {
|
|
# /health antwortet ohne Anmeldung
|
|
health_uri /health
|
|
health_interval 30s
|
|
health_timeout 10s
|
|
}
|
|
|
|
log {
|
|
output file /var/log/caddy/timer.log {
|
|
roll_size 100mb
|
|
roll_keep 5
|
|
}
|
|
}
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Variante: nur im internen Netz, ohne öffentliches Zertifikat.
|
|
# Caddy stellt dann ein selbstsigniertes Zertifikat aus (Browser-Warnung beim
|
|
# ersten Aufruf). COOKIE_SECURE darf hier true bleiben, weil HTTPS gesprochen
|
|
# wird.
|
|
#
|
|
# https://timer.intern:443 {
|
|
# tls internal
|
|
# reverse_proxy 127.0.0.1:3003
|
|
# }
|