Maubot Plugins nach Neustart deaktiviert – meine Lösung

Seit ein paar Wochen hatte ich ein ziemlich nerviges Problem:
Nach jedem Neustart meines Matrix-Stacks waren plötzlich alle Maubot-Plugins deaktiviert. Teilweise sogar die Clients selbst.

Die Folgen waren direkt spürbar.
Keine RSS-Feeds mehr im Chat. Keine automatischen Nachrichten. Und on top konnte ich nicht mal mehr neue Registrierungs-Tokens für meinen Matrix-Server erzeugen.

Einfach alles weg.
Also bin ich der Sache auf den Grund gegangen.

🤖 Was ist Maubot eigentlich?

Kurz erklärt: Maubot ist ein Bot-Framework für Matrix.

Damit kannst Du Dir eigene Bots bauen oder fertige Plugins nutzen, zum Beispiel für:

  • RSS-Feeds in Räume posten
  • Moderationsaufgaben automatisieren
  • Registrierungsprozesse unterstützen
  • Events aus anderen Systemen in Matrix spiegeln
  • Eigene Workflows bauen (ich nutze das zum Beispiel für Feeds und Services)

Maubot besteht aus Clients (Bot-Usern) und Plugins. Und genau diese beiden waren bei mir nach jedem Neustart deaktiviert.

🔍 Die Ursache

Ich habe mich schließlich an die Maubot-Community gewendet. Und die Antwort war überraschend simpel.

Der eigentliche Grund war nicht Maubot selbst.

Mein Matrix Server (Synapse) war beim Start des Docker-Stacks schlicht nicht schnell genug da, während Maubot bereits versuchte sich zum Synapse Server zu verbinden.
Ergebnis: Die Clients konnten sich nicht anmelden. Und ohne eingeloggte Clients werden auch keine Plugins geladen. Das kann man auch gut an den folgenden Logs sehen:

maubot-app  | [2026-01-08 17:29:10,018] [DEBUG@maubot.client.@lisa_bot:techniverse.net] Enabling DecryptionDispatcher
maubot-app  | [2026-01-08 17:29:10,018] [DEBUG@maubot.instance.ntfy_tautulli-plex] Plugin instance dependencies loaded
maubot-app  | [2026-01-08 17:29:10,019] [DEBUG@maubot.client.@margebot:techniverse.net] Enabling DecryptionDispatcher
maubot-app  | [2026-01-08 17:29:10,020] [DEBUG@maubot.instance.alternatingcaps_test] Plugin instance dependencies loaded
maubot-app  | [2026-01-08 17:29:10,021] [DEBUG@maubot.client.@willie_bot:techniverse.net] Enabling DecryptionDispatcher
maubot-app  | [2026-01-08 17:29:10,021] [DEBUG@maubot.instance.maubot_rsvx] Plugin instance dependencies loaded
maubot-app  | [2026-01-08 17:29:10,021] [DEBUG@maubot.instance.registration-token] Plugin instance dependencies loaded
maubot-app  | [2026-01-08 17:29:10,022] [DEBUG@maubot.instance.owncast_notify] Plugin instance dependencies loaded
maubot-app  | [2026-01-08 17:29:10,023] [DEBUG@maubot.client.@comicbookguy_bot:techniverse.net] Enabling DecryptionDispatcher
maubot-app  | [2026-01-08 17:29:10,023] [DEBUG@maubot.instance.rss-feeds] Plugin instance dependencies loaded
maubot-app  | [2026-01-08 17:29:10,024] [DEBUG@maubot.client.@maubot:techniverse.net] Enabling DecryptionDispatcher
maubot-app  | [2026-01-08 17:29:10,024] [DEBUG@maubot.instance.mxc-media] Plugin instance dependencies loaded
maubot-app  | [2026-01-08 17:29:10,025] [DEBUG@maubot.client.@servicebot:techniverse.net] Enabling DecryptionDispatcher
maubot-app  | [2026-01-08 17:29:10,028] [DEBUG@maubot.client.@servicebot:techniverse.net] Not starting disabled client
maubot-app  | [2026-01-08 17:29:10,028] [DEBUG@maubot.client.@margebot:techniverse.net] Not starting disabled client
maubot-app  | [2026-01-08 17:29:10,029] [DEBUG@maubot.client.@maubot:techniverse.net] Not starting disabled client
maubot-app  | [2026-01-08 17:29:10,029] [DEBUG@maubot.client.@lisa_bot:techniverse.net] Not starting disabled client
maubot-app  | [2026-01-08 17:29:10,029] [DEBUG@maubot.client.@comicbookguy_bot:techniverse.net] req #1: GET https://matrix.techniverse.net/_matrix/client/versions None
maubot-app  | [2026-01-08 17:29:10,032] [DEBUG@maubot.client.@willie_bot:techniverse.net] Not starting disabled client
maubot-app  | [2026-01-08 17:29:10,166] [DEBUG@maubot.client.@comicbookguy_bot:techniverse.net] req #1 (/versions) completed in 136.8ms with status 502
maubot-app  | [2026-01-08 17:29:10,167] [WARNING@maubot.client.@comicbookguy_bot:techniverse.net] Failed to get /account/whoami, retrying in 10s: 502: <html>
maubot-app  | <head><title>502 Bad Gateway</title></head>
maubot-app  | <body>
maubot-app  | <center><h1>502 Bad Gateway</h1></center>
maubot-app  | </body>
maubot-app  | </html>

Docker startete zwar brav alle Container, aber eben nicht in der richtigen Reihenfolge mit echtem Bereitschafts-Check.

🩺 Schritt 1: Healthcheck für Synapse hinzufügen

Der erste Fix war ein Healthcheck direkt am Synapse-Container.

So sieht das bei mir aus:

matrix-synapse-app:
  image: git.techniverse.net/scriptos/synapse:v1.145.0-antispam
  healthcheck:
    test: ["CMD", "curl", "-fSs", "http://localhost:8008/health"]
    interval: 15s
    timeout: 5s
    retries: 3
    start_period: 5s

Damit weiß Docker endlich, wann Synapse wirklich einsatzbereit ist und nicht nur läuft.

Warum der Healtcheck bei mir bisher nicht konfiguriert war, weiss ich leider nicht. Man sagte mir in der Community, dass der Healtcheck eigentlich im Standard in der docker-compose.yaml eingetragen sein sollte. Es gibt aber sicherlich mehrere Setups wie meine, weshalb ich das hier dennoch dokumentiere.

⏳ Schritt 2: Maubot erst starten, wenn Synapse gesund ist

Beim Maubot Container habe ich den depends_on-Teil um service_healthy erweitert:

maubot-app:
  image: dock.mau.dev/maubot/maubot:latest
  depends_on:
    matrix-synapse-app:
      condition: service_healthy

Jetzt wartet Maubot so lange, bis Synapse seinen Healthcheck besteht.
Genau das wollte ich erreichen.

Danach einfach:

docker-compose down && docker-compose up -d

Und siehe da:

  • Alle Maubot-Clients waren automatisch eingeloggt
  • Sämtliche Plugins wurden sauber geladen
  • RSS-Feeds liefen wieder
  • Registrierungstokens funktionierten auch wieder

Seitdem hatte ich keinen Ausfall mehr nach einem Neustart.

So simpel kann es manchmal sein.

✅ Mein Fazit

Wenn Du Maubot zusammen mit Synapse betreibst, dann setze unbedingt auf Healthchecks plus depends_on: condition: service_healthy.

Alles andere ist Glücksspiel.

Das ist kein Bug, sondern klassisches Docker-Startup-Verhalten. Aber ohne diesen kleinen Kniff merkst Du es erst, wenn plötzlich nichts mehr automatisiert läuft.

Vielleicht erspart Dir das eine lange Fehlersuche.

👥 Techniverse Community

Lust auf Austausch rund um Matrix, Selfhosting und andere smarte IT-Lösungen?
In der Techniverse Community triffst du Gleichgesinnte, kannst Fragen stellen oder einfach nerdigen Talk genießen. 🚀

👉 Jetzt der Gruppe auf Matrix beitreten
~ Direkte Raumadresse: #community:techniverse.net

👉 Für lockere Gespräche abseits der Kernthemen komm in den Talkraum
~ Direkte Raumadresse: #talk:techniverse.net

Wir freuen uns, wenn du dabei bist!

Vielen Dank fürs Teilen!