# --------------------------------------------------------------------------- # 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: # /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: # /api/kalender/rueckleitung/graph # /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= # --- Benachrichtigungen ---------------------------------------------------- # Beides ist freiwillig. Fehlt es, laeuft der Planer ohne Benachrichtigungen # weiter und sagt es in den Einstellungen. # Web-Push. Schluesselpaar einmalig erzeugen mit: # npx web-push generate-vapid-keys # Der oeffentliche Schluessel geht an den Browser, der private bleibt hier. # Wird das Paar getauscht, muessen sich alle Geraete neu anmelden. VAPID_OEFFENTLICH= VAPID_PRIVAT= # Kontakt fuer den Push-Dienst, als mailto: oder https:-Adresse. VAPID_KONTAKT= # E-Mail. Push braucht SMTP nicht und umgekehrt. SMTP_HOST= SMTP_PORT=587 SMTP_BENUTZER= SMTP_PASSWORT= # Absender, z. B. "Planer ". SMTP_ABSENDER= # true bei Port 465 (SMTPS), false bei 587 mit STARTTLS. SMTP_TLS=false # --- Integrationen --------------------------------------------------------- # Alles freiwillig. Was fehlt, erscheint unter "Integrationen" als nicht # eingerichtet; der Rest laeuft weiter. # Welche Integration eine Instanz ueberhaupt darf, entscheidet INSTANZ: # Zammad und Wartungsplaner nur "firma", Telegram nur "daheim". # Zammad (nur firma). Token in Zammad unter Profil > Token-Zugriff anlegen; # er sieht genau das, was der zugehoerige Benutzer sehen darf. ZAMMAD_URL= ZAMMAD_TOKEN= # Suchausdruck in Zammads Syntax. Was darauf passt, wird zur Aufgabe. ZAMMAD_ABFRAGE=owner_id:me AND (state.name:new OR state.name:open) # Telegram (nur daheim). Bot bei @BotFather anlegen, Token hier eintragen. # Welche Chats mitreden duerfen, wird in der Anwendung gekoppelt. TELEGRAM_TOKEN= # Spiegel: firma sendet, daheim empfaengt. Dasselbe Geheimnis auf beiden # Seiten, mindestens 32 Zeichen: openssl rand -base64 32 SPIEGEL_GEHEIMNIS= # Nur auf der sendenden Seite (firma): die Adresse der anderen Instanz. SPIEGEL_ZIEL= # --- 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