[MEDIUM] Mjolnir/Draupnir moderation bot #18

Closed
opened 2026-07-28 14:31:49 +00:00 by sorb · 2 comments
Owner

Deploy an open-source Matrix moderation bot (Mjolnir or its fork Draupnir) for auto-banning known bad servers/users and spam detection - relevant given federation is currently open.

Deploy an open-source Matrix moderation bot (Mjolnir or its fork Draupnir) for auto-banning known bad servers/users and spam detection - relevant given federation is currently open.
sorb added the priority:mediumarea:security labels 2026-07-28 14:31:49 +00:00
Author
Owner

Update 2026-07-29 — Draupnir deployed und live getestet, Issue geschlossen

Bot-Account via MAS' mas-cli bootstrapped (kein klassisches registration_shared_secret -
Auth läuft über MAS/Authentik), Compatibility-Token per sops hinterlegt. Deployed als
Deployment + PVC + Secret unter apps/production/draupnir*.yaml.

Zwei reale Bugs gefunden und gefixt, bevor es lief:

  1. gnuxie/draupnir:v2.9.0 crasht beim ersten Start mit initialManager ("Can't join remote
    room because no servers..."). Die automatische Management-Room-Erstellung funktioniert erst
    ab v3.1.0 - hochgestuft.
  2. v3.x hat die NODE_CONFIG_DIR-Autoerkennung entfernt und braucht jetzt ein explizites
    --draupnir-config <pfad>-CLI-Argument (aus dist/config.js im Image extrahiert und
    nachgeprüft, nirgends dokumentiert gefunden) - sonst TypeError: No configuration path has been found.

Zusätzlich: eine NetworkPolicy-Ausnahme war nötig, da matrix-stack-synapse intern über
haproxy geroutet wird und dessen Ingress-Policy standardmäßig nur Traefik erlaubt - ohne
explizite Freigabe hätte der Bot Synapse nie erreichen können (silent block durch
default-deny).

Auf Nutzerwunsch ergänzt: Management-Room läuft mit experimentalRustCrypto: true
verschlüsselt (Hersteller-Warnung "not considered production safe", in unserem Test aber ohne
jegliche Fehler/Crashes).

Live-Test des Kernmechanismus (nicht nur Health-Check): Testraum via !draupnir rooms add
geschützt, Policy-Liste via !draupnir list create angelegt (automatisch beobachtet +
geschützt), Testnutzer via !draupnir ban <user> <liste> <grund> erfolgreich aus dem
geschützten Raum entfernt - bestätigt in Element. Das "automatische Bannen bekannter
Bad-Actors" aus der ursprünglichen Issue-Beschreibung funktioniert nachweislich.

Details: docs/deployment-guides/06-moderation-content-scanning.md und Wiki-Seite
Moderation-Content-Scanning.

**Update 2026-07-29 — Draupnir deployed und live getestet, Issue geschlossen** Bot-Account via MAS' `mas-cli` bootstrapped (kein klassisches `registration_shared_secret` - Auth läuft über MAS/Authentik), Compatibility-Token per `sops` hinterlegt. Deployed als Deployment + PVC + Secret unter `apps/production/draupnir*.yaml`. **Zwei reale Bugs gefunden und gefixt, bevor es lief:** 1. `gnuxie/draupnir:v2.9.0` crasht beim ersten Start mit `initialManager` ("Can't join remote room because no servers..."). Die automatische Management-Room-Erstellung funktioniert erst ab **v3.1.0** - hochgestuft. 2. v3.x hat die `NODE_CONFIG_DIR`-Autoerkennung entfernt und braucht jetzt ein explizites `--draupnir-config <pfad>`-CLI-Argument (aus `dist/config.js` im Image extrahiert und nachgeprüft, nirgends dokumentiert gefunden) - sonst `TypeError: No configuration path has been found`. **Zusätzlich**: eine NetworkPolicy-Ausnahme war nötig, da `matrix-stack-synapse` intern über haproxy geroutet wird und dessen Ingress-Policy standardmäßig nur Traefik erlaubt - ohne explizite Freigabe hätte der Bot Synapse nie erreichen können (silent block durch default-deny). **Auf Nutzerwunsch ergänzt**: Management-Room läuft mit `experimentalRustCrypto: true` verschlüsselt (Hersteller-Warnung "not considered production safe", in unserem Test aber ohne jegliche Fehler/Crashes). **Live-Test des Kernmechanismus** (nicht nur Health-Check): Testraum via `!draupnir rooms add` geschützt, Policy-Liste via `!draupnir list create` angelegt (automatisch beobachtet + geschützt), Testnutzer via `!draupnir ban <user> <liste> <grund>` erfolgreich aus dem geschützten Raum entfernt - bestätigt in Element. Das "automatische Bannen bekannter Bad-Actors" aus der ursprünglichen Issue-Beschreibung funktioniert nachweislich. Details: `docs/deployment-guides/06-moderation-content-scanning.md` und Wiki-Seite [[Moderation-Content-Scanning]].
sorb closed this issue 2026-07-29 12:28:18 +00:00
Author
Owner

Migriert nach git.lab: axion1337.chat/axion1337.chat-gitops#18 (nur im Lab bzw. via VPN erreichbar — das Lab ist seit 2026-08-01 die Quelle der Wahrheit, siehe gitops#48). Weiterarbeit dort; dieses Gitea-Issue bleibt als Verweis stehen.

**Migriert nach git.lab**: [axion1337.chat/axion1337.chat-gitops#18](https://git.lab/axion1337.chat/axion1337.chat-gitops/-/issues/18) (nur im Lab bzw. via VPN erreichbar — das Lab ist seit 2026-08-01 die Quelle der Wahrheit, siehe gitops#48). Weiterarbeit dort; dieses Gitea-Issue bleibt als Verweis stehen.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sorb/axion1337.chat-gitops#18