Files
Raffael SheikhandClaude Opus 4.8 7285ed9cae Backup-Sidecar: täglicher pg_dump scharf geschaltet
Das dokumentierte Backup lief real nie (stock postgres-Image ohne Cron,
backup.sh nirgends eingebunden) -> bei Volume-/Disk-Verlust drohte Totalverlust.

- Neuer service "backup" (docker-compose.yml): postgres:16-alpine als Sidecar,
  taeglicher pg_dump um BACKUP_HOUR (Default 03:00 Europe/Berlin)
- backup-loop.sh: abhaengigkeitsfreier Tages-Scheduler (umgeht busybox-cron-
  Environment-Eigenheiten)
- backup.sh korrigiert: laeuft remote gegen PGHOST mit PGPASSWORD; -Fc statt
  "-Fc | gzip" (war doppelt komprimiert und als .sql.gz nicht restore-bar) -> .dump
- BACKUP_HOUR/BACKUP_RETENTION_DAYS konfigurierbar (.env.example)
- operations.md: Backup-/Restore-Anleitung an Ist-Zustand angepasst

Verifiziert: pg_dump erstellt + pg_restore in frische DB, Daten intakt.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 11:09:38 +02:00

39 lines
1.3 KiB
Bash

# --- Postgres ---
DATABASE_URL=postgres://cockpit:cockpit_dev@localhost:55432/cockpit
# --- Authentik OIDC (Story 1.3) ---
# Anlage als „Provider" und „Application" in Authentik unter https://auth.tool-ctrl.de
# → siehe docs/operations.md (kommt in Story 1.7)
AUTHENTIK_ISSUER=https://auth.tool-ctrl.de/application/o/cockpit/
AUTHENTIK_CLIENT_ID=
AUTHENTIK_CLIENT_SECRET=
AUTHENTIK_REDIRECT_URI=http://localhost:3000/api/auth/callback
# --- Session ---
SESSION_COOKIE_NAME=cockpit_session
SESSION_TTL_HOURS=24
SESSION_COOKIE_SECRET=please-change-me-in-prod-at-least-32-chars
# --- Cron Bearer (Story 2.6 + 5.1 + 6.3) ---
CRON_BEARER_TOKEN=please-change-me-in-prod
# --- Backup-Sidecar (Story 6.3, nur Prod) ---
# Täglicher pg_dump im service "backup". Beide optional (Defaults: 03 / 14).
# BACKUP_HOUR=03
# BACKUP_RETENTION_DAYS=14
# --- App ---
NODE_ENV=development
LOG_LEVEL=info
PORT=3000
PUBLIC_BASE_URL=http://localhost:5173
# --- Kimai-Sync (optional, ENTWICKLUN-9) ---
# Nur wenn ALLE vier gesetzt sind, synct ebw beim Check-In/Out nach Kimai
# (sonst No-Op). API-Token in Kimai unter Benutzerprofil → API-Zugriff.
# PROJECT/ACTIVITY = numerische IDs des Default-Projekts/-Tätigkeit in Kimai.
# KIMAI_BASE_URL=https://kimai.tool-ctrl.de
# KIMAI_API_TOKEN=
# KIMAI_PROJECT_ID=
# KIMAI_ACTIVITY_ID=