Plugins installieren
Plugins erweitern FediSuite um zusätzliche Funktionen, zum Beispiel um Bluesky als weitere Plattform. Die Installation läuft über Docker und erfordert keine Programmierkenntnisse.
Auf dieser Seite
Was sind Plugins?
Plugins sind optionale Erweiterungen für FediSuite. Jedes Plugin ist ein Ordner mit einer plugin.json. Alle Plugin-Ordner liegen im Verzeichnis plugins/ neben der docker-compose.yml und werden per Volume nach /app/plugins in die Container eingebunden. Das Docker-Image bleibt unverändert, FediSuite lässt sich also unabhängig von den Plugins aktualisieren.
Die Plugins werden im Repository FediSuite/FediSuite-Plugins-Repository (öffnet in neuem Tab) auf Forgejo gepflegt. Ein einziges git clone holt alle darin enthaltenen Plugins. Neu erkannte Plugins sind zunächst deaktiviert. Aktiv wird nur, was ein Admin in der Plugin-Verwaltung einschaltet.
Im Repository enthalten
fedisuite-plugin-bluesky
v1.0.0
Bluesky als zusätzliche Plattform: Konto verbinden (Handle, App-Passwort, optional eigener PDS-Host), Beiträge veröffentlichen, Verlauf importieren sowie Statistiken und Beiträge aktualisieren.
my-plugin
Vorlage
Beispiel für Plugin-Entwickler*innen, erzeugt mit dem Scaffold (eine einfache Admin-Seite). Es erscheint nach dem Klonen ebenfalls in der Plugin-Verwaltung, wird im Betrieb aber nicht gebraucht und muss nicht aktiviert werden.
Voraussetzungen
Bevor Du Plugins installierst, sollte FediSuite bereits laufen und Folgendes vorhanden sein:
Das Self-Hosting-Repository ist eingerichtet, docker-compose.yml und .env sind konfiguriert und die Container laufen. Wie das geht, steht unter Docker-Installation.
Die Befehle auf dieser Seite verwenden docker compose. Plugins brauchen darüber hinaus keine zusätzliche Software auf dem Server.
Zum Klonen und Aktualisieren des Plugin-Repositories. Prüfen mit: git --version
Du musst im Ordner mit der docker-compose.yml einen Unterordner anlegen können.
Plugins lassen sich nur im Admin-Bereich aktivieren und deaktivieren.
Plugin-Repository klonen
Wechsle in Deinen FediSuite-Installationsordner, also dorthin, wo die docker-compose.yml liegt, und klone das Plugin-Repository als Unterordner mit dem Namen plugins:
cd /pfad/zu/deinem/fedisuite-ordner
git clone https://forge.chrislo.de/FediSuite/FediSuite-Plugins-Repository.git plugins
plugins heißen. Die docker-compose.yml des Self-Hosting-Repositories bindet ./plugins ein. Ohne den Zielnamen am Ende des Befehls legt git clone den Ordner FediSuite-Plugins-Repository an, und der Mount läuft ins Leere. Ein bereits vorhandener leerer Ordner plugins ist dagegen unproblematisch, git clone füllt ihn.
Prüfe anschließend, ob der Ordner korrekt angelegt wurde:
ls -la plugins/
Darin sollten unter anderem diese Einträge stehen:
.git/
LICENSE
PLUGIN-AUTHORING.de.md
PLUGIN-AUTHORING.md
README.de.md
README.md
fedisuite-plugin-bluesky/
my-plugin/
Die Ordnerstruktur sieht danach so aus:
Ordnerstruktur
fedisuite/
├── .env
├── docker-compose.yml
├── logs/
├── postgres/
├── uploads/
└── plugins/ ← neu geklont
├── .git/
├── fedisuite-plugin-bluesky/
│ └── plugin.json
├── my-plugin/
│ └── plugin.json
├── README.md
└── README.de.md
docker-compose.yml prüfen
Damit die Container den Ordner plugins sehen, muss er als Volume eingebunden sein. Die docker-compose.yml aus dem Self-Hosting-Repository enthält den Mount bereits bei den drei Services app, worker1 und worker2 und setzt außerdem die Plugin-Variablen. Alle drei Container lesen den Plugin-Ordner beim Start selbst ein, deshalb braucht jeder von ihnen den Mount.
So sieht der Auszug für app in der Standard-Datei aus (bei worker1 und worker2 stehen dieselben Plugin-Zeilen):
app:
image: ${FEDISUITE_IMAGE:-christinloehner/fedisuite:latest}
...
environment:
- PLUGINS_ENABLED=true
- PLUGIN_SCAN_ON_START=true
- PLUGIN_API_VERSION=1
...
volumes:
- ./uploads:/app/uploads
- ./plugins:/app/plugins
- ./logs:/app/logs
Was bedeuten diese Einträge?
./plugins
Der Ordner auf Deinem Server, den Du in Schritt 1 geklont hast. Der Punkt steht für das Verzeichnis, in dem die docker-compose.yml liegt.
/app/plugins
Der Pfad im Container, in dem FediSuite nach Plugins sucht. Dieser Pfad ist fest vorgegeben und darf nicht verändert werden.
PLUGINS_ENABLED
Schaltet das Plugin-System ein (Standard: true). Mit false (auch 0, no oder off) lädt FediSuite keine Plugins.
PLUGIN_SCAN_ON_START
Liest den Plugin-Ordner beim Start ein (Standard: true). Mit false wird er nicht gelesen, und es werden keine Plugins geladen.
PLUGIN_API_VERSION
Die Plugin-API-Version, die diese FediSuite-Version erwartet (aktuell 1). Plugins mit einer anderen Version werden abgelehnt. Den Wert solltest Du nicht ändern.
Mit diesem Befehl prüfst Du, ob der Mount aktiv ist. Die Ausgabe nennt für jeden der drei Services den Pfad zu plugins und das Ziel /app/plugins:
docker compose config | grep plugins
- ./plugins:/app/plugins im Abschnitt volumes: von app, worker1 und worker2 hinzu und übernimm die drei Plugin-Variablen aus dem Beispiel oben in den jeweiligen environment:-Abschnitt. Einen Mount in den db-Container brauchst Du nicht.
FediSuite neu starten
FediSuite liest den Plugin-Ordner nur beim Start der Container ein. Nach dem Klonen müssen deshalb app, worker1 und worker2 neu starten. Wenn die Compose-Datei bereits den Mount enthielt und Du sie nicht geändert hast, reicht ein Neustart dieser Container:
docker compose restart app worker1 worker2
Hast Du die docker-compose.yml geändert (zum Beispiel den Mount ergänzt), lies sie mit diesem Befehl neu ein. Er erstellt die betroffenen Container neu:
docker compose up -d
Was beim Start passiert:
- 1 Die Container starten und lesen den Ordner /app/plugins ein. Der db-Container bleibt unberührt.
- 2 FediSuite sucht in jedem Unterordner nach einer plugin.json. Ordner ohne diese Datei, zum Beispiel .git, werden übersprungen.
- 3 Das Manifest jedes Plugins wird geprüft: Pflichtfelder, Plugin-API-Version, Berechtigungen und Pfade.
- 4 Neue Plugins werden in der Datenbank eingetragen und zunächst als deaktiviert geführt. Bereits aktivierte Plugins werden gestartet.
docker compose up -d: Die Compose-Datei des Self-Hosting-Repositories setzt pull_policy: always. Der Befehl zieht daher auch ein neueres FediSuite-Image und aktualisiert FediSuite dabei mit. Wenn Du nur Plugins neu einlesen willst, nimm docker compose restart app worker1 worker2, oder lege in der .env einen festen Image-Tag fest.
Plugin aktivieren
Erkannte Plugins sind nach der Installation ausgeschaltet. Melde Dich als Admin an, öffne in der Seitenleiste Admin-Bereich / Plugins und klicke beim gewünschten Plugin auf Aktivieren. Das Plugin startet sofort in der laufenden Anwendung, ein Neustart ist für die Weboberfläche nicht nötig. Details dazu stehen unter Plugin-Verwaltung.
docker compose restart worker1 worker2. Dasselbe gilt nach dem Deaktivieren.
Installation prüfen
Nach dem Neustart siehst Du in der FediSuite-Oberfläche oder in den Container-Logs, ob die Plugins erkannt wurden.
Option 1: Über die FediSuite-Oberfläche
FediSuite im Browser öffnen und als Admin anmelden.
In der Seitenleiste den Bereich „Admin-Bereich“ und darin den Eintrag „Plugins“ öffnen.
Die Plugins aus dem Ordner sollten als Karten aufgelistet sein, nach der ersten Installation mit dem Status „Deaktiviert“.
Bei einem Eintrag mit dem Status „Fehler“ steht die Ursache in den aufgeklappten Details.
Option 2: Über die Container-Logs
docker compose logs app | grep -i plugin
Nach dem Scan meldet FediSuite zum Beispiel Plugin discovery finished. 2 plugin directory/directories scanned. Die Zahl nennt die gefundenen Ordner mit einer plugin.json. Fehlt der Mount ganz, steht dort stattdessen Plugin directory /app/plugins does not exist. Ist das Plugin-System über PLUGINS_ENABLED oder PLUGIN_SCAN_ON_START abgeschaltet, nennt eine Meldung die jeweilige Variable. Warum ein einzelnes Plugin nicht startet, steht nicht in den Logs, sondern als Fehlermeldung in den aufgeklappten Details der Plugin-Verwaltung.
docker compose ps # laufen alle Container?
docker compose config | grep plugins # ist der Plugin-Mount aktiv?
docker compose exec app ls /app/plugins # was sieht der Container?
Plugin-Updates einspielen
Da der Plugin-Ordner ein Git-Repository ist, holt git pull alle Änderungen. Danach müssen die Container neu starten, denn Plugins werden erst beim Start neu eingelesen. Ein einfaches docker compose up -d startet unveränderte Container nicht neu und reicht deshalb nicht.
cd plugins
git pull
cd ..
docker compose restart app worker1 worker2
docker compose pull && docker compose up -d), bleibt der Ordner plugins/ unverändert. Bringt eine neue FediSuite-Version eine andere Plugin-API-Version mit, werden ältere Plugins abgelehnt und erscheinen mit dem Status „Fehler“, bis Du sie aktualisierst.
Plugin entfernen oder abschalten
Es gibt drei Wege: ein einzelnes Plugin deaktivieren, ein einzelnes Plugin dauerhaft löschen oder das gesamte Plugin-System abschalten.
Einzelnes Plugin deaktivieren
Klicke in der Plugin-Verwaltung beim Plugin auf „Deaktivieren“. Die Dateien bleiben liegen, und Du kannst das Plugin jederzeit wieder aktivieren. Das ist der Normalfall, wenn Du ein Plugin nur eine Zeit lang nicht brauchst.
Einzelnes Plugin dauerhaft entfernen
Deaktiviere das Plugin zuerst in der Plugin-Verwaltung, lösche dann den Plugin-Ordner und starte die Container neu. Der Befehl rm -rf löscht den Ordner unwiderruflich, prüfe den Pfad also vorher. Beim nächsten Start taucht das Plugin nicht mehr in der Plugin-Verwaltung auf.
rm -rf plugins/fedisuite-plugin-bluesky
docker compose restart app worker1 worker2
Das gesamte Plugin-System abschalten
Setze in der docker-compose.yml bei app, worker1 und worker2 die Variable PLUGINS_ENABLED auf false. Der Plugin-Ordner und der Mount können bleiben, FediSuite lädt dann aber keine Plugins mehr.
environment:
- PLUGINS_ENABLED=false # vorher: true
docker compose up -d
Fehlerbehebung
Wenn ein Plugin nach der Installation nicht in der Plugin-Verwaltung erscheint, gehe diese Checkliste durch:
Checkliste: Plugin taucht nicht auf
- Der Ordner heißt exakt plugins und liegt neben der docker-compose.yml (nicht FediSuite-Plugins-Repository oder ähnlich).
- Der Volume-Mount ./plugins:/app/plugins ist bei app, worker1 und worker2 eingetragen.
- PLUGINS_ENABLED und PLUGIN_SCAN_ON_START stehen nicht auf false.
- Die Container wurden nach dem Klonen oder Ändern neu gestartet, denn Plugins werden nur beim Start eingelesen.
- Direkt im Plugin-Unterordner liegt eine plugin.json (ls plugins/fedisuite-plugin-bluesky/). Eine zusätzliche Ordnerebene dazwischen wird nicht gefunden.
- Das Plugin ist in der Plugin-Verwaltung aktiviert. Seiten, Widgets und Konnektoren eines Plugins erscheinen erst, wenn es aktiv ist.
Häufige Fehlerquellen im Überblick
docker compose restart app worker1 worker2 und danach docker compose exec app ls /app/plugins
Fehlermeldung in den aufgeklappten Details der Plugin-Verwaltung lesen, Plugin mit git pull aktualisieren und neu starten
mv FediSuite-Plugins-Repository plugins oder neu klonen mit: git clone … plugins
docker compose config zeigt Syntaxfehler
docker compose restart worker1 worker2
ls -la plugins/ # Ordner vorhanden und Inhalt korrekt?
ls -la plugins/fedisuite-plugin-bluesky/ # plugin.json vorhanden?
docker compose config | grep plugins # Volume-Mount konfiguriert?
docker compose ps # alle Container laufen?
docker compose exec app ls /app/plugins # was sieht der Container?
docker compose logs app # App-Logs auf Fehler prüfen
docker compose logs app | grep -i plugin # gezielt nach Plugin-Meldungen suchen