# Alle Umgebungsvariablen

Jede Umgebungsvariable von Flowplan in einer Tabelle, von A bis Z – mit Standardwert, der Bedeutung in einem Satz und dem Abschnitt, der sie genau beschreibt.

Die Variablen werden beim Start des Containers gelesen, etwa aus der `.env`-Datei neben der `compose.yaml` oder den Umgebungsvariablen in Coolify ([Installation](/installation)). Viele Werte lassen sich auch in der **Administration** setzen; was dort gespeichert ist, hat Vorrang ([In der Oberfläche](/configuration#in-der-oberflaeche)).

Die Liste wird aus den Seiten dieser Dokumentation zusammengestellt; ein Test prüft gegen den Code von Flowplan, dass keine Variable fehlt. Das Feld über der Tabelle filtert sie, auch nach Teilen wie `S3_` oder `OIDC`.

| Variable | Standard | Bedeutung | Beschrieben in |
| --- | --- | --- | --- |
| `APP_URL` | – | Öffentliche Adresse genau so, wie sie im Browser steht – Schema, Host, ggf. Port, ohne Schrägstrich am Ende. | [Konfiguration › Pflicht](/configuration#pflicht) |
| `DATABASE_SESSION_URL` | `DATABASE_URL` | Direkte Verbindung (oder Pool im Modus `session`) für Benachrichtigungen, die Leitung im Cluster und `pg_dump`/`pg_restore`, wenn `DATABASE_URL` auf PgBouncer im Modus `transaction` zeigt. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `DATABASE_URL` | *leer* | `postgres://…` schaltet auf PostgreSQL um. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `DRAWIO_URL` | `https://embed.diagrams.net` | Adresse des draw.io-Editors für den Block `/drawio`, z. B. ein eigener Container `jgraph/drawio`. | [Konfiguration: Speicher, Datenbank und Sicherheit › Rechtliches und Oberfläche](/configuration-storage#rechtliches-und-oberflaeche) |
| `EXPORT_GIT_AUTHOR` | – | Autor der Commits. | [Markdown-Export und Git › In ein Git-Repository übertragen](/markdown-git-export#in-ein-git-repository-uebertragen) |
| `EXPORT_GIT_BRANCH` | – | Zweig, Standard `main`. | [Markdown-Export und Git › In ein Git-Repository übertragen](/markdown-git-export#in-ein-git-repository-uebertragen) |
| `EXPORT_GIT_EMAIL` | – | Autor der Commits. | [Markdown-Export und Git › In ein Git-Repository übertragen](/markdown-git-export#in-ein-git-repository-uebertragen) |
| `EXPORT_GIT_IMPORT` | – | `true`: Änderungen, die seit dem letzten Lauf im Repository gemacht wurden, übernimmt Flowplan vor dem Export. | [Markdown-Export und Git › In ein Git-Repository übertragen](/markdown-git-export#in-ein-git-repository-uebertragen) |
| `EXPORT_GIT_TOKEN` | – | Token mit Schreibrecht auf dieses Repository. | [Markdown-Export und Git › In ein Git-Repository übertragen](/markdown-git-export#in-ein-git-repository-uebertragen) |
| `EXPORT_GIT_URL` | – | `https://`-Adresse des Repositorys, ohne Zugangsdaten. | [Markdown-Export und Git › In ein Git-Repository übertragen](/markdown-git-export#in-ein-git-repository-uebertragen) |
| `EXPORT_GIT_USERNAME` | – | Benutzername zum Token (Standard `flowplan`; GitLab: `oauth2`). | [Markdown-Export und Git › In ein Git-Repository übertragen](/markdown-git-export#in-ein-git-repository-uebertragen) |
| `FLOWPLAN_AI` | *aus* | `on` schaltet KI ein. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_ACCESS` | `everyone` | `selected`: nur freigeschaltete Personen. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_API_KEY` | *leer* | Schlüssel des Anbieters. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_API_KEY_FILE` | *leer* | Schlüssel des Anbieters. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_BASE_URL` | *je Anbieter* | Adresse des Anbieters, z. B. `https://api.mistral.ai/v1` für einen OpenAI-kompatiblen Dienst. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_DEVICE` | *an* | `off`: keine [KI auf dem Gerät](/ai#ki-auf-dem-geraet-apple) in den Apps für iPhone, iPad und Mac. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_EMBED_PER_HOUR` | `5000` | Höchstzahl eingebetteter Abschnitte pro Stunde für die Suche nach Bedeutung. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_EMBEDDING_MODEL` | *leer* | Modell für die Suche nach Bedeutung, z. B. `nomic-embed-text` (Ollama). | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_FEATURES` | *alle* | Erlaubte Funktionen, durch Komma getrennt: `write`, `summarize`, `ask`, `database`, `actions`, `whiteboard`. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_GUESTS` | *aus* | `on`: auch Gäste dürfen KI nutzen. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_MODEL` | *leer* | Modell, z. B. `llama3.1` oder `gpt-4o-mini`. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_PROVIDER` | *leer* | `ollama`, `openai` (OpenAI-kompatibel), `anthropic` oder `gemini`. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_REQUESTS_PER_HOUR` | `300` | Höchstzahl an KI-Anfragen pro Person und Stunde (zusätzlich 30 pro Minute, 3 gleichzeitig). | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_SEMANTIC_SEARCH` | *aus* | `on`: [Suche nach Bedeutung](/ask-ai#suche-nach-bedeutung-optional) mit dem Embedding-Modell. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_AI_TOKENS` | – | Umgebung: `FLOWPLAN_AI_TOKENS=off` schaltet diese Berechtigung für Tokens standardmäßig ab (bis ein Admin die KI-Einstellungen speichert). | [Besprechungen › API und MCP](/meetings#api-und-mcp) |
| `FLOWPLAN_AI_USER_PROVIDERS` | *aus* | `on`: Personen dürfen eigene Anbieter und Schlüssel hinterlegen. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `FLOWPLAN_ANONYMOUS_UPLOAD_MB` | `1024` | Wie viele MB Besucher ohne Konto pro Tag auf der ganzen Instanz hochladen dürfen – über anonyme Formulare und Bearbeiten-Links (`0` = unbegrenzt). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_BACKUP_FORMAT` | `pg_dump` | `sqlite`: geplante Sicherungen auf PostgreSQL im portablen SQLite-Format. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `FLOWPLAN_CLUSTER` | *leer* | `1`: mehrere Instanzen; verlangt `DATABASE_URL`, `REDIS_URL`, `S3_BUCKET`, `FLOWPLAN_ENCRYPTION_KEY` (oder `FLOWPLAN_SECRETS_KEY`) und `WEB_PUSH_PUBLIC_KEY`/`WEB_PUSH_PRIVATE_KEY`. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `FLOWPLAN_COUNTRY_HEADER` | *leer* | Header des Proxys mit dem Land der Anfrage (z. B. `CF-IPCountry`); schaltet die Regel „zwei Länder kurz nacheinander“ ein. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_DATA_DIR` | `/app/data` im Image, sonst `./data` | Datenverzeichnis für SQLite, Uploads, Push-Schlüssel und Texterkennungsdaten. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_DIST_DIR` | – | `FLOWPLAN_DIST_DIR` ist nur für parallele Entwicklungsserver gedacht, `OIDC_ALLOW_LOCAL_HTTP` nur für Tests mit einem Anbieter auf `http://localhost`, `FLOWPLAN_GIT_ALLOW_HTTP` nur für Tests des Git-Exports mit einem `http://`-Server (in Produktion wirkungslos). | [Konfiguration › Nicht setzen](/configuration#nicht-setzen) |
| `FLOWPLAN_DROP_ROOT` | – | `NODE_ENV`, `PORT`, `HOSTNAME` und `NEXT_TELEMETRY_DISABLED` setzt das Image selbst, ebenso `FLOWPLAN_DROP_ROOT=1` (Flowplans Werkzeuge im Container geben root ab und laufen als `PUID:PGID`). | [Konfiguration › Nicht setzen](/configuration#nicht-setzen) |
| `FLOWPLAN_ENCRYPTION_KEY` | *leer* | 32 Bytes, base64 (`openssl rand -base64 32`). | [Konfiguration: Speicher, Datenbank und Sicherheit › Verschlüsselung](/configuration-storage#verschluesselung) |
| `FLOWPLAN_ENCRYPTION_KEY_FILE` | *leer* | Statt der Variablen: Pfad zu einer Datei mit dem Schlüssel (Docker-Secret). | [Konfiguration: Speicher, Datenbank und Sicherheit › Verschlüsselung](/configuration-storage#verschluesselung) |
| `FLOWPLAN_ENCRYPTION_KEY_PREVIOUS` | *leer* | Frühere Schlüssel, durch Komma getrennt – nur zum Lesen nach einem Schlüsselwechsel. | [Konfiguration: Speicher, Datenbank und Sicherheit › Verschlüsselung](/configuration-storage#verschluesselung) |
| `FLOWPLAN_GIT_ALLOW_HTTP` | – | `FLOWPLAN_DIST_DIR` ist nur für parallele Entwicklungsserver gedacht, `OIDC_ALLOW_LOCAL_HTTP` nur für Tests mit einem Anbieter auf `http://localhost`, `FLOWPLAN_GIT_ALLOW_HTTP` nur für Tests des Git-Exports mit einem `http://`-Server (in Produktion wirkungslos). | [Konfiguration › Nicht setzen](/configuration#nicht-setzen) |
| `FLOWPLAN_HIDE_SPONSOR` | `false` | `true` blendet unter **Einstellungen → Über Flowplan** nur den Teil **Flowplan unterstützen ♥** (Link zu GitHub Sponsors) aus. | [Konfiguration: Speicher, Datenbank und Sicherheit › Rechtliches und Oberfläche](/configuration-storage#rechtliches-und-oberflaeche) |
| `FLOWPLAN_IMPORT_MAX_DOCS` | `10000` | Höchstzahl der Seiten je [Import](/migrate) aus AFFiNE, Confluence, Evernote, Google Docs, Obsidian und Notion/Markdown: Dokumente, Ordner, Datenbanken, Whiteboards und Sammlungen; beim Import als neue Datenbank die Zahl der Einträge. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_IMPORT_MAX_FILES` | `20000` | Höchstzahl der Dateien (Bilder, Anhänge) je Import aus einem AFFiNE-Arbeitsbereich oder -Snapshot; weitere werden ausgelassen, die Vorschau nennt ihre Zahl und die Variable. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_IMPORT_MAX_MB` | *leer* | Größte Datei für [Importe aus AFFiNE](/migrate-affine) und anderen Werkzeugen in MB, für alle Personen. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_INSTANCE_ID` | Hostname + Zufall | Name der Instanz in der Übersicht und in `application_name` der Datenbankverbindungen. | [Cluster-Modus › Weitere Variablen](/cluster#weitere-variablen) |
| `FLOWPLAN_LEADER_INTERVAL` | `5000` | Wie oft (ms) die Instanzen die Leitung prüfen; bestimmt, wie schnell eine ausgefallene leitende Instanz ersetzt wird. | [Cluster-Modus › Weitere Variablen](/cluster#weitere-variablen) |
| `FLOWPLAN_LITESTREAM` | an | `off`: nur Dateien spiegeln, Datenbank nicht sichern. | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `FLOWPLAN_LITESTREAM_SSE_C` | – | `FLOWPLAN_LITESTREAM_SSE_C` setzt der Start des Containers, wenn `LITESTREAM_SSE_C_KEY` gesetzt ist; die Administration zeigt daran, ob die Litestream-Kopie verschlüsselt ist. | [Konfiguration › Nicht setzen](/configuration#nicht-setzen) |
| `FLOWPLAN_LOCAL_LOGIN` | an | `false` schaltet E-Mail, Passwort und Passkeys ab; dann bleibt nur Single Sign-on. | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `FLOWPLAN_MARKETPLACE_URL` | `https://marketplace.flowplan.org` | Adresse des Flowplan Marketplace (Standard `https://marketplace.flowplan.org`); `off` schaltet ihn ab. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_MAX_DOCUMENT_MB` | `16` | Größe eines gemeinsam bearbeiteten Dokuments (Seite oder Datensatz-Dokument) in MB. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_MESSENGER_ALLOW_PRIVATE` | wie `FLOWPLAN_WEBHOOK_ALLOW_PRIVATE` | `true`: Personen dürfen Server im eigenen Netz angeben (interne Adressen, `http://`) – etwa Gotify oder ntfy im Heimnetz. | [Konfiguration: E-Mail, Integrationen und Workflows › Chat-Apps](/configuration-integrations#chat-apps) |
| `FLOWPLAN_MESSENGERS` | *alle* | Dienste, die Personen verbinden dürfen, durch Komma getrennt: `telegram`, `gotify`, `ntfy`, `matrix`; `off` für keinen. | [Konfiguration: E-Mail, Integrationen und Workflows › Chat-Apps](/configuration-integrations#chat-apps) |
| `FLOWPLAN_METRICS` | an | `off` schaltet die Nutzungsstatistik der [Überwachung](/monitoring#statistik) aus: Anfragen, Fehler und Antwortzeiten je Minute, aktive Personen je Stunde, Speicherverlauf und KI-Tokens. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_METRICS_LOOP` | – | > **Für Lasttests:** `FLOWPLAN_METRICS_LOOP=1` misst zusätzlich die Verzögerung und Auslastung der Node-Event-Loop und die Zeit in SQLite und hängt sie an `/api/metrics` an. | [Überwachung und Wartung › Prometheus](/monitoring#prometheus) |
| `FLOWPLAN_METRICS_TOKEN` | *leer* | Mindestens 16 Zeichen; aktiviert `/api/metrics` im Prometheus-Format. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_MODE` | – | Gleichwertig: `FLOWPLAN_MODE=cluster`. | [Cluster-Modus › Weitere Variablen](/cluster#weitere-variablen) |
| `FLOWPLAN_MOVE_ALLOW_PRIVATE` | *leer* | Auf der **neuen** Instanz: `true` erlaubt, eine Instanz unter einer internen Adresse (LAN, VPN, `localhost`) und über `http://` zu übernehmen – etwa einen Heimserver. | [Konfiguration: Speicher, Datenbank und Sicherheit › Instanzumzug](/configuration-storage#instanzumzug) |
| `FLOWPLAN_OCR` | an | `0` schaltet die Texterkennung für gescannte PDFs und Bilder ab. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_OCR_LANGS` | `deu,eng` | Sprachen der Texterkennung, z. B. `fra,eng`; die erste ist die Hauptsprache. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_PG_BIN` | *leer* | Ordner mit `pg_dump`, `pg_restore` und `psql`, wenn sie nicht im `PATH` liegen. | [PostgreSQL › Variablen](/postgresql#variablen) |
| `FLOWPLAN_PG_CONNECT_TIMEOUT` | `30000` | So lange wartet eine Anfrage auf eine freie Verbindung aus dem Pool (ms). | [PostgreSQL › Variablen](/postgresql#variablen) |
| `FLOWPLAN_PG_IDLE_TX_TIMEOUT` | `60000` | Eine Transaktion, die so lange nichts tut, wird beendet (ms). | [PostgreSQL › Variablen](/postgresql#variablen) |
| `FLOWPLAN_PG_LOCK_TIMEOUT` | `10000` | So lange wartet eine Abfrage höchstens auf eine Sperre (ms). | [PostgreSQL › Variablen](/postgresql#variablen) |
| `FLOWPLAN_PG_POOL` | `public`, `10`, … | Schema, Verbindungen je Instanz und Zeitlimits. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `FLOWPLAN_PG_PREPARE` | an | `off`: Abfragen ohne Namen statt benannter Prepared Statements – für PgBouncer im Modus `transaction` ohne `max_prepared_statements`. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `FLOWPLAN_PG_SCHEMA` | `public`, `10`, … | Schema, Verbindungen je Instanz und Zeitlimits. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `FLOWPLAN_PG_SCHEMA_AUTO` | an | `off`: Die Instanz legt das Schema nicht selbst an oder aktualisiert es – das übernimmt ein eigener Schritt (`node /app/scripts/db-schema.mjs`, siehe [Cluster-Modus](/cluster#schema-vor-dem-start)). | [PostgreSQL › Variablen](/postgresql#variablen) |
| `FLOWPLAN_PG_STATEMENT_TIMEOUT` | `120000` | Höchstdauer einer Abfrage in Millisekunden; `0` = kein Limit. | [PostgreSQL › Variablen](/postgresql#variablen) |
| `FLOWPLAN_PGVECTOR` | an | `off` nutzt `pgvector` nicht, auch wenn es installiert ist. | [PostgreSQL › Variablen](/postgresql#variablen) |
| `FLOWPLAN_PUBLIC_API_DOCS` | `false` | `true` macht `/api/openapi.json` und `/api/docs` ohne Anmeldung lesbar; Besucher sehen darin nur die Hauptversion (`0.x`). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_READY_REQUIRE` | alle | Welche Prüfungen über `/api/health/ready` entscheiden. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `FLOWPLAN_REDIS_PREFIX` | `flowplan:` | Präfix für Schlüssel und Kanäle, wenn sich mehrere Installationen ein Redis teilen. | [Cluster-Modus › Weitere Variablen](/cluster#weitere-variablen) |
| `FLOWPLAN_SECRETS_KEY` | – | Ein eigener Schlüssel nur dafür: 32 Bytes, base64 oder hex (`openssl rand -base64 32`), oder Pfad zu einer Datei (Docker-Secret). | [Konfiguration: Speicher, Datenbank und Sicherheit › Gespeicherte Geheimnisse](/configuration-storage#gespeicherte-geheimnisse) |
| `FLOWPLAN_SECRETS_KEY_FILE` | – | Ein eigener Schlüssel nur dafür: 32 Bytes, base64 oder hex (`openssl rand -base64 32`), oder Pfad zu einer Datei (Docker-Secret). | [Konfiguration: Speicher, Datenbank und Sicherheit › Gespeicherte Geheimnisse](/configuration-storage#gespeicherte-geheimnisse) |
| `FLOWPLAN_SECURITY_LOG` | `on` | Sicherheitsereignisse als JSON-Zeile auf stdout: `on` (mit Adresse, für fail2ban/CrowdSec), `anonymous`, `off` ([Sicherheit](/security-monitoring#sicherheit)). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_SECURITY_RETENTION_DAYS` | `90` | Wie lange Sicherheitsereignisse in der Datenbank bleiben (mindestens 7). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_SETUP_TOKEN` | *leer* (Helm: zufällig erzeugt) | Empfohlen für Instanzen, die aus dem Internet erreichbar sind: Das erste Konto und das Wiederherstellen beim Einrichten gehen nur über `/register?setup=<token>`. | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `FLOWPLAN_SKIP_TYPECHECK` | – | `FLOWPLAN_SKIP_TYPECHECK=1` ist nur für die Entwicklung gedacht: Es überspringt die TypeScript-Prüfung beim Build, wenn sie wie in unserem CI schon gelaufen ist. | [Installation mit Docker › Image selbst bauen](/installation#image-selbst-bauen) |
| `FLOWPLAN_SNAPSHOT_RETENTION_DAYS` | `180` | Aufbewahrung automatischer Versionen in Tagen (`0` = unbegrenzt). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_SOURCE_URL` | GitHub-Repository von Flowplan | Adresse des Quellcodes, der auf dieser Instanz läuft (http oder https). | [Konfiguration: Speicher, Datenbank und Sicherheit › Rechtliches und Oberfläche](/configuration-storage#rechtliches-und-oberflaeche) |
| `FLOWPLAN_TELEGRAM_API_URL` | `https://api.telegram.org` | Adresse der Bot-API für den Bot der Instanz – ein selbst betriebener [Telegram-Bot-API-Server](https://github.com/tdlib/telegram-bot-api) oder ein Relay/Proxy. | [Konfiguration: E-Mail, Integrationen und Workflows › Chat-Apps](/configuration-integrations#chat-apps) |
| `FLOWPLAN_TELEGRAM_BOT_TOKEN` | *leer* | Token des Telegram-Bots der Instanz (von @BotFather). | [Konfiguration: E-Mail, Integrationen und Workflows › Chat-Apps](/configuration-integrations#chat-apps) |
| `FLOWPLAN_TRUSTED_PROXIES` | `1` | Anzahl der Proxys vor Flowplan (Traefik allein: `1`, Pangolin vor Traefik: `2`, `0` = keinem Header vertrauen). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_UPDATE_CHECK` | an | `false` schaltet die Suche nach neuen Versionen ab (für Instanzen ohne Internet). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_UPDATE_URL` | GitHub-API | Andere Adresse für das neueste Release (gleiches Format wie `api.github.com/repos/yannicschuller/flowplan/releases/latest`), etwa ein interner Spiegel. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `FLOWPLAN_VERSION` | – | Eine feste Version wählst du mit `FLOWPLAN_VERSION=0.7.0` in der `.env`. | [Installation mit Docker › Mit Docker Compose](/installation#mit-docker-compose) |
| `FLOWPLAN_WEBHOOK_ALLOW_PRIVATE` | *leer* | `true` erlaubt Webhooks an interne Adressen und `http://` – etwa Home Assistant oder n8n im selben Netz. | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `FLOWPLAN_WORKFLOW_ACTIVE_PER_WORKSPACE` | 100 | aktive Workflows je Arbeitsbereich | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_AI_TOKENS_PER_DAY` | 100000 | KI-Tokens je Workflow und Tag (0 = KI-Knoten aus) | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_CASCADE_DEPTH` | 5 | Tiefe gegenseitiger Auslösung | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_EXTERNAL_MAIL` | `on` | E-Mails an Adressen außerhalb der Mitglieder | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_FOREACH_MAX` | 100 | Elemente je „Für jedes“ | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_HTTP` | `on` | HTTP-Knoten erlaubt | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_HTTP_ALLOW_PRIVATE` | `false` | interne Adressen erlauben (Heimnetz, n8n) | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_HTTP_HOSTS` | leer | nur diese Hosts (kommagetrennt) | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_LEASE_MS` | – | > **Nur für Entwicklung und Tests:** `FLOWPLAN_WORKFLOW_LEASE_MS` (Standard 120000, die [Lease](/cluster#workflows-im-cluster) eines Schritts), `FLOWPLAN_WORKFLOW_POLL_MS` (5000, wie oft jede Instanz nach fälligen Schritten sieht) und `FLOWPLAN_WORKFLOW_SWEEP_MS` (60000, wie oft abgelaufene Leases … | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_MAILS_PER_DAY` | 100 | E-Mails je Workflow und Tag | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_MAX_WAIT_DAYS` | 365 | längstes Warten bzw. Freigabefrist | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_PARALLEL_RUNS` | 10 | gleichzeitig laufende Läufe je Workflow (1–100); weitere warten in der Warteschlange | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_POLL_MS` | – | > **Nur für Entwicklung und Tests:** `FLOWPLAN_WORKFLOW_LEASE_MS` (Standard 120000, die [Lease](/cluster#workflows-im-cluster) eines Schritts), `FLOWPLAN_WORKFLOW_POLL_MS` (5000, wie oft jede Instanz nach fälligen Schritten sieht) und `FLOWPLAN_WORKFLOW_SWEEP_MS` (60000, wie oft abgelaufene Leases … | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_RUN_DAYS` | 30 | Aufbewahrung der Läufe in Tagen | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_RUNS_KEPT` | 10000 | höchstens so viele Läufe je Workflow aufbewahren (100–1.000.000); ältere abgeschlossene werden täglich gelöscht, offene nie | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_RUNS_PER_MINUTE` | 60 | Läufe je Minute und Workflow | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_STEPS_PER_RUN` | 200 | Schritte je Lauf | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_SWEEP_MS` | – | > **Nur für Entwicklung und Tests:** `FLOWPLAN_WORKFLOW_LEASE_MS` (Standard 120000, die [Lease](/cluster#workflows-im-cluster) eines Schritts), `FLOWPLAN_WORKFLOW_POLL_MS` (5000, wie oft jede Instanz nach fälligen Schritten sieht) und `FLOWPLAN_WORKFLOW_SWEEP_MS` (60000, wie oft abgelaufene Leases … | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_TEST_RUNS_PER_MINUTE` | 10 | Test- und Probeläufe je Person und Minute | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_WORKERS` | 4 | gleichzeitige Schritte je Instanz | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOW_WORKSPACE_RUNS_PER_MINUTE` | 600 | Läufe je Minute und Arbeitsbereich | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKFLOWS` | `on` | Hauptschalter; `off`: keine neuen Workflow-Seiten, alle pausiert | [Konfiguration: E-Mail, Integrationen und Workflows › Workflows](/configuration-integrations#workflows) |
| `FLOWPLAN_WORKSPACE_QUOTA_MB` | unbegrenzt | Standard-Speicherkontingent je Arbeitsbereich in MB (`0` = unbegrenzt). | [Konfiguration › Betrieb](/configuration#betrieb) |
| `GIPHY_API_KEY` | *leer* | Schlüssel für die [GIF-Suche auf Whiteboards](/whiteboards#bilder-symbole-und-eintraege) bei GIPHY bzw. Tenor (ist beides gesetzt, gilt GIPHY). | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `GIT_COMMIT` | – | Version und Commit (`FLOWPLAN_VERSION`, `GIT_COMMIT`, `SOURCE_COMMIT`) kommen aus dem Build; `FLOWPLAN_VERSION` in der `.env` wählt nur das Image-Tag in `compose.yaml`. | [Konfiguration › Nicht setzen](/configuration#nicht-setzen) |
| `GOOGLE_CALENDAR_CLIENT_ID` | *leer* | OAuth-Client (Typ „Webanwendung“) aus der Google Cloud Console, mit aktivierter Google Calendar API und dem Bereich `…/auth/calendar`. | [Konfiguration: E-Mail, Integrationen und Workflows › Kalender-Sync](/configuration-integrations#kalender-sync) |
| `GOOGLE_CALENDAR_CLIENT_SECRET` | *leer* | OAuth-Client (Typ „Webanwendung“) aus der Google Cloud Console, mit aktivierter Google Calendar API und dem Bereich `…/auth/calendar`. | [Konfiguration: E-Mail, Integrationen und Workflows › Kalender-Sync](/configuration-integrations#kalender-sync) |
| `IMPRINT_URL` | *leer* | Link zum Impressum, z. B. `https://example.com/impressum`. | [Konfiguration: Speicher, Datenbank und Sicherheit › Rechtliches und Oberfläche](/configuration-storage#rechtliches-und-oberflaeche) |
| `INBOUND_IMAP_FOLDER` | `INBOX` | Ordner, der abgefragt wird. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `INBOUND_IMAP_HOST` | *leer* | Schaltet die IMAP-Abfrage ein (zusammen mit `INBOUND_IMAP_USER`). | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `INBOUND_IMAP_PASSWORD` | *leer* | Anmeldung am Postfach. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `INBOUND_IMAP_PORT` | `993` | Port (`143`, wenn `INBOUND_IMAP_TLS=false`). | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `INBOUND_IMAP_TLS` | `true` | `false` nur für einen Mailserver auf demselben Rechner oder im selben Netz (ohne Verschlüsselung). | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `INBOUND_IMAP_USER` | *leer* | Anmeldung am Postfach. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `INBOUND_MAIL_AUTHSERV_ID` | *leer* | Kennung (authserv-id) des eigenen empfangenden Mailservers oder Anbieters, mit der sein `Authentication-Results`-Header beginnt, z. B. `mx.example.com`. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `INBOUND_MAIL_DOMAIN` | *leer* | Domain der Eingangsadressen, z. B. `mail.example.com`. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail-Eingang (IMAP)](/configuration-integrations#e-mail-eingang-imap) |
| `ISSUE_SYNC_ALLOW_PRIVATE` | *leer* | `true` erlaubt den in `ISSUE_SYNC_ALLOWED_HOSTS` genannten Servern auch interne Adressen – etwa ein GitLab im selben Netz. | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `ISSUE_SYNC_ALLOWED_HOSTS` | *leer* | Eigene Server für die [Synchronisierung von GitHub-, GitLab- und Forgejo-Issues](/git-and-issues#github-gitlab-und-forgejo-issues-synchronisieren), durch Komma getrennt (z. B. `gitlab.example.org`). github.com, gitlab.com und codeberg.org sind immer erlaubt; andere Server nur, wenn sie hier stehen. | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `LDAP_BASE_DN` | – | Wo Personen gesucht werden, z. B. `ou=people,dc=example,dc=org`. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_BIND_DN` | *leer* | Suchkonto. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_BIND_PASSWORD` | *leer* | Suchkonto. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_CONTACTS` | an | `off` schaltet Kontakte aus dem Verzeichnis ab. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Kontakte aus LDAP](/scim-and-ldap#kontakte-aus-ldap) |
| `LDAP_CONTACTS_ATTRIBUTES` | – | Weitere Attribute, die Zuordnungen nutzen dürfen (durch Komma oder Leerzeichen getrennt). | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Kontakte aus LDAP](/scim-and-ldap#kontakte-aus-ldap) |
| `LDAP_CONTACTS_BASE_DN` | `LDAP_BASE_DN` | Wo Kontakte gesucht werden; der OU-Baum im Import-Dialog beginnt hier. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Kontakte aus LDAP](/scim-and-ldap#kontakte-aus-ldap) |
| `LDAP_CONTACTS_FILTER` | `(&(\|(objectClass=inetOrgPerson)(objectClass=user)(objectClass=contact))(!(objectClass=computer)))` | Welche Einträge Personen sind. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Kontakte aus LDAP](/scim-and-ldap#kontakte-aus-ldap) |
| `LDAP_CONTACTS_SYNC_MINUTES` | `60` | Abstand des Abgleichs (15–1440). | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Kontakte aus LDAP](/scim-and-ldap#kontakte-aus-ldap) |
| `LDAP_GROUP_ATTRIBUTE` | `memberOf` | Attribut mit den Gruppen der Person. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_STARTTLS` | `false` | `true`: `ldap://` mit StartTLS verschlüsseln. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_TIMEOUT_MS` | `8000` | Zeitlimit je LDAP-Operation. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_TLS_CA` | *leer* | CA-Zertifikat für `ldaps://` oder StartTLS (Dateipfad oder PEM-Text). | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_URL` | *leer* | `ldap://host:389` oder `ldaps://host:636`. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LDAP_USER_FILTER` | `(\|(uid={user})(mail={user}))` | `{user}` wird durch den maskierten Namen ersetzt. | [Benutzer aus dem Verzeichnis: SCIM und LDAP › Anmeldung mit LDAP](/scim-and-ldap#anmeldung-mit-ldap) |
| `LITESTREAM_SSE_C_KEY` | *leer* | Optional: der Speicheranbieter verschlüsselt die Litestream-Kopie (SSE-C, 32 Bytes base64, nur über https und bei Anbietern, die SSE-C können). | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `MEETING_LIVE_TRANSCRIPTION` | `on` | `off`: Besprechungen erst nach dem Beenden transkribieren statt schon während der Aufnahme. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `MOBILE_PUSH` | – | Mitteilungen an die Apps für iPhone, iPad und Android. | [Konfiguration: KI, Sprachnotizen und Push › Push-Benachrichtigungen](/configuration-ai-push#push-benachrichtigungen) |
| `MOBILE_PUSH_CONTENT` | – | Ob der Text der Benachrichtigung mitkommt – und damit die Knöpfe **Erledigt** und **Morgen** an fälligen Aufgaben und **Antworten** an Kommentaren ([Knöpfe an Mitteilungen](/mobile-widgets#knoepfe-an-mitteilungen)); **Als gelesen markieren** gibt es immer. | [Konfiguration: KI, Sprachnotizen und Push › Push-Benachrichtigungen](/configuration-ai-push#push-benachrichtigungen) |
| `MS_CALENDAR_CLIENT_ID` | *leer* | App-Registrierung in Microsoft Entra ID (Web-Plattform) mit den delegierten Berechtigungen `Calendars.ReadWrite` und `offline_access`. | [Konfiguration: E-Mail, Integrationen und Workflows › Kalender-Sync](/configuration-integrations#kalender-sync) |
| `MS_CALENDAR_CLIENT_SECRET` | *leer* | App-Registrierung in Microsoft Entra ID (Web-Plattform) mit den delegierten Berechtigungen `Calendars.ReadWrite` und `offline_access`. | [Konfiguration: E-Mail, Integrationen und Workflows › Kalender-Sync](/configuration-integrations#kalender-sync) |
| `MS_CALENDAR_TENANT` | `common` | `common` (Geschäfts- und private Konten), `organizations` oder die ID eines Mandanten. | [Konfiguration: E-Mail, Integrationen und Workflows › Kalender-Sync](/configuration-integrations#kalender-sync) |
| `NETBOX_ALLOW_PRIVATE` | *leer* | `true` erlaubt den [NetBox-Import auf Whiteboards](/whiteboard-racks#importieren-und-exportieren) auch interne Adressen und `http://` – etwa ein NetBox im selben Netz. | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `NEXT_TELEMETRY_DISABLED` | – | `NODE_ENV`, `PORT`, `HOSTNAME` und `NEXT_TELEMETRY_DISABLED` setzt das Image selbst, ebenso `FLOWPLAN_DROP_ROOT=1` (Flowplans Werkzeuge im Container geben root ab und laufen als `PUID:PGID`). | [Konfiguration › Nicht setzen](/configuration#nicht-setzen) |
| `OIDC_ADMIN_GROUP` | – | Mitglieder dieser Gruppe sehen die **Administration**. | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_ALLOW_LOCAL_HTTP` | – | `FLOWPLAN_DIST_DIR` ist nur für parallele Entwicklungsserver gedacht, `OIDC_ALLOW_LOCAL_HTTP` nur für Tests mit einem Anbieter auf `http://localhost`, `FLOWPLAN_GIT_ALLOW_HTTP` nur für Tests des Git-Exports mit einem `http://`-Server (in Produktion wirkungslos). | [Konfiguration › Nicht setzen](/configuration#nicht-setzen) |
| `OIDC_ALLOWED_GROUP` | – | Wenn gesetzt, dürfen sich nur Mitglieder dieser Gruppe anmelden. | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_CLIENT_ID` | – | Client-ID. | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `OIDC_CLIENT_SECRET` | – | Client-Secret. | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `OIDC_GROUPS_CLAIM` | – | Claim mit den Gruppen, auch als Pfad wie `realm_access.roles`. | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_ISSUER` | – | Issuer-URL; Flowplan liest daraus die Discovery (`/.well-known/openid-configuration`). | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_LINKED_SSO_ONLY` | – | `true`: Konten, die mit SSO verbunden sind, melden sich nur noch über SSO an (Standard aus). | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_NEW_ACCOUNTS` | – | `false`: Die SSO-Anmeldung legt keine neuen Konten an (Standard an) – nur bestehende, verbundene oder per SCIM bereitgestellte Konten melden sich an. | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_PICTURE` | – | Profilbild aus dem Claim `picture` übernehmen (Standard an, `off` schaltet ab). | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_PROMPT_CREATE` | – | `true`: **Registrieren** öffnet direkt die Registrierung des Anbieters (`prompt=create`). | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `OIDC_SCOPES` | – | Bei SSO fehlt die Gruppe im Token: `OIDC_SCOPES`, `OIDC_GROUPS_CLAIM`, `OIDC_ADMIN_GROUP` prüfen und neu anmelden. | [Betrieb und Fehlersuche › Fehlersuche](/operations#fehlersuche) |
| `OLLAMA_URL` | *leer* | Adresse von Ollama, z. B. `http://ollama:11434` mit dem Compose-Dienst. | [Konfiguration: KI, Sprachnotizen und Push › KI](/configuration-ai-push#ki) |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | *leer* | OTLP-Collector (HTTP); Sicherheitsereignisse gehen als OpenTelemetry-Logs dorthin. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `OTEL_EXPORTER_OTLP_HEADERS` | – | Dazu `OTEL_EXPORTER_OTLP_HEADERS` und `OTEL_SERVICE_NAME`. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | – | Mit `OTEL_EXPORTER_OTLP_ENDPOINT` (oder `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`) schickt Flowplan die Ereignisse als OTLP-Logs (HTTP/JSON, `/v1/logs`) an deinen Collector, etwa Grafana Alloy, den OpenTelemetry Collector, Grafana Cloud, Honeycomb oder Datadog. | [Sicherheit und Angriffserkennung › OpenTelemetry](/security-monitoring#opentelemetry) |
| `OTEL_EXPORTER_OTLP_LOGS_HEADERS` | `OTEL_EXPORTER_OTLP_HEADERS` | Header für den Collector, nur für die Logs: `api-key=abc,x-scope=flowplan` (kommagetrennt, Werte URL-kodiert). | [Sicherheit und Angriffserkennung › Weitere Variablen](/security-monitoring#weitere-variablen) |
| `OTEL_SERVICE_NAME` | – | Dazu `OTEL_EXPORTER_OTLP_HEADERS` und `OTEL_SERVICE_NAME`. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `PG_CLIENT_MAJOR` | – | Build-Argumente: `PG_CLIENT_MAJOR` (Standard `18`) wählt die Version von `pg_dump`, `pg_restore` und `psql` im Image – mindestens die Hauptversion deines PostgreSQL-Servers ([PostgreSQL](/postgresql)). | [Installation mit Docker › Image selbst bauen](/installation#image-selbst-bauen) |
| `PGCONNECT_TIMEOUT` | `15` | So viele Sekunden warten `pg_dump`, `pg_restore` und `psql` höchstens auf die Verbindung zum Server (die Variable von libpq). | [PostgreSQL › Variablen](/postgresql#variablen) |
| `PGID` | `1000` / wie `PUID` | Nur im Image, ohne `user:` (wie bei linuxserver.io): Flowplan gibt den Datenordner beim Start diesem Benutzer und dieser Gruppe und läuft als sie, nie als root; `0` wird abgelehnt. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `PLUGIN_ALLOWED_ORIGINS` | *leer* | HTTPS-Ursprünge, von denen Eigentümer [Block-Erweiterungen](/plugins) registrieren dürfen, durch Komma getrennt (z. B. `https://plugins.example.org`). | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `PRIVACY_URL` | *leer* | Link zur Datenschutzerklärung, an denselben Stellen und ebenfalls nur, wenn gesetzt. | [Konfiguration: Speicher, Datenbank und Sicherheit › Rechtliches und Oberfläche](/configuration-storage#rechtliches-und-oberflaeche) |
| `PUID` | `1000` / wie `PUID` | Nur im Image, ohne `user:` (wie bei linuxserver.io): Flowplan gibt den Datenordner beim Start diesem Benutzer und dieser Gruppe und läuft als sie, nie als root; `0` wird abgelehnt. | [Konfiguration › Betrieb](/configuration#betrieb) |
| `PUSH_RELAY` | – | `off`: kein Relay. | [Konfiguration: KI, Sprachnotizen und Push › Push-Benachrichtigungen](/configuration-ai-push#push-benachrichtigungen) |
| `PUSH_RELAY_URL` | – | Das [Push-Relay](/configuration-ai-push#push-relay-und-ende-zu-ende-verschluesselung), über das Mitteilungen an die Apps gehen. | [Konfiguration: KI, Sprachnotizen und Push › Push-Benachrichtigungen](/configuration-ai-push#push-benachrichtigungen) |
| `REDIS_URL` | *leer* | Redis für den Cluster-Modus, `redis://…` oder `rediss://…`. | [Konfiguration: Speicher, Datenbank und Sicherheit › Datenbank und Cluster](/configuration-storage#datenbank-und-cluster) |
| `RENDER_EXTERNAL_HOSTNAME` | – | **Adresse:** Ohne `APP_URL` nimmt Flowplan Renders eigene Adresse (`RENDER_EXTERNAL_URL`, ersatzweise `https://` mit `RENDER_EXTERNAL_HOSTNAME`). | [Mit einem Klick bereitstellen › Render](/one-click-deploy#render) |
| `RENDER_EXTERNAL_URL` | – | **Adresse:** Ohne `APP_URL` nimmt Flowplan Renders eigene Adresse (`RENDER_EXTERNAL_URL`, ersatzweise `https://` mit `RENDER_EXTERNAL_HOSTNAME`). | [Mit einem Klick bereitstellen › Render](/one-click-deploy#render) |
| `S3_ACCESS_KEY_ID` | – | Zugangsschlüssel mit Lese- und Schreibrecht auf den Bucket. | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `S3_BUCKET` | *leer* | Schaltet S3 ein. | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `S3_ENDPOINT` | AWS | API-Adresse des Speichers, z. B. `http://minio:9000`. | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `S3_PREFIX` | `flowplan` | Ordner im Bucket; Dateien unter `<Präfix>/uploads/`, Datenbank unter `<Präfix>/db/`. | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `S3_REGION` | `us-east-1` | Region. | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `S3_SECRET_ACCESS_KEY` | – | Zugangsschlüssel mit Lese- und Schreibrecht auf den Bucket. | [Konfiguration: Speicher, Datenbank und Sicherheit › S3 und Datenbanksicherung](/configuration-storage#s3-und-datenbanksicherung) |
| `SESSION_APP_DAYS` | `90` | App-Sitzung endet nach so vielen Tagen ohne Nutzung (1–365). | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `SESSION_APP_REMEMBER` | an | Desktop- und Handy-Apps bleiben angemeldet, solange sie (oder ihre Widgets) genutzt werden – bei Anmeldungen, die die App belegt (Übergabe über den Browser oder Passwort mit dem Geräteschlüssel der App; siehe [Anmeldung](/sessions)). | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `SESSION_GROUPS_HOURS` | *leer* | Nur wenn gesetzt: SSO-Sitzungen mit „angemeldet bleiben“ enden schon nach so vielen Stunden, damit Gruppenänderungen beim Anbieter mit der neuen Anmeldung wirken. | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `SESSION_HOURS` | – | Gültigkeit einer Browser-Sitzung in Stunden, solange „Angemeldet bleiben“ nicht genutzt wird; die Apps bleiben angemeldet (siehe [Angemeldet bleiben](/sessions)). | [Single Sign-on mit OIDC › Variablen](/sso-oidc#variablen) |
| `SESSION_IDLE_HOURS` | `168` | Mit „angemeldet bleiben“ im Browser: Sitzung endet so viele Stunden nach der letzten Nutzung (1–8760). | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `SESSION_MAX_DAYS` | `30` / `365` | Sitzungen, die angemeldet bleiben, enden spätestens so viele Tage nach der Anmeldung (1–365; Standard 30 im Browser, 365 in den Apps; nie kürzer als die Zeit ohne Nutzung) – mit SSO genauso wie mit Passwort und Passkey. | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `SESSION_REMEMBER` | aus | `true` bietet im Browser beim Anmelden **Angemeldet bleiben** an – siehe [Anmeldung](/sessions). | [Konfiguration › Anmeldung](/configuration#anmeldung) |
| `SMTP_FROM` | `Flowplan <SMTP_USER>` | Absender, z. B. `Flowplan <flowplan@example.com>`. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail (SMTP)](/configuration-integrations#e-mail-smtp) |
| `SMTP_HOST` | *leer* | Schaltet den E-Mail-Versand ein: Einladungen und Zusammenfassungen ungelesener Benachrichtigungen. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail (SMTP)](/configuration-integrations#e-mail-smtp) |
| `SMTP_PASSWORD` | *leer* | Anmeldung am Mailserver. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail (SMTP)](/configuration-integrations#e-mail-smtp) |
| `SMTP_PORT` | `587` | Port. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail (SMTP)](/configuration-integrations#e-mail-smtp) |
| `SMTP_SECURE` | nach Port | `true`/`false` erzwingt TLS ab Verbindungsbeginn. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail (SMTP)](/configuration-integrations#e-mail-smtp) |
| `SMTP_USER` | *leer* | Anmeldung am Mailserver. | [Konfiguration: E-Mail, Integrationen und Workflows › E-Mail (SMTP)](/configuration-integrations#e-mail-smtp) |
| `SOURCE_COMMIT` | – | Docker-Images aus unserem Workflow kennen ihren Commit; bei Coolify kommt er aus `SOURCE_COMMIT`. | [Administration der Instanz › Instanz](/administration#instanz) |
| `SPACE_GIT_ALLOW_PRIVATE` | *leer* | `true` erlaubt den in `SPACE_GIT_ALLOWED_HOSTS` genannten Servern auch interne Adressen – etwa ein Forgejo auf demselben Host, den der Container über `--add-host git.example.org:host-gateway` erreicht. | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `SPACE_GIT_ALLOWED_HOSTS` | *leer* | Erlaubte Git-Server dafür, durch Komma getrennt (z. B. `git.example.org`). | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `SPACE_GIT_EXPORT` | *leer* | `true` schaltet den [Git-Export der Bereiche](/markdown-git-export#git-export-eines-bereichs) ein: Bereichseigentümer übertragen ihren Bereich täglich oder wöchentlich in ein eigenes Repository. | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `TENOR_API_KEY` | *leer* | Schlüssel für die [GIF-Suche auf Whiteboards](/whiteboards#bilder-symbole-und-eintraege) bei GIPHY bzw. Tenor (ist beides gesetzt, gilt GIPHY). | [Konfiguration: E-Mail, Integrationen und Workflows › Integrationen](/configuration-integrations#integrationen) |
| `WEB_PUSH_PRIVATE_KEY` | – | VAPID-Schlüsselpaar. | [Konfiguration: KI, Sprachnotizen und Push › Push-Benachrichtigungen](/configuration-ai-push#push-benachrichtigungen) |
| `WEB_PUSH_PUBLIC_KEY` | – | VAPID-Schlüsselpaar. | [Konfiguration: KI, Sprachnotizen und Push › Push-Benachrichtigungen](/configuration-ai-push#push-benachrichtigungen) |
| `WEB_PUSH_SUBJECT` | – | Kontakt für die Push-Dienste, z. B. `mailto:admin@example.com`. | [Konfiguration: KI, Sprachnotizen und Push › Push-Benachrichtigungen](/configuration-ai-push#push-benachrichtigungen) |
| `WHISPER_API_KEY` | *leer* | Nur falls der Dienst einen Schlüssel verlangt. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_DIARIZE` | *leer* | `on`: Sprechertrennung anfragen (`diarize=true`), nur bei Diensten, die es können. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_LANGUAGE` | `de` | Sprache der Aufnahmen. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_MAX_MB` | `200` | Größte Aufnahme in MB. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_MODEL` | `Systran/faster-whisper-small` | Modellname, wie ihn der Dienst erwartet. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_PROMPT` | *leer* | Vokabular für alle Arbeitsbereiche (Namen, Abkürzungen, durch Kommas getrennt), geht als `prompt` an Whisper – vor dem Glossar des Arbeitsbereichs, zusammen höchstens etwa 550 Zeichen. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_RESPONSE_FORMAT` | `verbose_json` | Antwortformat der Spracherkennung; bei Fehler einmal `json`. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_TIMEOUT_SECONDS` | *leer* | Wie lange eine Transkription dauern darf, in Sekunden. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_URL` | *leer* | Adresse eines OpenAI-kompatiblen Whisper-Servers (`POST /v1/audio/transcriptions`), z. B. `http://whisper:8000`. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
| `WHISPER_VAD` | *leer* | `on`: Stille vorher überspringen (`vad_filter=true`, faster-whisper/speaches) – weniger erfundene Zeilen. | [Konfiguration: KI, Sprachnotizen und Push › Sprachnotizen (Whisper)](/configuration-ai-push#sprachnotizen-whisper) |
