← Home
st4ck.d0mus.com · Roadmap & Fasi · v1.0 · 2026-05-09
Roadmap & Fasi · v1.0
st4ck planning
phasing rollout · single-operator delivery plan
PM senior review · append-only · cross-link dossier §11
Fase corrente
Fase 0 — closing
preparazione hardware
~95% complete
Next milestone
Fase 1A — CF hardening
unblocks all Fase 1+
ETA 1 weekend
Coverage piano
18 fasi · 0 done
F0 + 6 in F1 + 4 in F2
+ 3 in F3 + 4 in F4

Questa è la pianificazione operativa di st4ck redatta con la lente di un project manager senior (15+ anni delivery IT, sensibilità lean): fasi piccole, dipendenze esplicite, definition-of-done per ogni step. Convenzione append-only: i task non si cancellano, si segnano come DONE per preservare la storia di delivery. Stato vivo aggiornato a ogni avanzamento.

🎯 NEXT PHASE

Fase 0 — closing (preparazione hardware)

Goal: chiudere la preparazione hardware del compute primario casa, sbloccando l'inizio di Fase 1. Esce quando NVMe 990 PRO è nel G8, BIOS aggiornato, HA Voice PE ordinati, hardware key 2FA confermata, dismissioni programmate.

# Step Stato Definition of Done Effort Dipende da / link
0.1 Spostamento NVMe 990 PRO 1TB dal G5 al G8 TODO NVMe montato slot Gen4 G8, partizione btrfs creata, OS Ubuntu 24.04 LTS bootable, fstab UUID-pinned S (~2h)
0.2 BIOS update G8 ultima versione HP TODO BIOS post-update verificato (versione + checksum), VT-x/AMD-V abilitato, secure boot OFF (compat. Linux) S (~30min) 0.1
0.3 Ordine 2× HA Voice PE (Nabu Casa) TODO Ordine effettuato (~140 EUR), tracking ricevuto, ETA confermato (lead time 2-4 settimane) S (~15min)
0.4 Conferma hardware key 2FA acquistata (YubiKey 5 / Titan) TODO Risposta Sì/No documentata. Se No: ordine prima di Fase 1A; se Sì: pronta per enrollment Authentik post-Fase 1C S (~10min)
0.5 Programma dismissione G5 + NUC10 + 2× DS718+ TODO Foto annunci preparate, prezzo target (~750-1000 EUR totale), HDD recuperati DS718+ → ready per DS720+ #2 setup M (~3h) 0.1 (G5 vuoto post-NVMe move)
0.6 Compilazione bozza letter-to-family + DR runbook (B1+B2) TODO Bozza riempita su dr.html, scrittura a mano cartacea, 3 buste sigillate (Aldo / persona di fiducia / cassaforte famiglia). Mitiga RA-002 Bus factor L (~2h)
0.7 Calendar OPS-001..009 monthly homelab check ricorrente TODO Evento ricorrente Google Calendar primo sabato del mese (~1h), checklist linkata a dossier §13 S (~15min)

Exit criteria Fase 0: tutti i 7 step in DONE. Output verso Fase 1A: G8 production-ready bootabile su Ubuntu 24.04 LTS (vuoto, no servizi), NVMe in posizione, BIOS aggiornato. Storage NAS DS720+ #1 invariato (already production).

Roadmap completa — 18 fasi

Pianificazione granulare in fasi piccole (1-2 weekend ciascuna) per favorire delivery incrementale, validazione intermedia, e bus factor mitigation (un singolo subentrante può raccogliere il piano dal punto di interruzione). Ogni fase ha exit criteria discreti, tutti raggiunti = fase chiusa.

Fase 0 — Preparazione hardware

0 Preparazione hardware compute primario 95% · IN PROGRESS

Vedi tabella NEXT PHASE sopra per lo step-by-step dettagliato. Goal: G8 production-ready, OS bootabile, hardware del modulo j4rv1s ordinato, dismissioni programmate. Exit: 7/7 step DONE.

Fase 1 — Foundation deploy (CF hardening + auth + storage layer)

1A Hardening account Cloudflare + 2FA hardware key TODO · ~1 weekend

Goal: proteggere il root account Cloudflare prima di qualsiasi deploy che dipenda da CF (ed è tutto). Mitiga ISSUE-010 (already RESOLVED parzialmente con TOTP) e completa hardening multi-fattore.

Exit: il break-glass scenario "Aldo perde password CF" è gestibile via recovery codes cartacei + hardware key fisica. Dipendenze: Fase 0 chiusa, hardware key 2FA disponibile.

1B G8 OS baseline + LUKS at-rest encryption TODO · ~1 weekend

Goal: G8 con Ubuntu 24.04 LTS configurato baseline + LUKS sui dischi dati (mitiga ISSUE-007 P1). Pre-requisito per qualsiasi servizio che tocca dati persistenti.

Exit: G8 spegnimento → riavvio → tutti i mount disponibili senza intervento. Dipendenze: 1A chiusa.

1C Authentik IdP + Postgres dedicato + Redis TODO · ~1 weekend

Goal: Identity Provider in piedi prima di qualsiasi altro servizio. Tutti i servizi famiglia useranno OIDC verso Authentik, quindi Authentik è il primo a deploy. Mitiga ISSUE-004 (`chattr +C` Postgres su btrfs).

Exit: login Authentik web funzionante con TOTP+hardware key, blueprint export riproducibile. Dipendenze: 1B chiusa.

1D Caddy reverse-proxy + cloudflared tunnel TODO · ~1 weekend

Goal: tutta l'infrastruttura di accesso pubblico in piedi. Caddy interno, cloudflared per tunnel, primi hostname pubblici (1d.d0mus.com per Authentik).

Exit: Authentik raggiungibile pubblicamente con TLS valido via tunnel. Dipendenze: 1C chiusa.

1E Synapse (Matrix) + Postgres + bridging Element TODO · ~1 weekend

Goal: primo servizio "vero" famiglia in piedi: chat E2EE Matrix. Test del pattern OIDC-via-Authentik su un servizio reale prima di sbloccare gli altri.

Exit: due account che si scrivono in chat E2EE via Element Web autenticati Authentik. Dipendenze: 1D chiusa.

1F Backup baseline (Restic locale + B2 + monitoring) TODO · ~1 weekend

Goal: nessun servizio aggiuntivo senza backup verificato. Restic locale + B2 cloud con restore-test reale.

Exit: backup → restore di un DB validato in tempo < RTO target. Dipendenze: 1E chiusa.

Fase 2 — Family-facing services

2A Immich (foto famiglia) TODO · ~1 weekend

Goal: Immich production con import iniziale foto famiglia, app mobile testata, ML face recognition attiva.

Exit: 2 dispositivi famiglia uploadano in autoupload, ML faces popolata. Dipendenze: 1F chiusa.

2B Seafile + OnlyOffice (drive collaborativo) TODO · ~1 weekend

Goal: drive famiglia con editing collaborativo. Migrazione documenti famiglia esistenti.

2C Vaultwarden + Paperless-ngx TODO · ~1 weekend

Goal: password manager famiglia in piedi (priority alta) + KB documenti.

2D Home Assistant + Mailpiler + Blinko TODO · ~1-2 weekend

Goal: closing della suite servizi famiglia. HA migrazione, Mailpiler archivio, Blinko note.

Exit: stack completo. Dipendenze: 2A-2C tutte chiuse.

Fase 3 — Replica off-site (genitori)

3A Approvvigionamento G8 #2 + setup base genitori TODO · ~2-4 settimane (lead time)
3B UniFi Site Magic VPN + Snapshot Replication TODO · ~1 weekend
3C Failover drill (test reale) TODO · ~1 giornata

Exit: failover end-to-end in tempo < RTO target. Dipendenze: 3B chiusa.

Fase 4 — Modulo j4rv1s + advanced

4A j4rv1s F0b — uncomment compose blocks + first deploy TODO · ~1 weekend
4B HA Voice PE setup + ESPHome flash TODO · ~1 weekend (post 0.3)
4C j4rv1s F2 — LLM router + first 5 skills TODO · ~2 weekend
4D Pausa-consolidamento 6 mesi (review syst3m) DEFERRED · 6 mesi post-4C

Stop deliberato sull'aggiunta di servizi/feature. 6 mesi di consolidamento, monitoring, refactoring, prima di valutare j4rv1s F5-F7 (skill avanzate, dashboard, multi-utente). Raccomandazione audit syst3m.

Convenzioni di tracking

Status enum

StatusSignificatoQuando applicare
DONEStep completato e Definition-of-Done verificataDoD soddisfatta + smoke test passato. Mai marcare DONE per "quasi fatto".
IN PROGRESSStep iniziato ma non chiusoLavoro attivo nelle ultime 7 giorni. Se >7gg → BLOCKED o TODO.
TODOStep pianificato, dipendenze non ancora chiuse o non iniziatoDefault per step nuovo aggiunto al piano.
BLOCKEDStep non eseguibile per dipendenza esternaCausa documentata in note. Esempi: lead time HW, decisione famiglia, audit pendente.
DEFERREDDecisione esplicita di rinviare oltre l'orizzonte attualeDifferimento intenzionale. Cross-link a §15 dossier "decisioni differite".

Regola append-only

Mai cancellare task chiusi. I task DONE rimangono visibili nel piano per: Se un task viene annullato (decisione cambia), si marca DEFERRED con razionale, non si elimina la riga. Se un task viene riformulato, si chiude il vecchio come DONE (con nota "rifattorizzato in X.Y.Z") e si apre il nuovo.

Aggiornamenti incrementali

Quando un task si chiude:

  1. Cambia TODO / IN PROGRESSDONE nel relativo `<li>` o riga tabella.
  2. Aggiungi class="row-done" alla `<tr>` della NEXT PHASE table per attenuare visivamente.
  3. Se chiude una fase intera: aggiorna progress bar + status nel `<summary>` della fase.
  4. Se la fase corrente cambia: aggiorna meta-card "Fase corrente" e "Next milestone" nell'header row.
  5. Bump versione roadmap (es. v1.0 → v1.1) nel title, doc-toolbar, footer + riga changelog (sezione sotto, da creare quando necessario).

Cross-link al dossier

Le fasi qui sono lo specchio temporale di §11 Phasing del Rollout nel dossier (vista architetturale macro). Le ISSUE/RA citate sono in §15 dossier. Le pendenze trasversali per priorità (non temporali) sono in backlog.