2 Betrieb Updates und Backup
Ralf Warmuth edited this page 2026-07-17 01:06:21 +02:00

Betrieb, Updates und Backup

Status und Logs

cd /opt/ntfy-downloader
docker compose -f compose.image.yaml ps
docker compose -f compose.image.yaml logs -f

Nur einen Dienst verfolgen:

docker compose -f compose.image.yaml logs -f ntfy-downloader
docker compose -f compose.image.yaml logs -f ntfy-webui

Beide Container besitzen Healthchecks. healthy bedeutet:

  • Listener: Konfiguration, Downloadpfad und SQLite-Jobqueue sind verwendbar.
  • Web-UI: /healthz, Downloadpfad, Thumbnail- und Metadatenpfad sind verwendbar.

Reproduzierbares Update

  1. Erfolgreichen Forgejo-Build abwarten.
  2. Vollständigen Commit-SHA in .env eintragen.
  3. Konfiguration validieren und Image laden.
  4. Container neu erstellen.
cd /opt/ntfy-downloader
sed -i 's/^NTFY_DOWNLOADER_IMAGE_TAG=.*/NTFY_DOWNLOADER_IMAGE_TAG=<SHA>/' .env
docker compose -f compose.image.yaml config -q
docker compose -f compose.image.yaml pull
docker compose -f compose.image.yaml up -d
docker compose -f compose.image.yaml ps

latest ist bequem, aber nicht reproduzierbar. Ein SHA zeigt jederzeit exakt, welcher Quellstand läuft.

Stoppen und Starten

docker compose -f compose.image.yaml stop
docker compose -f compose.image.yaml start

Container und Projektnetz entfernen, Daten behalten:

docker compose -f compose.image.yaml down
docker compose -f compose.image.yaml up -d

Die externen Volumes ntfy-downloader_ntfy-state und ntfy-downloader_ntfy-thumbs bleiben selbst bei down -v erhalten. ntfy-metadata wird von Compose verwaltet und darf nicht mit down -v gelöscht werden, wenn Tags erhalten bleiben sollen.

Persistente Daten

Daten Speicherort
Videos, Clips, GIFs, WhatsApp-MP4s Hostpfad aus DOWNLOAD_DIR
Jobqueue und ntfy-Cursor Volume ntfy-downloader_ntfy-state
Thumbnail-Cache Volume ntfy-downloader_ntfy-thumbs
Video-Tags Volume ntfy-downloader_ntfy-metadata
Konfiguration und Secrets /opt/ntfy-downloader/.env

Der Thumbnail-Cache ist wiederherstellbar. Jobqueue, Tags, .env und Videos sind dagegen fachlich relevant.

Backup

Vor einem konsistenten Backup die Container kurz stoppen:

docker compose -f compose.image.yaml stop

Volumes als Tar-Archive sichern:

docker run --rm \
  -v ntfy-downloader_ntfy-state:/source:ro \
  -v /opt/ntfy-downloader/backups:/backup \
  alpine tar -C /source -czf /backup/ntfy-state.tgz .

docker run --rm \
  -v ntfy-downloader_ntfy-metadata:/source:ro \
  -v /opt/ntfy-downloader/backups:/backup \
  alpine tar -C /source -czf /backup/ntfy-metadata.tgz .

Zusätzlich sichern:

  • .env mit restriktiven Dateirechten
  • compose.image.yaml
  • das gesamte DOWNLOAD_DIR oder dessen Storage-Snapshots

Danach Dienste wieder starten:

docker compose -f compose.image.yaml start

Wiederherstellung

  1. Externe Volumes anlegen.
  2. Archive in leere Volumes entpacken.
  3. Downloadverzeichnis und .env wiederherstellen.
  4. Passenden Image-SHA setzen.
  5. docker compose ... up -d ausführen.
  6. Healthchecks, Logs, Tags und einen Testdownload kontrollieren.

Docker-Bereinigung

Vor dem Löschen immer aktive Referenzen prüfen:

docker system df -v
docker image ls
docker volume ls
docker ps -a

Alte SHA-Images können entfernt werden, wenn kein Container sie verwendet. Keine pauschale Volume-Bereinigung ausführen, solange Zweck und Backup eines Volumes nicht geklärt sind.