Files
planer/.env.example
Florian WildeandClaude Opus 5 a8b2ff0235 docs: Handbuchseite und Einrichtung der Kalenderanbieter
Die Handbuchseite erklärt, was der Planer liest und was ausdrücklich nicht,
warum alle Kalender gegen jeden Bereich zählen und was beim Trennen mit den
Terminen passiert.

Die README bekommt eine Schritt-für-Schritt-Anleitung für Entra ID und die
Google Cloud Console — mit den genauen Rückleit-URIs und Berechtigungen.
Dazu der Hinweis, dass ein Google-Projekt im Status "Test" die
Aktualisierungstoken nach sieben Tagen verfallen lässt; das kostet sonst
einen halben Abend Fehlersuche.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 18:12:05 +02:00

84 lines
3.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ---------------------------------------------------------------------------
# Planer – Beispielkonfiguration
# Kopieren nach .env und ausfuellen. .env gehoert NIE ins Git.
# ---------------------------------------------------------------------------
# Welche Instanz laeuft hier? Steuert Provider, Integrationen und Routen.
# Erlaubt: firma | daheim
INSTANZ=daheim
# Oeffentliche Adresse der Anwendung, ohne abschliessenden Schraegstrich.
APP_URL=http://localhost:3000
# --- Datenbank -------------------------------------------------------------
# Muss zu den POSTGRES_*-Werten unten passen, wenn Docker Compose benutzt wird.
DATABASE_URL=postgresql://planer:bitte-aendern@localhost:5432/planer?schema=public
# Nur fuer docker compose: Zugangsdaten des Postgres-Containers.
POSTGRES_USER=planer
POSTGRES_PASSWORD=bitte-aendern
POSTGRES_DB=planer
# Nach aussen veroeffentlichte Ports. Aendern, wenn 5432 oder 3000 auf dem
# Rechner schon belegt sind; DATABASE_URL muss dann denselben Port nennen.
POSTGRES_PORT=5432
APP_PORT=3000
# --- Anmeldung -------------------------------------------------------------
# Signiert Sitzungen und Tokens. Erzeugen mit:
# openssl rand -base64 32
AUTH_SECRET=
# Hinter einem Reverse Proxy auf true setzen, damit Auth.js dem Host vertraut.
AUTH_TRUST_HOST=true
# Anmeldung per E-Mail und Passwort erlauben. In der Firma ueblicherweise
# false, damit nur ueber OIDC angemeldet wird.
ANMELDUNG_PASSWORT=true
# Erstes Verwaltungskonto, wird vom Seed angelegt. Ohne ADMIN_PASSWORT
# entsteht ein Konto ohne Passwort, das sich nur per OIDC oder Passkey
# anmelden kann. Nach der Einrichtung dürfen beide Werte wieder raus.
ADMIN_EMAIL=
ADMIN_PASSWORT=
# --- OIDC ------------------------------------------------------------------
# firma = Entra ID, daheim = authentik. Leer lassen schaltet OIDC ab.
# Der Rueckleit-URI beim Anbieter lautet:
# <APP_URL>/api/auth/callback/oidc
OIDC_NAME=
OIDC_ISSUER=
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
# --- Passkeys (WebAuthn) ---------------------------------------------------
# RP_ID ist die nackte Domain ohne Schema und Port, z. B. planer.example.de.
# Lokal ist "localhost" richtig.
WEBAUTHN_RP_ID=localhost
WEBAUTHN_RP_NAME=Planer
# Muss exakt der Herkunft im Browser entsprechen, inklusive Port.
WEBAUTHN_ORIGIN=http://localhost:3000
# --- Kalenderanbieter ------------------------------------------------------
# Graph gibt es in beiden Instanzen, Google nur daheim. Ein Anbieter erscheint
# erst, wenn Kennung UND Geheimnis gesetzt sind.
# Einrichtung siehe README, Abschnitt "Kalenderanbieter einrichten".
# Rueckleit-URIs:
# <APP_URL>/api/kalender/rueckleitung/graph
# <APP_URL>/api/kalender/rueckleitung/google
GRAPH_CLIENT_ID=
GRAPH_CLIENT_SECRET=
# Tenant-ID, oder "organizations" fuer jeden Arbeitsplatz-Tenant.
GRAPH_TENANT_ID=organizations
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# --- Sonstiges -------------------------------------------------------------
# Zeitzone fuer Anzeigen und Tagesgrenzen.
TZ=Europe/Berlin
# Nur fuer die Screenshot-Instanz. Schaltet den Demo-Kalenderprovider frei
# und darf in echten Umgebungen niemals true sein.
DEMO_MODUS=false