# 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: ```bash #!/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) ```bash # 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 ```