Kutt Links Cleanup
Bash-Script zum automatischen Aufräumen anonymer Links in einer selbst gehosteten Kutt-Instanz.
## Was macht das Script?
Anonyme Links (ohne Account erstellt) werden gelöscht, wenn sie beispielhaft seit **365 Tagen nicht mehr aufgerufen** wurden. Als Referenzdatum gilt:
- Der **letzte Aufruf** (letzter Eintrag in der `visits`-Tabelle)
- Falls der Link **nie aufgerufen** wurde: das **Erstelldatum**
Links von eingeloggten Usern werden **nie** angefasst.
## Voraussetzungen
- Kutt läuft als Docker-Setup mit einem PostgreSQL-Container namens `kutt-db`
- Der ausführende User hat Zugriff auf `docker exec`
## Installation
### 1. Script ablegen
```bash
mkdir -p /home/docker-projekte/kutt/scripts
cp kutt-links-cleanup.sh /home/docker-projekte/kutt/scripts/
chmod +x /home/docker-projekte/kutt/scripts/kutt-links-cleanup.sh
```
### 2. Cronjob einrichten
Täglich um 03:00 Uhr ausführen:
```bash
crontab -e
```
Folgende Zeile hinzufügen:
```
0 3 * * * /home/docker-projekte/kutt/scripts/kutt-links-cleanup.sh >> /home/docker-projekte/kutt/scripts/cleanup.log 2>&1
```
## Verwendung
### Dry Run (nur anzeigen, nichts löschen)
```bash
./kutt-links-cleanup.sh --dry-run
```
Zeigt alle Links an, die gelöscht werden würden — ohne etwas zu verändern.
### Ausführen (Links löschen)
```bash
./kutt-links-cleanup.sh
```
### Log prüfen
```bash
cat /home/docker-projekte/kutt/scripts/cleanup.log
```
## Konfiguration
Die Variablen stehen am Anfang des Scripts:
| Variable | Standard | Beschreibung |
|---|---|---|
| `CONTAINER` | `kutt-db` | Name des PostgreSQL-Containers |
| `DB_USER` | `kutt` | Datenbank-Benutzer |
| `DB_NAME` | `kutt` | Datenbank-Name |
| `MAX_AGE_DAYS` | `365` | Tage ohne Zugriff bis zur Löschung |
## Technische Details
- Gelöschte Links sind sofort aus der Kutt-Oberfläche verschwunden
- Zugehörige Visit-Statistiken werden automatisch mitgelöscht (`ON DELETE CASCADE`)
- Kutt nutzt Redis nur für Rate-Limiting, nicht als Link-Cache — es gibt kein Cache-Problem nach dem Löschen
- Die freigewordenen Short-Link-Adressen können danach wieder vergeben werden
© Patrick Asmus · Techniverse Network · Lizenz