thecr3w-dev/docs/BACKUP-RESTORE.md

1.9 KiB

THECR3W-DEV — STRATEGIA BACKUPU I ODTWARZANIA AWARYJNEGO (DISASTER RECOVERY)

Wersja: 1.0.0 | Data: 2026-10-31


1. Cele RPO i RTO

  • RPO (Recovery Point Objective): Maksymalnie 6 godzin dla bazy danych PostgreSQL.
  • RTO (Recovery Time Objective): Maksymalnie 30 minut na pełne przywrócenie środowiska kontenerowego na serwerze Netcup VPS.

2. Zakres Backupu

  1. Baza Danych PostgreSQL (thecr3w-postgres):
    • Wszystkie tabele metadanych wydań, kluczy, manifestów wdrożeniowych oraz dziennik audytowy audit_events.
  2. Konfiguracja Serwera i Reverse Proxy:
    • /opt/proxy/Caddyfile oraz certyfikaty TLS.
    • Zmienne środowiskowe .env dla usług TheCr3w-dev.
  3. Magazyn Artefaktów (Cloudflare R2):
    • Bucket thecr3w-app posiada wbudowaną redundancję geograficzną w chmurze Cloudflare.

3. Procedura Wykonywania Kopii Zapasowej (Automatyczny Cron)

Skrypt wykonywany codziennie o godzinie 02:00 UTC:

#!/usr/bin/env bash
set -eo pipefail

BACKUP_DIR="/opt/backups/thecr3w"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "${BACKUP_DIR}"

# 1. Zrzut bazy PostgreSQL bez zatrzymywania kontenera
docker exec -t thecr3w-postgres pg_dump -U thecr3w_user thecr3w_db | gzip > "${BACKUP_DIR}/thecr3w_db_${TIMESTAMP}.sql.gz"

# 2. Kopia Caddyfile
cp /opt/proxy/Caddyfile "${BACKUP_DIR}/Caddyfile_${TIMESTAMP}"

# 3. Retencja: usuwanie kopii starszych niż 30 dni
find "${BACKUP_DIR}" -type f -name "*.sql.gz" -mtime +30 -delete

4. Procedura Odtwarzania Awaryjnego (Restore Runbook)

# 1. Uruchomienie nowej bazy
docker compose -f /opt/thecr3w/docker-compose.prod.yml up -d thecr3w-postgres

# 2. Przywrócenie danych ze skompresowanego zrzutu SQL
gunzip -c /opt/backups/thecr3w/thecr3w_db_YYYYMMDD_HHMMSS.sql.gz | docker exec -i thecr3w-postgres psql -U thecr3w_user -d thecr3w_db

# 3. Uruchomienie backendu i frontendu
docker compose -f /opt/thecr3w/docker-compose.prod.yml up -d