# ============================================================================= # Betreuungs-Cockpit - Beispielkonfiguration # Kopiere diese Datei nach .env und fuelle die Werte aus. # Alle Geheimnisse erzeugst du mit: npm run schluessel # ============================================================================= # --- Datenbank -------------------------------------------------------------- # Lokal (Docker Compose): Host ist der Servicename "db". POSTGRES_USER=cockpit POSTGRES_PASSWORD=bitte-aendern POSTGRES_DB=betreuungs_cockpit DATABASE_URL="postgresql://cockpit:bitte-aendern@localhost:5432/betreuungs_cockpit?schema=public" # --- Auth.js ---------------------------------------------------------------- # 32 zufaellige Bytes, base64. Erzeugen: npm run schluessel AUTH_SECRET= # Oeffentliche Basis-URL der Anwendung (ohne abschliessenden Slash). AUTH_URL=http://localhost:3000 # Hinter einem Reverse Proxy auf true setzen. AUTH_TRUST_HOST=true # --- Erreichbarkeit --------------------------------------------------------- # Auf welcher Adresse und welchem Port horcht die Anwendung? # # Proxy auf DEMSELBEN Server: 127.0.0.1 (Standard, nichts zu tun) # Proxy auf einem ANDEREN: die Adresse des privaten Netzes bzw. des # WireGuard-Tunnels, z.B. 10.0.0.5 # # 0.0.0.0 nur, wenn eine Firewall den Port ausschliesslich fuer die IP des # Proxy-Servers oeffnet. Die Anwendung beendet kein TLS. APP_BIND=127.0.0.1 APP_PORT=3000 # --- Anwendungsseitige Feldverschluesselung --------------------------------- # AES-256-GCM. 32 Bytes, base64. OHNE DIESEN SCHLUESSEL SIND DIE VERSCHLUESSELTEN # FELDER UNWIEDERBRINGLICH VERLOREN - unbedingt getrennt vom Backup sichern! # Schluesselrotation: neuen Schluessel als ENC_KEY_V2 ergaenzen und # ENC_KEY_AKTIV=2 setzen. Alte Schluessel bleiben zum Entschluesseln stehen. ENC_KEY_V1= ENC_KEY_AKTIV=1 # Separater Schluessel fuer Blind-Indizes (HMAC-SHA256). # Erlaubt die Suche nach z.B. einer IBAN, ohne sie im Klartext zu speichern. INDEX_KEY= # --- Sicherheit ------------------------------------------------------------- # Leerlauf bis zur automatischen Abmeldung (Sekunden). 30 Minuten. SESSION_MAX_AGE=1800 # Wie lange eine erneute Anmeldung fuer sensible Aktionen gilt (Sekunden). REAUTH_MAX_AGE=300 # Login-Sperre: max. Fehlversuche pro Zeitfenster (Sekunden). LOGIN_MAX_VERSUCHE=5 LOGIN_FENSTER_SEKUNDEN=900 LOGIN_SPERRE_SEKUNDEN=900 # --- Objektspeicher (S3-kompatibel, EU!) ------------------------------------ # Wird ab Etappe 3 verwendet. Beispiel: Hetzner Object Storage, Falkenstein. # ACHTUNG: Mit dem Anbieter muss ein AV-Vertrag nach Art. 28 DSGVO bestehen. S3_ENDPOINT=https://fsn1.your-objectstorage.com S3_REGION=eu-central S3_BUCKET=betreuungs-cockpit S3_ACCESS_KEY_ID= S3_SECRET_ACCESS_KEY= # --- E-Mail-Erinnerungen (optional, ab Etappe 2) ---------------------------- SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASSWORD= SMTP_FROM="Betreuungs-Cockpit " # --- Erstanmeldung ---------------------------------------------------------- # Wird nur vom Seed benutzt, um den ersten Betreuer-Zugang anzulegen. SEED_ADMIN_EMAIL=fw@wildeflorian.de SEED_ADMIN_PASSWORT=bitte-beim-ersten-login-aendern