Skip to content

Disaster Recovery — plán obnovy

Princip

Argus zálohuje, Sentinel kontroluje. Každý server musí být obnovitelný z nuly.


Sentinel (tento server)

Kritičnost: VYSOKÁ — bez Sentinelu nelze nasazovat, monitorovat, ani koordinovat.

Co zálohovat

Cesta Obsah Priorita
/root/secrets/ Credentials všech služeb (env soubory, DB hesla, API klíče) KRITICKÁ
/root/projects/sentinel/ Dashboard, docs, testy, docker-compose VYSOKÁ
/root/projects/n8n/ N8N compose config STŘEDNÍ
/root/.claude/ Agent memory, settings, project config VYSOKÁ
/root/.ssh/ SSH klíče (přístup na hub/prod/cerebro) KRITICKÁ
/root/.env Relay API key KRITICKÁ
/etc/fail2ban/ Fail2ban konfigurace NÍZKÁ
/root/.config/zellij/ Zellij config (theme) NÍZKÁ

Co NENÍ potřeba zálohovat

  • /root/projects/auth/, pulse/, s60-mail/, badwolf/, venom/, billit/ — klonovatelné z GitHubu
  • Docker images — stáhnou se znovu
  • Nginx config — je v /root/projects/sentinel/nginx.conf

Obnova Sentinelu (krok za krokem)

  1. Nový VPS (Hetzner, Ubuntu 24.04)
  2. Tailscale: curl -fsSL https://tailscale.com/install.sh | sh && tailscale up
  3. SSH klíče: obnovit z Argus zálohy (/root/.ssh/)
  4. Secrets: obnovit /root/secrets/ z Argus zálohy
  5. Relay API key: obnovit /root/.env
  6. Docker: apt-get install docker.io docker-compose-v2
  7. Git repos:
    mkdir -p /root/projects
    cd /root/projects
    git clone git@github.com:studio60-cz/s60-auth.git auth
    git clone git@github.com:studio60-cz/s60-mail.git s60-mail
    git clone git@github.com:websterlibor/s60-pulse.git pulse
    git clone git@github.com:studio60-cz/badwolf.git
    git clone git@github.com:studio60-cz/venom.git
    git clone git@github.com:studio60-cz/billit.git
    
  8. Sentinel projekt: obnovit z Argus zálohy (dashboard, docs, testy, n8n config)
  9. Claude agent: obnovit /root/.claude/ (memory, settings)
  10. Dashboard: cd /root/projects/sentinel && docker compose up -d
  11. MkDocs: pip install mkdocs-material && cd docs && mkdocs build
  12. Fail2ban: apt-get install fail2ban + obnovit config
  13. DNS: sentinel.studio60.cz → nová IP (Cloudflare)
  14. Ověření: smoke test, Relay API komunikace, SSH na hub/prod

Odhadovaný čas obnovy: 30–60 minut (pokud jsou zálohy aktuální)


Hub-alfa (staging)

Kritičnost: STŘEDNÍ — staging, lze přebudovat z nuly.

Co zálohovat

Co Jak Kam
PostgreSQL (s60_auth_hub, s60_pulse_hub, s60_mail_hub, s60_n8n_hub) pg_dump (Argus cron) Argus
N8N workflows + credentials n8n volume nebo n8n export API Argus

Obnova

  1. Nový VPS + Docker + Tailscale
  2. Sentinel nasadí služby (rsync + docker compose up)
  3. Sentinel obnoví DB z Argus zálohy (pg_restore)
  4. Nginx + certbot pro SSL
  5. Smoke test

Odhadovaný čas: 30–45 minut


Prod-alfa (produkce)

Kritičnost: VYSOKÁ — živá produkce.

Co zálohovat

Co Jak Kam
PostgreSQL (s60_auth_prod, s60_pulse_prod, s60_mail_prod, s60_n8n_prod) pg_dump (Argus cron) Argus
N8N workflows + credentials n8n volume nebo n8n export API Argus

Obnova

Stejný postup jako hub-alfa, ale s prod env soubory a prod DB zálohou.

Odhadovaný čas: 30–45 minut


Cerebro (dev server)

Kritičnost: STŘEDNÍ — dev prostředí, agenti, Relay API.

Co zálohovat

Co Jak Kam
PostgreSQL dev DB pg_dump (Argus cron) Argus
Redis (Relay API data) RDB snapshot nebo AOF Argus
Agent konfigurace rsync /root/projects/ Argus
Relay API (s60-relay) git repo + config Argus

Co Sentinel NEZNÁ

Omezený přístup

Sentinel nemá plný přístup na Cerebro — pouze Relay API (port 3020). DR plán pro Cerebro musí spravovat main agent nebo infra agent. Sentinel může pomoci s DB zálohou, pokud dostane přístup.

Obnova

Zodpovědnost: main agent + infra agent. Sentinel pomůže s DB restore pokud bude potřeba.


Cortex (S60-CS pipeline)

Kritičnost: NÍZKÁ (pro Sentinel) — samostatný pipeline server.

Co zálohovat

Co Jak Kam
Pipeline konfigurace rsync nebo git Argus
Případná DB pg_dump Argus

Co Sentinel NEZNÁ

Mimo scope

Cortex je mimo přímý scope Sentinelu. DR plán by měl spravovat ten, kdo Cortex provozuje.


Argus (backup server)

Kritičnost: VYSOKÁ — je to backup server, pokud spadne, ztrácíme zálohy.

Ochrana Argusu

  • Zálohy z Argusu replikovat na offsite storage MIMO DigitalOcean (DO zálohy jsou na Argusu, nechceme zálohu zálohy u stejného providera)
  • Argus sám by měl mít minimální konfiguraci (snadno obnovitelný)
  • Monitoring: Sentinel kontroluje, že Argus žije a zálohy jsou aktuální

Backup matice

Server Zodpovědnost za zálohu Zodpovědnost za obnovu Kde záloha
Sentinel Argus (cron) Libor + nový Sentinel Argus + offsite (mimo DO)
Hub-alfa Argus (cron, RO přístup) Sentinel Argus
Prod-alfa Argus (cron, RO přístup) Sentinel Argus
Cerebro Argus (cron) main/infra agent Argus
Cortex Argus (cron) vlastník Argus
Argus offsite (mimo DO) (offsite) infra agent offsite (mimo DO)

DO Managed PG → Argus backup

TODO — zatím nenastaveno

Denní pg_dump všech DB na Argus. Čekáme na SSH přístup na Argus od infra agenta.

DB k zálohování:

DB Prostředí Služba
s60_auth_hub hub S60Auth
s60_auth_prod prod S60Auth
s60_pulse_hub hub S60 Pulse
s60_pulse_prod prod S60 Pulse
s60_mail_hub hub S60Mail
s60_mail_prod prod S60Mail
s60_n8n_hub hub N8N
s60_n8n_prod prod N8N

Plán:

  • Argus má RO přístup na DO PG (pg_dump přes Tailscale nebo public endpoint)
  • Cron na Argusu: denně 02:00 CET
  • Retence: 7 denních + 4 týdenní
  • Sentinel monitoruje: kontrola timestamp + velikost po každém backupu

Testování obnovy

Co Frekvence Jak
DB restore test měsíčně Sentinel obnoví zálohu do temp DB, ověří integritu
Sentinel full restore čtvrtletně Obnovit Sentinel na testovém VPS z Argus zálohy
Service redeploy test po každém DR update Sentinel nasadí službu z čistého stavu na hub

Kontakty pro DR

Kdo Kdy volat
Libor Vždy — je vlastník infrastruktury
PM agent Status reporty během obnovy
Infra agent DNS změny, Argus problémy, server provisioning