Plugins

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.

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.

Plugins sind Code: Sie laufen im Hauptprozess von FediSuite, ohne Sandbox und mit denselben Rechten wie die Anwendung selbst. Installiere nur Plugins aus Quellen, denen Du vertraust. Das gilt auch für Plugins, die Du selbst schreibst.

Voraussetzungen

Bevor Du Plugins installierst, sollte FediSuite bereits laufen und Folgendes vorhanden sein:

Laufende FediSuite-Installation Pflicht

Das Self-Hosting-Repository ist eingerichtet, docker-compose.yml und .env sind konfiguriert und die Container laufen. Wie das geht, steht unter Docker-Installation.

Docker und Docker Compose Pflicht

Die Befehle auf dieser Seite verwenden docker compose. Plugins brauchen darüber hinaus keine zusätzliche Software auf dem Server.

Git Pflicht

Zum Klonen und Aktualisieren des Plugin-Repositories. Prüfen mit: git --version

Schreibzugriff auf den FediSuite-Ordner Pflicht

Du musst im Ordner mit der docker-compose.yml einen Unterordner anlegen können.

Ein Konto mit Admin-Rechten Pflicht

Plugins lassen sich nur im Admin-Bereich aktivieren und deaktivieren.

1

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:

bash
cd /pfad/zu/deinem/fedisuite-ordner
git clone https://forge.chrislo.de/FediSuite/FediSuite-Plugins-Repository.git plugins
Wichtig: Der Ordner muss 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:

bash
ls -la plugins/

Darin sollten unter anderem diese Einträge stehen:

Ausgabe (Auszug)
.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
2

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):

yaml
  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:

bash
docker compose config | grep plugins
Eigene oder ältere Compose-Datei: Fehlt der Mount, füge die Zeile - ./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.
3

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:

bash
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:

bash
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.
Achtung bei 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.
4

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.

Worker neu starten: Jeder Container liest den Plugin-Zustand beim Start ein. Damit auch die Worker ein neu aktiviertes Plugin kennen (etwa für geplante Beiträge oder Statistik-Updates), starte sie danach neu: 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

1

FediSuite im Browser öffnen und als Admin anmelden.

2

In der Seitenleiste den Bereich „Admin-Bereich“ und darin den Eintrag „Plugins“ öffnen.

3

Die Plugins aus dem Ordner sollten als Karten aufgelistet sein, nach der ersten Installation mit dem Status „Deaktiviert“.

4

Bei einem Eintrag mit dem Status „Fehler“ steht die Ursache in den aufgeklappten Details.

Option 2: Über die Container-Logs

bash
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.

bash: allgemeiner Statuscheck
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.

bash
cd plugins
git pull
cd ..
docker compose restart app worker1 worker2
Plugin-Updates sind unabhängig von FediSuite-Updates. Wenn Du FediSuite aktualisierst (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.

bash, Beispiel: Bluesky-Plugin entfernen
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.

yaml: Zeile bei app, worker1 und worker2 ändern
    environment:
      - PLUGINS_ENABLED=false    # vorher: true
bash
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

Symptom Ursache Lösung
Plugin fehlt in der Plugin-Verwaltung Container nach dem Klonen nicht neu gestartet, Mount fehlt oder Ordner heißt anders docker compose restart app worker1 worker2 und danach docker compose exec app ls /app/plugins
Eintrag mit Status „Fehler“ Ungültige plugin.json, andere Plugin-API-Version, fehlende Berechtigung oder ein Fehler im Plugin-Code beim Start Fehlermeldung in den aufgeklappten Details der Plugin-Verwaltung lesen, Plugin mit git pull aktualisieren und neu starten
Ordner heißt FediSuite-Plugins-Repository git clone ohne Zielordnernamen aufgerufen mv FediSuite-Plugins-Repository plugins oder neu klonen mit: git clone … plugins
Container startet nicht YAML-Einrückfehler in docker-compose.yml docker compose config zeigt Syntaxfehler
Plugin ist aktiv, wirkt aber nicht bei geplanten Beiträgen oder Aktualisierungen Die Worker wurden seit dem Aktivieren nicht neu gestartet docker compose restart worker1 worker2
bash: Diagnosebefehle
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