2.3 KiB
🧹 Matrix Synapse Message Prune Script
⚠️ Hinweis: 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
jqfür sauberes JSON-Parsing
🚀 Verwendung
- Synapse Admin-API muss auf
localhost:8008erreichbar sein - Admin-Token in der Variable
TOKENeintragen - Räume in den Arrays
ROOMS_7DAYSundROOMS_30DAYSdefinieren - Script mit
chmod +xausfü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