Umgebungsvariablen
Alle persönlichen Einstellungen von FediSuite (Domain, Passwörter, E-Mail-Server, Admin-Zugangsdaten) werden über die .env-Datei konfiguriert. Diese Seite erklärt jede Variable einzeln und nennt die Standardwerte aus dem Code.
Auf dieser Seite
Was ist eine .env-Datei?
Eine .env-Datei ist eine Textdatei mit Schlüssel-Wert-Paaren im Format SCHLUESSEL=wert. Docker Compose liest sie beim Start und übergibt die Werte als Umgebungsvariablen an die Container.
Alle instanzspezifischen Werte (Passwörter, Domain, Secrets) stehen in der .env, nicht in der docker-compose.yml. Die Compose-Datei lässt sich dadurch mit git pull aktualisieren, ohne dass deine Konfiguration überschrieben wird. Änderungen an der .env wirken erst, wenn die Container mit docker compose up -d neu erstellt werden. Ein docker compose restart liest sie nicht neu ein.
.env enthält Passwörter und Secrets. Sie darf nicht in ein Git-Repository gelangen. Das Self-Hosting-Repository ignoriert .env bereits per .gitignore. Setze trotzdem restriktive Dateirechte, zum Beispiel chmod 600 .env.
Die vollständige Vorlage
Das Repository enthält eine Vorlage unter .env.example. Du kopierst sie einmalig nach .env und passt die Werte an.
# Datenbank
POSTGRES_DB=fedisuite
POSTGRES_USER=fedisuite
POSTGRES_PASSWORD=change-me
DATABASE_URL=postgresql://fedisuite:change-me@db:5432/fedisuite
# Docker Image
FEDISUITE_IMAGE=christinloehner/fedisuite:latest
# App
JWT_SECRET=replace-with-a-long-random-secret
ACCOUNT_ENCRYPTION_KEY=replace-with-64-hexadecimal-characters
APP_NAME=FediSuite
APP_URL=https://your-domain.example
PUBLIC_SITE_URL=https://your-domain.example
# Admin-Account (wird beim Start angelegt, falls es ihn noch nicht gibt)
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=change-this-admin-password
# E-Mail
SMTP_HOST=smtp.your-provider.example
SMTP_PORT=587
SMTP_USER=your-smtp-user
SMTP_PASS=your-smtp-password
SMTP_FROM=no-reply@your-domain.example
# Optionales
OUTBOUND_HTTP_USER_AGENT=Mozilla/5.0 (compatible; FediSuite/1.0; +https://your-domain.example)
ENABLE_USER_REGISTRATION=true
Weitere Variablen (Funktionsschalter, Zeitlimits, Reichweite) sind optional und stehen weiter unten. Mit docker compose config prüfst du vor dem Start, ob die Konfiguration gültig ist.
Datenbankverbindung
FediSuite nutzt PostgreSQL. Diese vier Variablen müssen zueinander passen: Steht in POSTGRES_PASSWORD ein neues Passwort, muss dasselbe in der DATABASE_URL stehen.
POSTGRES_DB
fedisuite
Pflicht
Name der Datenbank, die PostgreSQL beim ersten Start anlegt. Frei wählbar. Sie wird nur beim Anlegen des Datenverzeichnisses ausgewertet.
POSTGRES_USER
fedisuite
Pflicht
Datenbankbenutzer, wird beim ersten Start angelegt und ist Superuser der Datenbank.
POSTGRES_PASSWORD
sicheres-passwort
Pflicht
Passwort des Datenbankbenutzers. Wähle ein starkes, zufälliges Passwort und lass den Beispielwert change-me nicht stehen. Das Passwort wird nur beim Anlegen des Datenverzeichnisses gesetzt. Um es in einer bestehenden Datenbank zu ändern, brauchst du ein ALTER USER in PostgreSQL.
DATABASE_URL
postgresql://fedisuite:passwort@db:5432/fedisuite
Pflicht
Verbindungszeichenfolge, über die FediSuite die Datenbank erreicht. Format: postgresql://BENUTZER:PASSWORT@HOSTNAME:PORT/DATENBANK. Der Hostname ist db, so heißt der Datenbankcontainer im Docker-Netzwerk. Benutzer, Passwort und Datenbankname müssen den POSTGRES_*-Werten entsprechen. Sonderzeichen im Passwort (zum Beispiel @, / oder :) müssen URL-kodiert werden. Am einfachsten ist ein Passwort aus Buchstaben und Ziffern.
meinSicheresPasswort99, lautet die DATABASE_URL:postgresql://fedisuite:meinSicheresPasswort99@db:5432/fedisuite
Docker Image
FEDISUITE_IMAGE
christinloehner/fedisuite:latest
Pflicht
Legt fest, welches Docker-Image app, worker1 und worker2 nutzen. Der Wert hat die Form IMAGENAME:TAG. Fehlt die Variable, nimmt die Compose-Datei christinloehner/fedisuite:latest. Die Tags liegen auf Docker Hub (öffnet in neuem Tab).
christinloehner/fedisuite:latest
Die jeweils aktuelle Version für linux/amd64. Standard in der Vorlage.
christinloehner/fedisuite:2.0.0
Eine bestimmte Version festnageln (Beispiel). Sinnvoll, wenn du Updates bewusst steuern willst.
christinloehner/fedisuite:arm64-latest
Die jeweils aktuelle Version für linux/arm64, zum Beispiel für ARM-Server oder einen Raspberry Pi.
christinloehner/fedisuite:arm64-2.0.0
Eine bestimmte Version für ARM64 (Beispiel).
MAJOR.MINOR.PATCH. Jeder Release-Tag durchläuft vor der Veröffentlichung ein Release-Gate, das erfolgreiche Tests voraussetzt. Was sich ändert, steht im Changelog (öffnet in neuem Tab). Den Ablauf eines Updates beschreibt die Seite Updates.
App-Konfiguration
APP_URL
https://fedisuite.deine-domain.de
Pflicht
Die vollständige öffentliche URL deiner Instanz, mit https:// und ohne abschließenden Schrägstrich. FediSuite baut daraus Links in E-Mails und die OAuth-Rückkehradresse (APP_URL/api/auth/fediverse/callback). Stimmt sie nicht mit der echten Domain überein, schlägt das Verbinden von Konten fehl. Ohne Angabe gilt http://localhost:3000.
JWT_SECRET
(langer zufälliger String)
Pflicht
Geheimer Schlüssel, mit dem FediSuite Login-Tokens signiert. Er verschlüsselt außerdem die gespeicherten Zwei-Faktor-Geheimnisse und das Geheimnis für das Instanzverzeichnis. Wer ihn kennt, kann Tokens fälschen. Er muss deshalb lang, zufällig und geheim sein. FediSuite verlangt keine Mindestlänge, ohne den Wert startet der Prozess aber nicht. Ändere ihn nach dem Start nicht mehr: Alle Logins werden ungültig, und gespeicherte Zwei-Faktor-Geheimnisse lassen sich nicht mehr entschlüsseln.
JWT_SECRET generieren
openssl rand -hex 64
Führe den Befehl auf deinem Server aus und trage die Ausgabe als Wert für JWT_SECRET ein.
ACCOUNT_ENCRYPTION_KEY
Pflicht ab 2.0.0
Eigener 32-Byte-Schlüssel für die Verschlüsselung von Zugangstokens und Client-Secrets verbundener Fediverse-Konten. Er muss aus genau 64 Hex-Zeichen bestehen, unabhängig vom JWT_SECRET sein und bei App und Workern identisch ankommen. Erzeuge ihn einmalig mit openssl rand -hex 32, trage ihn in .env ein und sichere ihn getrennt und verschlüsselt. Beim ersten 2.0-Start werden vorhandene Zugangsdaten migriert. Ein fehlender, ungültiger oder falscher Schlüssel verhindert den Start beziehungsweise das Entschlüsseln; nach der Migration darfst du ihn nicht austauschen.
APP_NAME
FediSuite
Optional
Anzeigename der Instanz, zum Beispiel in E-Mails und im Standard-User-Agent. Standard: FediSuite.
PUBLIC_SITE_URL
https://fedisuite.deine-domain.de
Optional
Öffentliche Adresse der Instanz für den Standard-User-Agent und den Eintrag im Instanzverzeichnis. Standard: der Wert von APP_URL. In den meisten Fällen kannst du sie weglassen oder gleich APP_URL setzen.
Admin-Account
Beim Start der app prüft FediSuite, ob es einen Benutzer mit der Adresse aus ADMIN_EMAIL gibt. Wenn nicht, legt es ihn mit ADMIN_PASSWORD als bestätigten Administrator an. Gibt es ihn schon, bleibt das Passwort unverändert, und der Benutzer behält oder erhält die Admin-Rolle.
ADMIN_EMAIL
admin@deine-domain.de
Pflicht
E-Mail-Adresse des Admin-Accounts. Mit dieser Adresse meldest du dich nach der Installation an. Trägst du später eine andere Adresse ein, legt der nächste Start einen zweiten Admin dafür an.
ADMIN_PASSWORD
sicheres-admin-passwort
Pflicht
Passwort des Admin-Accounts. Wähle ein starkes Passwort. Nach dem ersten Login kannst du es in den Einstellungen jederzeit ändern. Ein Ändern dieser Variable bei einem bestehenden Account hat keine Wirkung.
ADMIN_PASSWORD (oder ADMIN_EMAIL) beim ersten Start, wird kein Admin angelegt, und du kannst dich nicht anmelden. Trage beide Werte ein, bevor du zum ersten Mal docker compose up -d ausführst. Nachträglich holst du den Admin nach, indem du die Werte setzt und die App neu startest.
E-Mail (SMTP)
FediSuite verschickt E-Mails für die Registrierung (Bestätigung), den Passwort-Reset, die Zwei-Faktor-Anmeldung per E-Mail und Abläufe rund um den historischen Import nach dem Verbinden von Konten. Ohne funktionierende SMTP-Konfiguration sind diese Funktionen nicht nutzbar. SMTP ist deshalb für den Betrieb Pflicht.
SMTP_HOST
smtp.dein-anbieter.de
Pflicht
Hostname des SMTP-Servers deines E-Mail-Anbieters. Ohne Angabe verwendet FediSuite localhost.
SMTP_PORT
587
Pflicht
Port des SMTP-Servers. Bei 465 verwendet FediSuite sofort TLS. Bei jedem anderen Port, zum Beispiel 587, wird die Verbindung per STARTTLS verschlüsselt, sofern der Server es anbietet. Ohne Angabe gilt 1025.
SMTP_USER
no-reply@deine-domain.de
Pflicht
Benutzername für die SMTP-Anmeldung, oft die Absenderadresse.
SMTP_PASS
dein-smtp-passwort
Pflicht
Passwort für die SMTP-Anmeldung. Manche Anbieter verlangen ein eigenes App-Passwort statt des Konto-Passworts.
SMTP_FROM
no-reply@deine-domain.de
Pflicht
Absenderadresse der E-Mails. Sie muss in der Regel zur Domain deines SMTP-Kontos passen, sonst lehnen Empfangsserver die Mails ab. Ohne Angabe nutzt FediSuite "APP_NAME" <no-reply@HOST> mit dem Host aus APP_URL.
Registrierung & Netzwerk
ENABLE_USER_REGISTRATION
true
Optional
Steuert, ob sich neue Nutzer*innen über die Registrierungsseite anmelden können. Standard ist true (offen). Für eine private Instanz setzt du false.
ENABLE_USER_REGISTRATION=true
Öffentliche Instanz: Jede Person kann sich registrieren.
ENABLE_USER_REGISTRATION=false
Private Instanz: Keine Registrierung möglich. Der Admin aus ADMIN_EMAIL wird trotzdem angelegt.
OUTBOUND_HTTP_USER_AGENT
Optional
User-Agent-Header für alle ausgehenden HTTP-Anfragen, etwa an Fediverse-Server. Standard: Mozilla/5.0 (compatible; APP_NAME/1.0; +PUBLIC_SITE_URL). Mit einer erreichbaren URL im Header können Betreiber*innen fremder Instanzen dich bei Problemen kontaktieren.
OUTBOUND_HTTP_USER_AGENT=Mozilla/5.0 (compatible; FediSuite/1.0; +https://deine-domain.de)
TRUST_PROXY1 (Server-Standard)Anzahl vertrauenswürdiger Reverse-Proxys vor der App. Sie bestimmt die Client-IP für Rate-Limits, Audit-Logs und Sitzungen. Bei direkt erreichbarem Port 3000 0 setzen; hinter genau einem vertrauenswürdigen Proxy wie Traefik 1. Der Server akzeptiert auch false, true oder eine kommagetrennte Liste vertrauenswürdiger Adressen/Netze. true bei direktem Zugriff vermeiden: Clients könnten ihre IP über Weiterleitungs-Header fälschen.
ALLOW_PRIVATE_INSTANCE_URLS
false
Optional
Standardmäßig verweigert FediSuite Verbindungen in private Netze (Loopback, private Adressbereiche, Link-Local-Adressen wie der Cloud-Metadatendienst). Die Prüfung läuft bei jedem Verbindungsaufbau, auch bei Weiterleitungen. Setze true nur, wenn eine verbundene Instanz in deinem eigenen Netz läuft, etwa eine Testinstanz neben dem Server. Auf Servern, die nur öffentliche Instanzen anbinden, lässt du die Variable ungesetzt.
OUTBOUND_HTTP_TIMEOUT_MS
60000
Optional
Allgemeines Zeitlimit in Millisekunden für ausgehende HTTP-Anfragen (mindestens 1000). Einzelne Abläufe wie die Reichweiten-Berechnung setzen kürzere eigene Limits.
Funktionsschalter
Die größeren Funktionen von FediSuite 2.0 lassen sich einzeln abschalten. Alle sind standardmäßig an. Mit false (auch 0, no, off) verschwindet die Funktion in der Web-Oberfläche und den Apps, und die zugehörigen API-Routen antworten mit 404. Gesetzt werden sie in der .env.
ENABLE_DRAFTS
true
Optional
Entwürfe: Beiträge ohne Zeitpunkt, die der Scheduler nie veröffentlicht, mit Phase (Idee, in Arbeit, bereit) und Entwurfs-Tab bei den Beiträgen.
ENABLE_CONTENT_CALENDAR
true
Optional
Content-Kalender: Monats- und Wochenansicht der Beiträge mit Filtern und Verschieben per Drag-and-drop.
ENABLE_CONTENT_LABELS
true
Optional
Labels und Kampagnen: interne Markierungen für Beiträge, die nie veröffentlicht oder zu Hashtags werden.
ENABLE_CONTENT_RECYCLING
true
Optional
Wiederverwendung: Archivbeiträge als neuen Entwurf übernehmen, Hinweis „Wieder interessant“, Evergreen-Sammlung und Warnung vor ähnlichen Beiträgen.
ENABLE_CONTENT_INTELLIGENCE
true
Optional
Inhaltsanalyse: Tab „Inhalte“ in der Analyse, Hinweise im Composer und Zeitfenster-Markierungen im Kalender.
ENABLE_COMMUNITY_INTELLIGENCEtrueZeigt die Community-Analyse und aktiviert ihre API. Sie unterscheidet interagierende, neue und wiederkehrende Konten anhand gespeicherter Interaktionen. Mit false wird die Funktion ausgeblendet; die Aufbewahrung der Interaktionsdaten regelt separat ENGAGEMENT_RETENTION_DAYS.
Worker-Variablen (in docker-compose.yml)
Diese Variablen stehen in der mitgelieferten Compose-Datei pro Service und steuern, welche Hintergrundaufgaben ein Container übernimmt. Sie lassen sich auch in der .env setzen, wirken aber nur in Containern, in deren environment-Block sie nicht überschrieben werden. Die Rollenverteilung erklärt die Seite Konfiguration.
ENABLE_SCHEDULER
Standard: true
Veröffentlicht fällige geplante Beiträge (jede Minute) und gleicht, falls veröffentlicht, die Instanzliste ab. In der Compose-Datei nur in worker1 an. Mehrere Scheduler würden Beiträge nicht doppelt posten (jeder Beitrag wird atomar beansprucht), sind aber überflüssig.
ENABLE_POSTS_REFRESH
Standard: true
Aktualisiert regelmäßig Konten und Beitragszahlen. Kann in mehreren Containern laufen.
ENABLE_REACH_REFRESH
Standard: true
Arbeitet die Warteschlange für die Reichweiten-Berechnung ab. Die Compose-Datei setzt es nicht, daher läuft es in jedem Container.
ENABLE_IDLE_REMINDER
Standard: true
Sendet die einmalige Erinnerung an Nutzer*innen, die nach 48 Stunden noch kein Fediverse-Konto verbunden haben. In der Compose-Datei nur in worker1 an.
ENABLE_TIPS_ENGINE
Standard: true
Erzeugt alle sechs Stunden die Tipps für verbundene Konten. Kann in mehreren Containern laufen.
WORKER_ID
Standard: Hostname des Containers
Eindeutiger Name des Containers, zum Beispiel worker-1. Er erscheint in den Logs und bei Sperren und Warteschlangen.
REFRESH_BATCH_SIZE
Standard: 10
Wie viele Konten ein Worker pro Durchlauf (alle 60 Sekunden) aktualisiert, 1 bis 50. Die Compose-Datei setzt 5. Niedrigere Werte schonen die Server der Fediverse-Instanzen, höhere arbeiten viele Konten schneller ab.
PLUGINS_ENABLED
Standard: true
Schaltet das Plugin-System ein oder aus. Bei false bleibt die Plugin-Registry leer.
PLUGIN_SCAN_ON_START
Standard: true
Durchsucht beim Start den Ordner /app/plugins nach Plugins. Bei false wird der Scan übersprungen.
PLUGIN_API_VERSION
Standard: 1
Plugin-API-Version der Instanz. Plugins deklarieren in ihrer plugin.json, mit welcher Version sie laufen. Lass den Wert bei 1.
ENGAGEMENT_RETENTION_DAYS730 · Bereich 90 bis 36500Aufbewahrungsdauer für Interaktionen anderer Fediverse-Konten in der Community-Analyse. Eine stündliche Bereinigung entfernt ältere Datensätze in Batches; eine kürzere Frist verkürzt auch die auswertbare Historie. Ungültige Werte fallen auf 730 Tage zurück, Werte außerhalb des Bereichs werden begrenzt. Die Frist sollte zur Datenschutzerklärung passen.
PLUGIN_DIR (veraltet)Ältere Changelog-Einträge erwähnen diese Variable, aktuelle Images ignorieren sie jedoch. Das Plugin-Verzeichnis ist fest /app/plugins. Das Plugin-Repository in allen App- und Worker-Containern dort einbinden; PLUGINS_ENABLED und PLUGIN_SCAN_ON_START steuern das Laden.
Erweiterte Einstellungen
Diese Variablen sind optional. Die Standardwerte passen für die meisten Instanzen. Zahlenwerte außerhalb des angegebenen Bereichs werden auf die nächste Grenze gesetzt, ein fehlender oder ungültiger Wert fällt auf den Standard zurück. Zeitangaben sind in Millisekunden.
Aktualisierung der Konten
REFRESH_ACCOUNT_TIMEOUT_MS
Standard 45000 · Bereich ≥ 5000
Zeit, nach der die Aktualisierung eines einzelnen Kontos aufgegeben wird.
REFRESH_FAILURE_THRESHOLD
Standard 5 · Bereich ≥ 1
Wie viele Fehlschläge hintereinander ein Konto als „Neu verbinden“ oder „nicht erreichbar“ markieren.
STALE_POST_REFRESH_BATCH_SIZE
Standard 10 · Bereich 0 bis 50
Wie viele der am längsten nicht abgerufenen Beiträge jede stündliche Aktualisierung eines Kontos erneut liest, damit die Zähler alter Beiträge aktuell bleiben. 0 schaltet die Rotation ab.
STALE_POST_REFRESH_MIN_AGE_DAYS
Standard 7 · Bereich 1 bis 365
Mindestalter des letzten Abrufs in Tagen, ab dem ein Beitrag zur Rotation gehört.
SLOW_REFRESH_LOG_MS
Standard 20000 · Bereich 1000 bis 600000
Ab dieser Dauer wird die Aktualisierung eines Kontos mit den Zeiten aller Schritte und Anfragen protokolliert. Läuft sie in ihr Zeitlimit, wird sie immer so protokolliert.
Reichweite
REACH_WORKER_BATCH_SIZE
Standard 12 · Bereich 1 bis 50
Aufträge, die ein Worker pro Durchlauf aus der Warteschlange holt.
REACH_REFRESH_INTERVAL_MS
Standard 10000 · Bereich 1000 bis 60000
Wie oft jeder Prozess die Warteschlange prüft.
REACH_MAX_CONCURRENT_PER_INSTANCE
Standard 6 · Bereich 1 bis 20
Gleichzeitige Anfragen pro fremder Instanz, über alle Worker hinweg. Schützt kleine Instanzen vor Überlast.
REACH_PARALLEL_INSTANCES
Standard 4 · Bereich 1 bis 12
Wie viele Instanzen ein Worker gleichzeitig abfragt.
REACH_QUEUE_PER_ACCOUNT_LIMIT
Standard 80 · Bereich 1 bis 200
Höchstzahl offener Aufträge pro Konto in der Warteschlange.
REACH_QUEUE_LOOKBACK_DAYS
Standard 90 · Bereich ≥ 1
Zeitraum in Tagen, für den wiederholte Berechnungen angestoßen werden. Fehlende Reichweiten-Daten werden unabhängig vom Alter nachgetragen.
REACH_RECALCULATE_AFTER_HOURS
Standard 24 · Bereich 1 bis 720
Nach wie vielen Stunden ein Beitrag mit unveränderten Zählern erneut berechnet wird. Ändern sich die Zähler, geschieht es sofort.
REACH_MAX_REBLOGGER_PAGES
Standard 5 · Bereich 1 bis 10
Wie viele Seiten (je 80) der Boost-Liste eines Beitrags gelesen werden.
REACH_JOB_TIMEOUT_MS
Standard 60000 · Bereich 10000 bis 600000
Zeitlimit pro Auftrag. Danach wird er aufgegeben und später erneut versucht.
REACH_JOB_REQUEST_TIMEOUT_MS
Standard 10000 · Bereich 1000 bis 60000
Zeitlimit pro einzelner Anfrage innerhalb eines Auftrags.
REACH_JOB_MAX_RATE_LIMIT_WAIT_MS
Standard 15000 · Bereich 0 bis 300000
Längste Wartezeit auf ein Rate-Limit. Verlangt eine Instanz mehr, werden ihre Aufträge zurückgestellt, statt zu warten.
REACH_RETRY_BASE_MS
Standard 300000 · Bereich ≥ 1000
Basiswartezeit vor einem erneuten Versuch fehlgeschlagener Aufträge (wächst exponentiell).
Weitere
MASTODON_MEDIA_PROCESSING_TIMEOUT_MS
Standard 120000 · Bereich ≥ 10000
Wie lange FediSuite nach einem Upload auf die Medienverarbeitung einer Mastodon-Instanz wartet, bevor der Beitrag angelegt wird.
MASTODON_MEDIA_PROCESSING_POLL_MS
Standard 2000 · Bereich ≥ 500
Abstand der Abfragen während dieses Wartens.
AUDIT_LOG_DIR
Standard /app/logs
Verzeichnis im Container für die Audit-Logs. Ändere es nur zusammen mit dem Volume.
FEDISUITE_REGISTRY_URL
Standard https://www.fedisuite.com/api/instances
Adresse des Instanzverzeichnisses, mit dem sich die Instanz auf Wunsch abgleicht (Admin-Bereich). Nur für eigene Verzeichnisse ändern.
FEDISUITE_REGISTRY_TIMEOUT_MS
Standard 30000 · Bereich ≥ 5000
Zeitlimit für Anfragen an das Instanzverzeichnis. Langsame Server (zum Beispiel ein Raspberry Pi) brauchen dort manchmal mehr Zeit.