Docker-Installation
FediSuite wird vollständig über Docker Compose betrieben. Du benötigst Docker, das Self-Hosting-Repository und eine .env-Datei mit deinen Einstellungen. Nichts wird lokal gebaut, das fertige Image kommt von Docker Hub.
Auf dieser Seite
Repository klonen
Klone das Self-Hosting-Repository auf deinen Server. Es enthält die docker-compose.yml, die .env.example und ein Beispiel für Traefik. Ohne Zielnamen im Befehl hieße der Ordner FediSuite-Self-Hosting, hier heißt er fedisuite.
git clone https://forge.chrislo.de/FediSuite/FediSuite-Self-Hosting.git fedisuite
cd fedisuite
.env konfigurieren
Kopiere die Beispiel-Konfiguration und passe sie an. Alle Pflichtfelder müssen gesetzt sein, bevor du den Stack startest, insbesondere ADMIN_EMAIL und ADMIN_PASSWORD. Daraus legt FediSuite beim Start den ersten Admin-Account an.
cp .env.example .env
nano .env
Pflichtfelder
FEDISUITE_IMAGE
christinloehner/fedisuite:latest
Docker-Image, das genutzt wird. latest ist die jeweils aktuelle Version für amd64, auf ARM64-Servern gilt arm64-latest. Einen Tag wie 2.0.0 kannst du fest eintragen.
APP_URL
https://deine-domain.de
Vollständige öffentliche URL deiner FediSuite-Instanz inkl. https://, ohne abschließenden Schrägstrich.
JWT_SECRET
(langer zufälliger String)
Geheimschlüssel für Login-Tokens. Verschlüsselt außerdem gespeicherte 2FA-Geheimnisse. Niemals weitergeben oder committen und nach dem Start nicht mehr ändern.
POSTGRES_DB
fedisuite
Name der PostgreSQL-Datenbank.
POSTGRES_USER
fedisuite
Datenbankbenutzer.
POSTGRES_PASSWORD
sicheres-passwort
Datenbankpasswort. Wähle ein langes, zufälliges Passwort.
DATABASE_URL
postgresql://fedisuite:passwort@db:5432/fedisuite
Vollständige PostgreSQL-Verbindungszeichenfolge. Muss zu den POSTGRES_*-Werten passen.
ADMIN_EMAIL
admin@deine-domain.de
E-Mail des ersten Admin-Accounts. Der Account wird beim Start angelegt, falls es ihn noch nicht gibt.
ADMIN_PASSWORD
sicheres-admin-passwort
Passwort des ersten Admin-Accounts. Fehlt dieser Wert, wird kein Admin angelegt und ein Login ist nicht möglich.
SMTP_HOST
smtp.dein-anbieter.de
SMTP-Server für ausgehende E-Mails.
SMTP_PORT
587
SMTP-Port (typischerweise 587 für STARTTLS oder 465 für SSL).
SMTP_USER
dein-smtp-benutzer
Benutzername für die SMTP-Authentifizierung.
SMTP_PASS
dein-smtp-passwort
Passwort für die SMTP-Authentifizierung.
SMTP_FROM
no-reply@deine-domain.de
Absenderadresse für ausgehende E-Mails.
Optionale Felder
APP_NAME
FediSuite
Name der Instanz, z.B. in E-Mails.
PUBLIC_SITE_URL
https://deine-domain.de
Öffentliche URL der Instanz für den Standard-User-Agent und die Instanzliste, falls abweichend von APP_URL.
OUTBOUND_HTTP_USER_AGENT
Mozilla/5.0 (compatible; …)
User-Agent-Header für ausgehende HTTP-Anfragen an Fediverse-Instanzen. Standard: Mozilla/5.0 (compatible; APP_NAME/1.0; +PUBLIC_SITE_URL).
ENABLE_USER_REGISTRATION
true
Auf false setzen, um neue Registrierungen zu sperren. Der Admin aus ADMIN_EMAIL wird trotzdem angelegt.
app prüft FediSuite, ob es einen Benutzer mit der Adresse aus ADMIN_EMAIL gibt. Falls nicht, wird er mit ADMIN_PASSWORD angelegt, andernfalls bleibt das Passwort unverändert. Ein späteres Ändern von ADMIN_PASSWORD in der .env setzt das Passwort also nicht zurück. Fehlt ADMIN_PASSWORD, wird kein Admin angelegt.
localhost:1025 zu erreichen.
Stack starten
Starte alle Container im Hintergrund. Beim ersten Start werden die Images heruntergeladen. Die Datenbank-Initialisierung läuft automatisch ab, separate Migrations-Befehle sind nicht nötig.
docker compose up -d
Der Stack besteht aus vier Services:
db
postgres:15-alpine
PostgreSQL-Datenbank
app
christinloehner/fedisuite:latest
Web-Oberfläche und API. Initialisiert beim Start die Datenbank und meldet über /api/health, ob die App bereit ist
worker1
christinloehner/fedisuite:latest
Hintergrundjobs: Scheduler für geplante Beiträge, Aktualisierung der Beitragszahlen, Erinnerungen, Tipps
worker2
christinloehner/fedisuite:latest
Hintergrundjobs: Aktualisierung der Beitragszahlen, Tipps
Die App lauscht auf Port 3000, den die Compose-Datei auf dem Host veröffentlicht. Über Traefik-Labels in der docker-compose.yml kannst du sie unter deiner Domain erreichbar machen, die Labels sind bereits als Kommentar vorbereitet (siehe Reverse Proxy). Die Worker starten erst, wenn der Healthcheck der app bestanden ist. Wie lange das dauert, steht auf der Seite Konfiguration.
Erster Login
Sobald db und app den Status healthy haben, ist die App erreichbar. Öffne deine Domain (APP_URL) im Browser und melde dich mit den in der .env gesetzten Admin-Zugangsdaten an.
https://deine-domain.de
Login
Wert aus ADMIN_EMAIL
Passwort
Wert aus ADMIN_PASSWORD
docker compose up -d startet zuerst db. Sobald der Healthcheck besteht, startet app und initialisiert die Datenbank. Die Worker folgen, wenn app healthy ist. Du kannst den Fortschritt mit docker compose logs -f app verfolgen. Nach dem ersten Login empfiehlt sich, in den Einstellungen die Zwei-Faktor-Authentifizierung für den Admin-Account einzurichten.
Status & nützliche Befehle
Status aller Container prüfen
Zeigt alle laufenden Container und ihren Health-Status.
docker compose ps
Logs in Echtzeit verfolgen
Zeigt laufende Log-Ausgaben aller oder einzelner Container.
docker compose logs -f
docker compose logs -f app # nur App
docker compose logs -f worker1 # nur Worker 1
Update auf neuere Version
Lädt neue Images und startet betroffene Container neu. Vorher die Compose-Datei per git pull aktualisieren, siehe Seite Updates.
docker compose pull
docker compose up -d
Health-Endpunkt der App prüfen
Liefert JSON mit status und db, sobald die App läuft und die Datenbank erreichbar ist. Die Compose-Datei nutzt denselben Endpunkt für den Healthcheck.
curl -s http://127.0.0.1:3000/api/health
Konfiguration vor dem Start prüfen
Validiert die docker-compose.yml und zeigt die aufgelöste Konfiguration inkl. .env-Werten.
docker compose config
Stack neu starten
Startet alle Container neu, ohne sie neu zu erstellen. Geänderte .env-Werte werden dabei nicht neu eingelesen. Dafür ist docker compose up -d nötig.
docker compose restart