Backups und Updates

Die SQLite-Datenbank von Checky sichern (Snapshots oder laufende Replikation mit Litestream), wiederherstellen und sicher aktualisieren — auf Docker und Cloudflare.

Backups mit Docker

Alle Daten stecken in einer SQLite-Datei: /data/checky.db im Volume checky-data.

Snapshot (einfach, ein paar Sekunden Pause) — im Verzeichnis mit der docker-compose.yml:

docker compose stop checky
mkdir -p backup-$(date +%F)
docker run --rm -v checky_checky-data:/data -v "$PWD/backup-$(date +%F)":/b busybox sh -c 'cp /data/checky.db* /b/'
docker compose start checky

Beim Stoppen schreibt Checky sein Write-Ahead-Log in checky.db zurück, die Datei allein ist also vollständig; der Befehl kopiert die -wal/-shm-Dateien trotzdem mit, falls der Container abgewürgt statt gestoppt wurde. Das Volume heißt <projekt>_checky-data; das Projekt ist der Verzeichnisname (hier checky). Prüfen mit docker volume ls.

Snapshot wiederherstellen (ersetzt die aktuellen Daten):

BACKUP=backup-2026-10-01   # der Ordner, den du zurückholen willst
docker compose stop checky
docker run --rm -v checky_checky-data:/data -v "$PWD/$BACKUP":/b:ro busybox \
  sh -c 'rm -f /data/checky.db* && cp /b/checky.db* /data/ && chown 65532:65532 /data/checky.db*'
docker compose start checky

Das Volume heißt <projekt>_checky-data; das Projekt ist der Verzeichnisname (hier checky). Prüfen mit docker volume ls.

Snapshot wiederherstellen:

docker compose stop checky
docker run --rm -v checky_checky-data:/data -v "$PWD":/b busybox \
  sh -c 'rm -f /data/checky.db-wal /data/checky.db-shm && cp /b/checky-2026-10-01.db /data/checky.db && chown 65532:65532 /data/checky.db'
docker compose start checky

Laufende Backups mit Litestream (empfohlen): repliziert jede Änderung in S3-kompatiblen Speicher (Cloudflare R2, AWS S3, Backblaze, MinIO). Setz LITESTREAM_BUCKET, LITESTREAM_ACCESS_KEY_ID, LITESTREAM_SECRET_ACCESS_KEY (für R2 zusätzlich LITESTREAM_ENDPOINT=https://<account>.r2.cloudflarestorage.com und LITESTREAM_REGION=auto) und starte mit dem Litestream-Sidecar aus dem Repository:

docker compose -f docker-compose.yml -f deploy/litestream/docker-compose.litestream.yml up -d

Ein neuer Server mit leerem Volume stellt sich beim ersten Start selbst aus der Replik wieder her.

Portabel: Owner können die ganze Organisation als eine Datei herunterladen (Einstellungen → Daten umziehen → Exportieren) — siehe Umzug.

Probier ab und zu eine Wiederherstellung aus — ein Backup, das du nie zurückgespielt hast, ist eine Hoffnung, kein Backup.

Backups auf Cloudflare

D1 Time Travel hält 30 Tage Verlauf (wrangler d1 time-travel info DB, Wiederherstellung mit wrangler d1 time-travel restore). Für eine zusätzliche Kopie: wrangler d1 export DB --remote --output backup.sql.

Updates

Lies zuerst die Release Notes (Changelog); Major-Versionen nennen nötige Schritte. Admins sehen in der App einen Hinweis „Update verfügbar“; Sicherheitsreleases sind hervorgehoben.

Docker — Backup machen, dann:

docker compose pull
docker compose up -d
docker compose logs -f checky
curl -s https://checky.example.com/health   # {"status":"ok","version":"…"}

Datenbank-Migrationen laufen beim Start automatisch. Image-Tags: x.y.z (genau), x.y (Patch-Updates einer Minor-Version), latest. Leg produktiv x.y fest (CHECKY_IMAGE=ghcr.io/sonnenglas/checky:2.1) und wechsle bewusst zur nächsten Minor-Version.

Cloudflare — Fork mit dem Release-Tag synchronisieren (Workers Builds deployt) oder aus einem Checkout pnpm --filter @checky/worker run deploy ausführen. Die D1-Migrationen sind Teil des Deploys.

Zurückrollen

Migrationen laufen nur vorwärts. Zum Zurückrollen spielst du das Backup von vor dem Update zurück und startest das vorherige Image (Docker) bzw. die vorherige Worker-Version (wrangler rollback). Lass nie eine ältere Version auf einer Datenbank laufen, die eine neuere schon migriert hat.

Lizenz und Updates

Eine Self-Host-Lizenz deckt Releases ab, die in ihrem Update-Zeitraum erscheinen. Neuere Releases lassen sich trotzdem installieren und laufen — der Schlüssel läuft nie ab —, aber mit einer Verlängerung bleibst du bei Updates und Sicherheitsfixes abgedeckt.

Du kommst nicht weiter? Wir helfen bei der Installation: schreib uns