Files
matrix-prune-messages/Readme.md

61 lines
2.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🧹 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