Files
matrix-prune-messages/Readme.md
2026-01-28 16:27:03 +01:00

2.3 KiB
Raw Blame History

🧹 Matrix Synapse Message Prune Script

Important

Besserer Ansatz verfügbar (Retention Policies)

Dieses Script basiert auf der Synapse Admin API (/purge_history) und funktioniert grundsätzlich zuverlässig.
In föderierten Matrix-Umgebungen kann diese Methode jedoch zu Problemen führen, da entfernte Server gelöschte Events teilweise erneut zustellen oder der Löschvorgang nicht überall konsistent greift.

Inzwischen nutze ich selbst einen deutlich besseren und nativen Ansatz direkt in Synapse: Retention Policies.
Damit lassen sich Nachrichten serverseitig automatisch nach einer definierten Zeit entfernen stabiler, föderationsfreundlicher und ganz ohne zusätzliche Cronjobs oder externe Scripts.

👉 Ausführlicher Blogbeitrag dazu:
https://www.cleveradmin.de/blog/2025/04/matrix-synapse-retention-nachrichten-loeschen/

Dieses Repository bleibt bestehen, falls du bewusst den API-basierten Weg gehen möchtest für alles andere empfehle ich jedoch klar die Retention Policies.

Dieses Bash-Script löscht automatisiert alte Nachrichten aus definierten Matrix-Räumen mithilfe der Synapse Admin API.
Je nach Konfiguration werden Nachrichten gelöscht, die älter als 7 oder 30 Tage sind. Die Ausführung erfolgt typischerweise per Cronjob.

🔧 Funktionen

  • Löscht Nachrichten aus festgelegten Räumen über die Admin-API (/purge_history)
  • Trennung nach Aufbewahrungsdauer (z.B. 7 Tage vs. 30 Tage)
  • Zeitstempel werden automatisch berechnet
  • Status und Ergebnisse werden in ein Logfile geschrieben (/var/log/matrix_prune.log)
  • Optional mit jq für sauberes JSON-Parsing

🚀 Verwendung

  1. Synapse Admin-API muss auf localhost:8008 erreichbar sein
  2. Admin-Token in der Variable TOKEN eintragen
  3. Räume in den Arrays ROOMS_7DAYS und ROOMS_30DAYS definieren
  4. Script mit chmod +x ausführbar machen
chmod +x matrix_prune-messages.v1.sh

🕒 Cronjob einrichten

Um das Script täglich um 23:00 Uhr auszuführen und alle Ausgaben zu unterdrücken:

0 23 * * * bash /home/scripts/default/matrix_prune-messages.v1.sh >/dev/null 2>&1

📝 Logfile

Alle Löschvorgänge und API-Antworten werden mit Zeitstempel in folgendes Log geschrieben:

/var/log/matrix_prune.log

🔒 Hinweis

Autor: Patrick Asmus

Lizenz: MIT