# ============================================================================= # 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: HIER MUSST DU DICH ENTSCHEIDEN ------------------------- # # Auf welcher Adresse soll die Anwendung erreichbar sein? Das haengt davon # ab, WO dein Reverse Proxy laeuft. Waehl genau eine Zeile aus: # # Proxy auf DEMSELBEN Server # APP_BIND=127.0.0.1 # Von aussen kommt niemand heran, nur der Proxy nebenan. Sicherste # Variante - aber ein Proxy auf einem anderen Rechner erreicht die # Anwendung damit NICHT. # # Proxy auf einem ANDEREN Server, privates Netz oder WireGuard vorhanden # APP_BIND=10.0.0.5 <- die Adresse DIESES Servers in dem Netz # Erste Wahl, wenn der Proxy woanders steht. # # Proxy auf einem ANDEREN Server, kein privates Netz # APP_BIND=0.0.0.0 # Nur zusammen mit einer Firewallregel, die den Port ausschliesslich # fuer die IP des Proxy-Servers oeffnet: # ufw allow from to any port 3000 proto tcp # ufw deny 3000/tcp # # Zwischen Proxy und Anwendung laeuft unverschluesseltes HTTP - die # Anwendung beendet kein TLS. Dieser Weg darf nie durchs offene Netz gehen. # Einzelheiten: docs/INSTALLATION.md, Schritt 7. APP_BIND=127.0.0.1 APP_PORT=3000 # Die Konsole des mitgelieferten Objektspeichers. Nur noetig, wenn auf dem # Server schon etwas auf 9001 laeuft. MINIO_KONSOLE_PORT=9001 # --- 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