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>
84 lines
3.1 KiB
Bash
84 lines
3.1 KiB
Bash
# ---------------------------------------------------------------------------
|
||
# 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
|