61 lines
2.3 KiB
Markdown
61 lines
2.3 KiB
Markdown
# 🧹 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 `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
|
||
|