114 lines
2.9 KiB
Markdown
114 lines
2.9 KiB
Markdown
<p align="center">
|
|
<a href="https://techniverse.net">
|
|
<img src="https://assets.techniverse.net/f1/git/graphics/repo-techniverse-logo.png" alt="Techniverse Community" height="70" />
|
|
</a>
|
|
</p>
|
|
|
|
<h1 align="center">Kutt Links Cleanup</h1>
|
|
|
|
<h4 align="center">
|
|
Bash-Script zum automatischen Aufräumen anonymer Links in einer selbst gehosteten Kutt-Instanz.
|
|
</h4>
|
|
|
|
<h6 align="center">
|
|
<a href="https://www.cleveradmin.de">🏰 Website</a>
|
|
·
|
|
<a href="https://techniverse.net">📰 Community</a>
|
|
·
|
|
<a href="https://social.techniverse.net/@donnerwolke">🐘 Mastodon</a>
|
|
·
|
|
<a href="https://matrix.to/#/#support:techniverse.net">💬 Support</a>
|
|
</h6>
|
|
<br><br>
|
|
|
|
|
|
## 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
|
|
|
|
|
|
|
|
<br><br>
|
|
<p align="center">
|
|
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
|
</p>
|
|
|
|
<p align="center">
|
|
<sub>
|
|
© Patrick Asmus · Techniverse Network · <a href="./LICENSE">Lizenz</a>
|
|
</sub>
|
|
</p> |