Files

2.9 KiB

Gitea Restore Runbook

Vorbedingungen

  • Borg-Quelle ist verfuegbar
  • Borg-Passphrase-Datei vorhanden: /mnt/user/appdata/secrets/borg_repo_passphrase.txt
  • Testpfade unter /mnt/user/backups/restore-lab/ und /mnt/user/backups/restore-reports/ sind freigegeben

Bestaetigter Host-Stand

  • produktive Gitea-Daten liegen unter /mnt/user/services/gitea/data
  • Borg-Scope fuer Gitea ist /local/gitea/data
  • restore-lab und restore-reports sind auf dem Host vorhanden

Bestaetigter Teststand

  • echter Mini-Restore am 2026-05-07 erfolgreich gelaufen
  • Restore-Ziel war /mnt/user/backups/restore-lab/gitea/data
  • Testcontainer restoretest-gitea lief lokal auf 127.0.0.1:13000 und 127.0.0.1:12222
  • HTTP 200 OK, HTML-Titel und SSH-Port wurden erfolgreich verifiziert
  • Report liegt unter /mnt/user/backups/restore-reports/gitea-2026-05-07.md

Platzhalter

  • ARCHIVE_NAME: Borg-Archiv fuer den Restore-Test
  • REPORT_DATE: z. B. 2026-05-07
  • BORG_REPO: Host-Borg-Repo
  • BORG_PASSPHRASE_FILE: /mnt/user/appdata/secrets/borg_repo_passphrase.txt

Ablauf

  1. Testpfade vorbereiten
mkdir -p /mnt/user/backups/restore-lab/gitea/data
mkdir -p /mnt/user/backups/restore-reports
rm -rf /mnt/user/backups/restore-lab/gitea/data/*
  1. Gitea-Daten aus Borg in das Restore-Lab extrahieren

Archiv zuerst pruefen:

export BORG_REPO='...'
export BORG_PASSPHRASE="$(cat /mnt/user/appdata/secrets/borg_repo_passphrase.txt)"
borg list "$BORG_REPO"

Restore in das Testziel:

cd /mnt/user/backups/restore-lab/gitea
borg extract "$BORG_REPO" "::ARCHIVE_NAME" local/gitea/data
mv /mnt/user/backups/restore-lab/gitea/local/gitea/data /mnt/user/backups/restore-lab/gitea/data
rmdir /mnt/user/backups/restore-lab/gitea/local/gitea
rmdir /mnt/user/backups/restore-lab/gitea/local

Wenn das Archiv den Pfad anders ablegt, zuerst mit borg list "$BORG_REPO" "::ARCHIVE_NAME" den exakten Eintrag pruefen.

  1. Testcontainer starten
docker compose -f /mnt/user/services/homelab/ops/restore-tests/gitea-compose.test.yml up -d
  1. Smoke-Test
curl -I http://127.0.0.1:13000
ssh -p 12222 -o BatchMode=yes -o StrictHostKeyChecking=no git@127.0.0.1
docker logs restoretest-gitea --tail 50

Minimal erfolgreich:

  • HTTP-Antwort kommt
  • Login-Seite ist erreichbar
  • SSH-Port antwortet
  • Restore-Lab enthaelt Gitea-Daten
  1. Testcontainer wieder stoppen
docker compose -f /mnt/user/services/homelab/ops/restore-tests/gitea-compose.test.yml down
  1. Report schreiben

Ziel:

/mnt/user/backups/restore-reports/gitea-REPORT_DATE.md
  1. Testdaten nach erfolgreichem Lauf bereinigen
rm -rf /mnt/user/backups/restore-lab/gitea/data

Festgelegte Entscheidungen

  • Testdaten werden nach erfolgreichem Lauf geloescht.
  • ntfy wird nicht im ersten echten Lauf eingebunden.
  • Die Borg-Passphrase wird fuer Restore-Tests aus einer Host-Secret-Datei gelesen, nicht aus Borg-UI-Interna.