# 🧹 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 ```bash 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: ```bash 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: ```bash /var/log/matrix_prune.log ``` # 🔒 Hinweis Autor: Patrick Asmus Lizenz: MIT