Roadmap
Mise a jour 2026-09-06 — La reconstruction declarative est livree et eprouvee sur banc jetable (voir Reproductibilite). Sur penny elle n'a jamais tourne : la premiere reconstruction reelle reste a faire.
Mise a jour 2026-08-29 — Phase 1 quasi-complète (gaps restants : UPS + DR drill from cold). Phases 2-4 bloquees hardware/demenagement. Voir aussi Roadmap sécurité et Sucre roadmap.
La coupure secteur du 2026-08-29 (11:18 → retour 13:23) a redémarré les trois machines sans dégât — recovery EXT4 propre, compteurs SMART inchangés. C'est le gap UPS ci-dessous qui se manifeste, et il reste ouvert.
Phase 1 — Foundation (preparation domicile actuel)
Infrastructure de base
- RPi 4 configuré et opérationnel (DietPi, hostname penny)
- Cablage Cat 8 tire dans les pièces principales
- Installer Proxmox VE 9 sur les 2 ZimaBoard
- Créer le cluster Proxmox homelab (galahad + lancelot)
- Cluster Qdevice penny = 3 votes (survit perte 1 node) — 2026-04-19
- Switch manageable 2.5GbE 8p achete + plug — config minimal a faire (30 min UI)
- Tailscale SSH sur les 3 hosts + LXCs
Services applicatifs
- SSO centralise Authelia (OIDC : Proxmox, Portainer, Beszel, PBS, Grafana)
- Vaultwarden (LXC 102 vault sur galahad)
- Beszel monitoring 3 machines
- AdGuard Home primaire (penny) + secondaire (LXC 100 dns-failover sur galahad)
- Logs HA : Loki primary (LXC 101 lancelot) + replica (penny), Alloy dual-write 3 hosts
- Grafana dashboards (Homelab Overview, Auth & Sécurité, Traefik Access, Logs)
- PBS (LXC 103 lancelot, NFS datastore penny, retention 7d/4w/3m)
Backups + DR
- Backups quotidiens restic → Cloudflare R2 EU, chiffré AES-256 (4 chaines : penny, vault hourly, logs, dns-failover) — migré depuis B2 le 2026-05-11
- PBS daily backup LXCs (galahad 02:00, lancelot 02:30)
- restic check mensuel (structure + 10% data subset)
- DR drill mensuel automatique (restore + verify echantillon)
- Sops + age + 2 YubiKeys DR (break-glass)
- DR drill from cold — restore R2 + sops sur Pi neuf, chronometrage. Seule preuve reelle que la chain DR fonctionne end-to-end (1/2 journee user)
Résilience
- Watchdog hardware BCM2835 (reboot auto si kernel freeze, timeout 15s)
- Healthchecks Docker + autoheal (restart auto des containers unhealthy)
- Auto-recovery SSD (remount + fsck + restart Docker après déconnexion USB)
- Auto-repair docker stack (compose up -d auto si stack vide + circuit breaker 3/24h)
- Cascade alert suppression (
house-down/lancelot-downsuppriment alertes enfants) - Healthchecks.io deadman external (penny ping every 1min depuis monitor, alerte si silent)
- UPS achat + setup NUT (~80€ APC Back-UPS 700VA) — vrai gap reliability, coupure courant = corruption eMMC potentielle
Observabilite + alerting
- Notif hygiene mode "uniquement quand ne va pas" (silence success, only failures bipe)
- Logs persistents SSD (
/mnt/ssd/log-homelab/, post-DietPi RAMlog fix) - Sucre SRE engine v1+v1.5+W5 déployé en prod (catalog-gated incident response + auto-pattern drafter) — arrêté le 2026-08-25, voir Bilan et arrêt
- Sucre-down canary Tailscale (homelab_monitor.check_sucre_service) — retiré avec sucre
- Monitor → Loki shipping (alertes monitor pushed dans Loki, sucre observé)
Sécurité (voir sécurité/roadmap.md)
- Audit CSO complet 2026-04-19 (0 HIGH/CRIT, 2 MEDIUM dont 1 corrige)
- Egress firewall Phase 2 (DROP outbound + port-based whitelist) sur 3 hosts — 2026-05-05
- YubiKey SSH client (sk-ssh-ed25519 sur 3 hosts)
- TFA root@pam Proxmox (WebAuthn YK1+YK2 + TOTP + recovery keys, cluster-wide via pmxcfs) — 2026-05-11
Phase 2 — Avant emmenagement (bloquee hardware)
- Acheter appliance OPNsense (Topton/CWWK N100 4x 2.5GbE, ~120€)
- Acheter switch 2.5GbE manageable 16+ ports (switch coeur)
- Acheter APs WiFi VLAN-capable
- Acheter patch panel Cat 8 blinde + coffret mural/baie 6U
- Installer OPNsense sur l'appliance, tester les VLANs
Phase 3 — Installation maison
- Installer coffret technique (patch panel + switch + firewall + UPS)
- Raccorder les cables Cat 8 (keystones blindes + mise a la terre)
- Déployer OPNsense + VLANs en production
- Freebox en bridge mode
- Installer les APs WiFi (1 SSID par VLAN)
- Migrer les services du RPi vers le cluster si pertinent
Phase 4 — Consolidation
- Acheter Minisforum N5 Max "luther" (ou équivalent)
- Ajouter comme 3eme nœud Proxmox (compute + storage) → quorum natif sans qdevice
- Configurer ZFS mirror pour le stockage (debloque vzdump --mode snapshot, fin des PBS backup window whitelists)
- PBS sur ZimaBoard → NAS Minisforum
- Ollama local sur luther = backup LLM pour sucre — sans objet tant que sucre reste arrêté
- Replicate sucre Option B sur galahad+lancelot — sans objet tant que sucre reste arrêté
Items hors-phases (process / value-add)
Quality of life développement
- Renovate sur homelab-config — suspendu depuis le 2026-08-16 (incompatible avec le miroir Forgejo → GitHub, qui efface ses branches). À relancer en auto-hébergé, branché sur Forgejo (phase 2 de la migration). Tant qu'il est coupé, aucune image ne se met à jour seule : le scan Trivy hebdomadaire est le seul filet.
- CI/CD GitHub Actions sur homelab-config (sucre lint+tests, scripts bash+shellcheck, yaml+compose, secret scan — gate avant merge)
- Synthetic monitoring externe (healthchecks par service public — homelab.gabin-simond.fr etc)
Nouveaux services (selon usage perso)
- Immich — self-hosted Google Photos (1 weekend setup + storage)
- Paperless-ngx — OCR + indexation factures/documents
- Home Assistant — domotique quand IoT a intégrer
Sécurité hardening (paranoia level)
- Trivy schedule — vuln scan images Docker hebdo (ntfy si CRITICAL) — 2026-06-25
- AIDE — file integrity monitoring, timer quotidien 04:30 sur penny — 2026-07-07
- SMTP migration port 25 → 587 auth submission (PVE postfix relay Proton) — 2026-05-11
- HIDS (Wazuh / CrowdSec extension)
Reproductibilite
-
[~] Reconstruction declarative en playbooks Ansible, eprouvee sur banc jetable — livree le 2026-09-06. Le titre dit « sur banc » et pas « de penny » : c'est la seule cible ou le parcours complet a tourne. Ce qui vise penny est mesure et rapporte plus bas, sans etre coche.
Trois couches (
bootstrap-base,bootstrap-stack,bootstrap-pi) et un juge (verify.yml) qui demande aux services de SERVIR, controle negatif compris. Cycle complet detruire-recreer-reconstruire-juger sur LXC 111 : 490 s, rejeu idempotent,ok=11 failed=0. S'y ajoutent le manifeste de 113 paires source -> copie live sur les trois hotes (45 scripts + 60 units + 3 udev sur penny, 5 scripts sur chacun des deux noeuds ; recompte du 2026-09-24 — c'etait 109 le 06/09, les neuf units de plus sont les sondes posees depuis) et les 10 LXC declares en OpenTofu. Voir Derive de configuration.Portee exacte — ce qui n'est PAS couvert, et ne le sera pas : flasher la carte SD, ouvrir le coffre et sortir la YubiKey restent manuels, et c'est le principe meme du break-glass. Restent aussi hors playbook les 17 autres services de la stack (22 declares dans le compose, moins les cinq de la couche 2), la restauration des volumes depuis R2, les certificats TLS reels et l'enrolement Tailscale.
Ce qui reste a faire avant la premiere vraie reconstruction, mesure le 2026-09-06 : la couche 1 s'arrete sur
'paquets_base' is undefinedquand on la vise sur penny (la liste n'est declaree que pour le groupebanc), et la couche 3 n'a jamais tourne pour de vrai — son pre-vol de non-perte s'arretera au premier essai sur une image DietPi fraiche, par construction. Le detail et la marche a suivre sont dans la procedure break-glass. -
Premiere reconstruction reelle de penny — c'est le meme jalon que « DR drill from cold » plus haut : tant qu'il n'est pas franchi, la couche 3 prouve la non-regression, pas la reconstruction.