Konfiguration
Konfiguration: Speicher, Datenbank und Sicherheit
Die Umgebungsvariablen für S3 und Datenbanksicherung, PostgreSQL und Cluster, Verschlüsselung, gespeicherte Geheimnisse, Instanzumzug und Rechtliches.
3 Min. Lesezeit
Auf dieser Seite
S3 und Datenbanksicherung
| Variable | Standard | Bedeutung |
|---|---|---|
S3_BUCKET | leer | Schaltet S3 ein. Ohne diese Variable bleibt alles lokal. |
S3_ENDPOINT | AWS | API-Adresse des Speichers, z. B. http://minio:9000. |
S3_ACCESS_KEY_ID / S3_SECRET_ACCESS_KEY | – | Zugangsschlüssel mit Lese- und Schreibrecht auf den Bucket. |
S3_REGION | us-east-1 | Region. Garage verlangt seinen eigenen Wert (oft garage). |
S3_PREFIX | flowplan | Ordner im Bucket; Dateien unter <Präfix>/uploads/, Datenbank unter <Präfix>/db/. |
FLOWPLAN_LITESTREAM | an | off: nur Dateien spiegeln, Datenbank nicht sichern. |
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). |
Details: Speicher, S3 und Sicherung.
Datenbank und Cluster
Ohne diese Variablen nutzt Flowplan SQLite in einem Container. Kommentiert stehen sie auch in der .env.example (öffnet in neuem Tab). Alle Werte mit Standard und Erklärung stehen unter PostgreSQL und Cluster-Modus.
| Variable | Standard | Bedeutung |
|---|---|---|
DATABASE_URL | leer | postgres://… schaltet auf PostgreSQL um. Die Rolle darin sollte die Datenbank besitzen, aber kein Superuser sein (PostgreSQL). |
FLOWPLAN_PG_SCHEMA, FLOWPLAN_PG_POOL, FLOWPLAN_PG_*_TIMEOUT | public, 10, … | Schema, Verbindungen je Instanz und Zeitlimits. |
FLOWPLAN_PG_PREPARE | an | off: Abfragen ohne Namen statt benannter Prepared Statements – für PgBouncer im Modus transaction ohne max_prepared_statements. |
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. |
FLOWPLAN_BACKUP_FORMAT | pg_dump | sqlite: geplante Sicherungen auf PostgreSQL im portablen SQLite-Format. |
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. |
REDIS_URL | leer | Redis für den Cluster-Modus, redis://… oder rediss://…. |
FLOWPLAN_READY_REQUIRE | alle | Welche Prüfungen über /api/health/ready entscheiden. |
Verschlüsselung
| Variable | Standard | Bedeutung |
|---|---|---|
FLOWPLAN_ENCRYPTION_KEY | leer | 32 Bytes, base64 (openssl rand -base64 32). Verschlüsselt Dateien im Bucket, geplante Sicherungen, Markdown-Exporte und die Instanzsicherung. Ohne Schlüssel ändert sich nichts. |
FLOWPLAN_ENCRYPTION_KEY_FILE | leer | Statt der Variablen: Pfad zu einer Datei mit dem Schlüssel (Docker-Secret). |
FLOWPLAN_ENCRYPTION_KEY_PREVIOUS | leer | Frühere Schlüssel, durch Komma getrennt – nur zum Lesen nach einem Schlüsselwechsel. |
Details: Verschlüsselung.
Gespeicherte Geheimnisse
Schlüssel von KI-Anbietern, die Schlüssel der Authenticator-Apps (Zwei-Faktor-Anmeldung) die Zugangstokens des Git-Exports der Bereiche und die Tokens der Chat-Apps speichert Flowplan nur verschlüsselt (AES-256-GCM, an ihren Platz gebunden). Der Schlüssel dafür kommt, in dieser Reihenfolge, aus:
| Quelle | Bedeutung |
|---|---|
FLOWPLAN_ENCRYPTION_KEY | Wenn gesetzt, verschlüsselt er auch die gespeicherten Geheimnisse. |
FLOWPLAN_SECRETS_KEY / 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). |
secrets.key im Datenordner | Ohne die beiden Variablen legt Flowplan diese Datei beim ersten Bedarf selbst an (nur für den Besitzer lesbar). |
Die Instanzsicherung enthält secrets.key bewusst nicht – sie gehört nicht neben die Daten, die sie schützt. Sichere die Datei getrennt oder setze den Schlüssel als Variable. Fehlt er nach einer Wiederherstellung, geben Admins und Nutzer ihre KI-Schlüssel und Chat-App-Tokens neu ein, und für die Zwei-Faktor-Anmeldung helfen Wiederherstellungscodes oder ein Zurücksetzen durch die Administration.
Das Umzugswerkzeug nimmt secrets.key dagegen mit, denn es zieht die ganze Instanz um.
Instanzumzug
| Variable | Standard | Bedeutung |
|---|---|---|
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. Ohne diese Variable nur öffentliche HTTPS-Adressen. Nach dem Umzug wieder entfernen. |
Details: Instanz umziehen.
Rechtliches und Oberfläche
| Variable | Standard | Bedeutung |
|---|---|---|
IMPRINT_URL | leer | Link zum Impressum, z. B. https://example.com/impressum. Erscheint auf der Anmeldeseite, unter geteilten Seiten und Formularen und im Kontomenü (auf dem Telefon unter Mehr in der Seitenleiste) – nur, wenn gesetzt. |
PRIVACY_URL | leer | Link zur Datenschutzerklärung, an denselben Stellen und ebenfalls nur, wenn gesetzt. |
FLOWPLAN_SOURCE_URL | GitHub-Repository von Flowplan | Adresse des Quellcodes, der auf dieser Instanz läuft (http oder https). Die AGPL-3.0 verlangt: Wer eine veränderte Fassung für andere betreibt, bietet ihnen deren Quellcode an (§ 13). Gesetzt, verlinken Einstellungen → Über Flowplan und die Anmeldeseite (Fußzeile „Quellcode“) diese Adresse statt github.com/yannicschuller/flowplan; der Commit ist dann nicht mehr auf GitHub verlinkt. |
DRAWIO_URL | https://embed.diagrams.net | Adresse des draw.io-Editors für den Block /drawio, z. B. ein eigener Container jgraph/drawio. Nur https (http nur für localhost); ein ungültiger Wert schaltet draw.io aus. Beim Ansehen wird draw.io nie geladen. |
FLOWPLAN_HIDE_SPONSOR | false | true blendet unter Einstellungen → Über Flowplan nur den Teil Flowplan unterstützen ♥ (Link zu GitHub Sponsors) aus. Lizenz und Quellcode bleiben immer sichtbar. In den Apps für iPhone, iPad und Android ist der Link unabhängig davon nie zu sehen; in Browsern und der Desktop-App schon. |