← Home
st4ck.d0mus.com · Disaster Recovery · BOZZA v0.1 · 2026-05-08

Disaster Recovery — Bozza letter + runbook

Mitigazione del rischio RA-002 Bus factor = 1. Documento operativo per: (a) la famiglia, se Aldo è temporaneamente o permanentemente indisponibile; (b) Aldo stesso, come checklist scenario-driven quando qualcosa rompe. Pattern 3-layer: letter to family in busta sigillata + DR runbook stampato + persona di fiducia onboarded con know-how minimo.

Status: BOZZA v0.1. Questo documento è il template per generare la versione reale. La versione reale (con password, recovery key, telefoni concreti) NON va in questo HTML pubblico (anche se dietro CF Access): va in busta sigillata fisica, in safe domestico, con copia con persona di fiducia geograficamente separata. Da scrivere a mano da Aldo entro chiusura Fase 1. Questa pagina serve solo a non scordare cosa includere e che struttura dare.

1 — Letter to Family

Documento di 1-2 pagine in italiano semplice. Tono: come parlare a un familiare adulto non-tecnico (moglie, figlio adulto, parente). Niente gergo. Tone calmo e pratico, no allarmismo.

Scopo

"Se non ci sono io, ecco come accedere ai vostri dati e gestire il sistema almeno nei primi giorni." NON è un manuale tecnico; è un punto di partenza per chi non si è mai occupato dello stack ma deve comunque capire come continuare.

Template strutturato

Cara famiglia,

se stai leggendo questa lettera, probabilmente non posso aiutarti
direttamente. Ho preparato questo foglio per renderti facile l'accesso
ai nostri dati e dare continuita' al sistema "st4ck" che ho costruito.
Niente di urgente: dati sono al sicuro, non si perdono. Prendi tempo.

= COSA C'E' E DOVE =

Il computer principale e' un piccolo PC HP EliteDesk 800 G8, posizionato
[INSERIRE: stanza/armadio in cui e' fisicamente]. Si chiama "G8 primary".
E' acceso 24/7 e gestisce tutti i nostri dati di famiglia: foto, documenti,
chat, password manager, Home Assistant.

Un secondo computer identico (G8 replica) e' a casa di [INSERIRE: persona
di riferimento, es. "i miei genitori"]. E' la copia di sicurezza
geografica: se a casa nostra succede qualcosa (incendio, furto), i dati
sono al sicuro la'.

= CHI CHIAMARE PER PRIMA COSA =

Persona di fiducia tecnica: [INSERIRE: nome + telefono]
  Ha familiarita' con come funziona il sistema. Puo' dare una mano
  per i primi 24-48 ore. Non e' un tecnico professionista ma sa
  come spegnere e riaccendere le cose nel modo giusto.

Provider FTTH casa: [INSERIRE: nome + numero supporto]
Provider FTTH genitori: [INSERIRE: nome + numero supporto]

= COME ACCEDERE AI DATI =

Tutti i nostri dati personali sono protetti da una password "master"
che ho memorizzato in un programma chiamato Vaultwarden. Da li' si
accede a tutto.

Master password Vaultwarden mia: [NON METTERE QUI IN PLAINTEXT]
  E' nella busta separata firmata "VAULTWARDEN RECOVERY". Apri la
  busta solo in caso di vera necessita': prima sentiti con la
  persona di fiducia tecnica.

Sito da cui accedere: https://v4ult.d0mus.com
  (login: il tuo indirizzo email + master password)

Dopo aver fatto login a Vaultwarden, troverai dentro:
  - password Wi-Fi e router
  - password account email famiglia
  - password servizi (Photos, Drive, Mail, ecc)

= COSA NON FARE =

NON disconnettere il PC G8 a meno che non sia in fiamme/allagato.
  Si auto-mantiene. Se va in errore, riavvia: tieni premuto pulsante
  power 5 secondi, aspetta, ripremi pulsante power.

NON cancellare niente "per fare ordine". I file potrebbero essere
  riferimenti al sistema. In dubbio: chiama persona di fiducia.

NON disabilitare la sicurezza a 2 fattori sui servizi "perche' fa
  fastidio". Lo facciamo apposta: un pirata che ruba la password ha
  comunque bisogno del telefono.

= IN CASO DI EMERGENZA =

Se il PC G8 si e' rotto fisicamente (cade, prende acqua):
  1. Non panicare. I dati sono salvati anche a casa di [riferimento].
  2. Chiama persona di fiducia tecnica.
  3. Lui sapra' come "promuovere" il PC di backup a primario.
  4. Tempo di ripristino atteso: 30-60 minuti se tutto va bene.

Se non riesci ad aprire Vaultwarden:
  1. Apri la busta firmata "VAULTWARDEN RECOVERY" (solo in
     emergenza, non per curiosita').
  2. Segui le 3 righe scritte a mano dentro.
  3. Le 3 righe ti dicono come usare il "recovery code" per
     entrare anche senza la master password.

Se nessuno risponde al telefono:
  Hai 7 giorni di autonomia: il sistema si auto-mantiene. Aspetta.

Buon proseguimento. Tutto e' al sicuro.

Aldo
[DATA: GIORNO/MESE/ANNO della scrittura]

Cosa NON inserire nella letter (regole anti-leak)

CosaPerche' noDove invece
Master password Vaultwarden in plaintextSe la busta viene compromessa fisicamente, vai a perdere TUTTOBusta separata "VAULTWARDEN RECOVERY" + recovery key Vaultwarden
Recovery key Restic / Kopia / B2 in plaintextIdem, ma per i backup. Compromise fisica = backup persiGenerate da Vaultwarden via account "family-emergency" condiviso
Passphrase LUKS dischiIdemYubiKey + safe fisico (recovery)
Lista esaustiva dei servizi self-host con URL pubbliciRiduce la surface ma non zero. Meglio "vai a Vaultwarden, c'e' tutto dentro"Solo Vaultwarden URL + email login
Riferimenti precisi alla rete (IP, MAC, range LAN)Inutili a non-techSkip
Dettaglio tecnico delle decisioniConfusione"Vedi dossier qui" se proprio serve

Pattern catena di accesso (anti-leak)

Idea centrale: nessun secret in plaintext nella letter. La letter spiega come arrivare ai secret, non li contiene. La catena è:
  1. Letter (busta sigillata casa) → istruzioni per arrivare a Vaultwarden
  2. Master password Vaultwarden → in busta SEPARATA "VAULTWARDEN RECOVERY"
  3. Vaultwarden vault → contiene tutti i secret operativi (password servizi, recovery key Restic/Kopia/B2)
  4. Recovery key Vaultwarden → in busta SEPARATA "VAULTWARDEN RECOVERY KEY", da usare solo se master password persa
  5. Copia di sicurezza dell'intero set → con persona di fiducia geograficamente separata (anti-incendio casa)
Compromettere 1 busta = niente. Compromettere TUTTE le buste casa contemporaneamente = serve incendio o furto fisico mirato + fortuna; in quel caso comunque la copia geografica è altrove.

2 — DR Runbook scenari

Procedure step-by-step scenario-driven. Ogni scenario è autonomo: non serve leggere quello prima per capire questo. Tono: come istruzioni IKEA. Stampato in 2 copie (con letter + persona di fiducia).

scenario · S1

S1 — File cancellato per errore

Sintomo: "Mi serviva quel file e l'ho buttato. Lo recupero?"

RTO: < 1 min · RPO: 1 h (snapshot Restic locale orario)

  1. Su Mac: apri KopiaUI desktop (o cartella ~/Library/Application Support/...).
  2. Naviga al volume "Backup endpoints famiglia" → seleziona timestamp recente prima della cancellazione.
  3. Drag-and-drop il file dalla finestra browse temporale al Desktop attuale.
  4. Verifica integrità (apri il file).

Se non lo trovi in Kopia: chiedi a Aldo (o persona di fiducia) di fare restore Restic dal G8 server-side.

scenario · S2

S2 — Internet ISP casa down

Sintomo: "Non si apre il sito ph0t0.d0mus.com / chat / drive". Mobile cellular usa internet 4G/5G normale, anche dal salotto.

RTO: 0 (LAN funziona) · RPO: 0

  1. Verifica internet OK su mobile via 4G/5G (disabilita WiFi).
  2. Se mobile naviga ma WiFi no → ISP down.
  3. Da casa, su WiFi: i servizi continuano a funzionare grazie al DNS interno (split-horizon AdGuard). Apri come sempre ph0t0.d0mus.com da Mac/iPhone in WiFi.
  4. Da fuori casa: aspetta ripristino ISP (chiama provider, vedi numero in letter).

Tempo medio recovery ISP: 1-6 ore. Niente da fare lato sistema.

scenario · S3

S3 — Authentik non risponde / login non funziona

Sintomo: apri qualunque servizio, ti redirige a 1d.d0mus.com ma la pagina non carica o dà errore 502/504.

RTO target: < 30 min · RPO: 0 (Authentik è state-only, no perdita)

  1. SSH su G8 primary (da LAN: ssh aldo@192.168.1.10).
  2. cd ~/st4ck
  3. docker compose ps authentik-server authentik-worker postgres-authentik
  4. Se uno di questi è "exited" → docker compose restart authentik-server authentik-worker
  5. Aspetta 60s, riprova login dal browser.
  6. Se ancora non funziona: bypass break-glass (vedi S3.1 sotto).

S3.1 — Break-glass se Authentik è morta a lungo

Account locale admin pre-configurato in vault offline (Vaultwarden export su YubiKey). Ogni servizio principale ha un utente admin "non-OIDC" da usare in emergenza:

scenario · S4

S4 — Master password Vaultwarden dimenticata

Sintomo: "Sono sicuro che fosse X ma non funziona, e ho azzerato i tentativi 5 volte"

RTO: 5-10 min · RPO: 0 (vault non si perde)

  1. Vai al safe fisico in casa.
  2. Apri busta firmata "VAULTWARDEN RECOVERY KEY".
  3. Estrai il foglio con il recovery code (formato 24 parole BIP-39 o equivalente).
  4. Su Vaultwarden web: click "Recover" → inserisci email account + recovery code.
  5. Vaultwarden ti chiede di IMPOSTARE una nuova master password. Ne scegli una nuova.
  6. Aggiorna la busta: la vecchia recovery key è bruciata, devi generarne una nuova da Vaultwarden web → "Generate new recovery key" → stampa → metti in busta nuova.
scenario · S5

S5 — G8 primary non si accende

Sintomo: "Il PC nero in [stanza] non si accende, niente luci, niente ventola"

RTO: 15-60 min in base alla causa

  1. Verifica alimentazione: presa elettrica funziona? UPS dietro al PC è acceso?
  2. Stacca cavo alimentazione, aspetta 30s, ricollega.
  3. Premi pulsante power. Se si accende → resta a guardare se completa il boot.
  4. Se ancora niente → SSD/disco potrebbe essere morto. Procedi a S6 (G8 morto interamente).
  5. Se si accende ma boot loop o errore "decryption failed": serve passphrase LUKS (YubiKey + safe fisico). Non rispondere con tentativi a caso, chiama Aldo o persona di fiducia.
scenario · S6

S6 — G8 primary morto interamente (hardware)

Sintomo: hardware fritto, BIOS error fatale, smoke test failed

RTO target: 15-30 min (failover) · RPO: 15 min (btrbk replica)

Disponibile solo da Fase 3+ (richiede G8 replica live a casa genitori).

  1. Notifica famiglia: "downtime stimato 30 min, alcuni servizi tornano via secondo sito".
  2. Da casa genitori: SSH a G8 replica via Site Magic VPN.
  3. Promote replica a primary: ./tools/dr-promote-replica.sh (script tracciato in docs/runbooks/dr-failover.md).
  4. Cloudflare DNS: switch CNAME hostname pubblici al tunnel del G8 replica (gestito automaticamente da named tunnel cloudflared replicato).
  5. Aspetta 5 min DNS propagation. Test: curl -I https://ch4t.d0mus.com deve rispondere 200.
  6. G8 primary: in parallelo, ordinare un nuovo hardware per restoring del primary site.
scenario · S7

S7 — Crypto-locker / errore utente massivo

Sintomo: file ovunque diventano .encrypted, oppure cancellazione massiva accidentale

RTO: 1-4 ore · RPO: 1-24 ore (Restic snapshot precedente)

  1. STOP: spegni il G8 IMMEDIATAMENTE (pulsante power tenuto 10s). Evita propagazione.
  2. Stacca rete LAN (cavo ethernet) per isolare ulteriormente.
  3. Boot da USB stick di rescue (Ubuntu live).
  4. Dal live: monta i dischi LUKS read-only.
  5. Identifica timestamp dell'incidente (quando i file hanno iniziato a cambiare nome).
  6. Restic restore dal snapshot più recente PRIMA dell'incidente: restic -r /srv/restic-local restore [snap-id] --target /srv/data --include "..."
  7. Verifica integrità file restorati prima di riconnettere il G8 alla rete.
  8. Reimaging completo Ubuntu se compromessa l'intera macchina: install fresh + restore /srv/data da B2.
Pattern anti-ransomware st4ck: Restic e Kopia hanno repository immutabili dal source dopo commit. Il malware su un endpoint NON può cancellare gli snapshot già scritti su DS720+ #2 o B2. Quindi i backup sono recuperabili anche se il source è cifrato.
scenario · S8

S8 — Furto / incendio casa

Sintomo: casa inagibile o materiale rubato

RTO: 30 min (failover sito B) · RPO: 15 min

Disponibile solo da Fase 3+.

  1. Procedura identica a S6 (G8 morto interamente): tutti i dati tier-1 sono vivi sul sito B (genitori).
  2. Cloudflare Tunnel ridireziona automaticamente al sito B (già configurato).
  3. Hardware sostitutivo casa: 2-4 settimane procurement + reinstall, ma senza fretta perché sito B è production-grade.
  4. Assicurazione: documenta perdite, claim. Hardware è sostituibile, dati no.
scenario · S9

S9 — Catastrofe entrambi i siti

Sintomo: casa Aldo + casa genitori entrambe inagibili (terremoto, alluvione major)

RTO: 4-12 ore · RPO: 24 ore (B2 last sync)

  1. I dati tier-1 sono cifrati su Backblaze B2 (regione EU).
  2. Procurement nuovo hardware (anche cloud VPS Hetzner come emergenza).
  3. Install Ubuntu + Restic + ~/.config/restic/repo-keys.
  4. Restic restore da B2: restic -r b2:st4ck-restic-prod restore latest --target /srv/data (può durare ore in base a banda).
  5. Re-deploy stack docker compose.
  6. DNS Cloudflare manualmente verso nuovo IP/host.

3 — Persona di fiducia onboarded

Una persona della famiglia o amico fidato con know-how minimo. Non deve saper amministrare lo stack — solo "what to do in the first 24h" + sapere come contattare aiuto tecnico più avanzato.

Cosa la persona di fiducia DEVE sapere

  1. Dove è fisicamente il G8 in casa (location specifica, non solo "al piano di sotto").
  2. Dove è la busta letter + busta recovery + DR runbook stampato.
  3. Come contattare: Aldo, provider FTTH, professionista IT di fiducia (Davide Pignataro / Jet, vedi Lucia? — TBD se applicabile).
  4. Come riavviare il G8 (pulsante power 5s).
  5. Quale scenario consultare per i primi sintomi (S1-S9 sopra).
  6. Come usare le tools/ scripts del repo (es. ./tools/dr-promote-replica.sh in S6) — basic walk-through.

Cosa la persona di fiducia NON deve sapere

Walk-through fisico annuale

  1. Mostrare fisicamente dove è il G8, le buste, i dischi USB-C esterni.
  2. Test: simulare scenario S1 ("ho cancellato un file") — la persona deve essere in grado di seguire i 4 step.
  3. Aggiornare la lettera con date / numeri di telefono / persone di riferimento se cambiate.
  4. Generare nuova recovery key Vaultwarden se quella in busta è vecchia (annuale).

4 — Action items per Aldo

#StepEffortStatus
1Stampa questa pagina come PDF (bottone Stampa toolbar)2 min
2Compila placeholder [INSERIRE: ...] con info reali (stanza G8, telefoni, persone)30 min
3Identifica persona di fiducia (moglie? fratello? amico tech-aware?). Confronto onboarding1 conversazione
4Scrivi a mano la letter su carta (più calda di un PDF, intenzionale)30 min
5Genera recovery key Vaultwarden + stampa10 min
6Procura 3 buste sigillate: "LETTER", "VAULTWARDEN RECOVERY KEY", "DR RUNBOOK"5 min
7Position fisica: safe domestico (3 buste casa) + safe persona di fiducia (3 buste copie)1 ora trasporto
8Walk-through fisico con persona di fiducia (mostra G8, buste, scenario S1)2 ore
9Refresh annuale: tutti gli step sopra + verifica recovery key non scaduta1 ora/anno
Output atteso entro chiusura Fase 1: 6 buste totali distribuite (3 casa + 3 persona di fiducia), 1 walk-through completato, RA-002 Bus factor mitigato dal 100% (oggi) a ~70%. Il restante 30% si chiude solo quando la persona di fiducia ha effettivamente partecipato a un drill semestrale.