Files
g9-migration/DOSSIER-RECREATION.md
Effi c246427cf5 Phase 4 : kit G9 (scripts + compose) + Gitea T4.4 backend Postgres
- compose/gitea : SQLite -> Postgres (source = paquet App Center DSM, gitea_db 13 repos/3 users), image épinglée 1.27.3, push-to-create
- scripts/07a-migrate-gitea.sh : export pg_dump (MVCC, .25 lecture seule) + tar/ssh (sshd DSM refuse rsync/scp) + manifestes sha256
- scripts/03b-secrets.sh : secrets gitea ajoutés
- journal.md : entrées Phase 4
2026-10-11 07:45:00 +02:00

636 lines
40 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dossier — (Re)création de l'infrastructure locale Folzo Home (v2)
**Date** : 02/10/2026
**Auteur** : Jean-Henry Foltzenlogel (Folzo)
**Réseau** : `192.168.1.0/24`
**Statut global** : 🟡 **En cours** — architecture cible validée (02/10/2026) ; le plan d'exécution sera affiné pendant le rebuild.
**Document** : **vivant** — versionné, mis à jour à chaque étape de la (re)création. Chaque section porte son propre statut.
> **Nature du document** : c'est le **cahier des charges + plan de (re)création** de la **v2** de l'infrastructure. Il succède à `archive/DOSSIER-INFRA.md` (v1, 30/09/2026) qui est **supplanté** et conservé en `archive/` comme trace. La différence majeure : la v1 proposait de **décommissionner** l'ancien NAS (G7) ; la v2 **réutilise** ce matériel (G7 = spare) et **redistribue** les rôles autour de 4 machines sobres 24/7.
>
> **Source de vérité des faits matériels** : le **snapshot daté** `ETAT-DE-LART-2026-09-30.md` (scan live 30/09/2026). Ce dossier **ne duplique pas** les specs hardware (CPU, RAM, disques, conteneurs) — il s'y réfère. En cas de conflit sur un fait matériel, c'est le **snapshot** qui fait foi ; pour les **décisions et l'architecture**, c'est **ce dossier** qui fait foi.
---
## Sommaire
- [Résumé exécutif](#résumé-exécutif)
- [R1 — Vision & intention](#r1--vision--intention)
- [R2 — Architecture cible](#r2--architecture-cible)
- [R3 — Configuration des disques](#r3--configuration-des-disques)
- [R4 — Stratégie de backup 3-2-1](#r4--stratégie-de-backup-3-2-1)
- [R5 — Plan de (re)création](#r5--plan-de-recréation)
- [R6 — Décisions ouvertes](#r6--décisions-ouvertes)
- [R7 — Risques & priorités](#r7--risques--priorités)
- [R8 — Montée en compétence](#r8--montée-en-compétence)
- [R9 — Qualité & traçabilité](#r9--qualité--traçabilité)
- [Annexe A — Matrice de traçabilité besoin → décision → action → machine](#annexe-a--matrice-de-traçabilité)
- [Annexe B — Glossaire & abréviations](#annexe-b--glossaire--abréviations)
- [Changelog](#changelog)
---
## Résumé exécutif
**Le problème** : l'informatique de la maison est un système que je **subis** — pas de backup fonctionnel, un routeur à 85°C, un serveur à 94% de disque, un NAS XPEnology dont je redoute chaque mise à jour, et des services GAFAM qui détiennent la vie digitale de la famille.
**La vision** : une infrastructure **100% locale** qui me **dégafamise**, sobre (~4 boîtiers 24/7), redondante (3-2-1 **y compris les données IA**), que je **comprends** et que je **contrôle**.
**La décision clé de la v2** : **redistribuer les rôles autour de 4 machines sobres 24/7** en **réutilisant tout le matériel existant** (pas d'achat) :
| Machine | Rôle | 24/7 ? |
|---------|------|--------|
| **J5040** (ex-effi-server) | **Edge** : firewall + DHCP + DNS + reverse proxy + sites web | ✅ |
| **G9** (HP Pro 400 G9) | **Cœur famille** : photos, fichiers, notes, mots de passe, média | ✅ |
| **PC IA** (ex-folzo-corp, 2× 3060) | **IA 24/7** : assistant vocal, inférence GPU | ✅ |
| **Freebox Delta** | Routeur WAN + domotique (HA) + 2ᵉ copie backup | ✅ |
…et **3 machines on-demand** : **G7** (spare du G9, non branché), **218play** (offsite, éteinte le plus souvent), **BC250 / Laptop** (jeux).
**Le succès** (mesurable, horizon 1 an) : la famille n'utilise plus de service GAFAM pour photos, fichiers, notes, mots de passe, média, agenda ; le système est sauvegardé (3-2-1 **vérifié**, données IA incluses), sobre (~4 boîtiers 24/7), et je sais réparer n'importe quelle brique en 5 minutes parce que c'est **mon** système, documenté.
---
## R1 — Vision & intention
> **Statut** : ✅ Validé (héritée de la v1 — cadrage partagé)
### 1.1 Les 5 piliers
| # | Pilier | Définition (1 phrase) |
|---|--------|------------------------|
| 1 | **Se dégafamiser** | Remplacer chaque service GAFAM de la famille par un besoin satisfait en local, sur du matériel que je possède déjà. (100% = horizon long terme ; le target 1 an est un sous-ensemble défini.) |
| 2 | **Les bons outils** | Choisir, **au cas par cas**, les outils qui améliorent la vie quotidienne — par usage, pas par techno. |
| 3 | **Réutiliser le matériel** | Donner un rôle clair à chaque machine existante, en tenant compte de la sobriété et de la redondance. |
| 4 | **Monter en compétence** | Utiliser l'infra comme terrain d'apprentissage (Docker, réseau, DNS, backup, sécurité) + une source de vérité. |
| 5 | **Être acteur** | Un système fiable, observable, documenté → ne plus subir l'informatique. |
### 1.2 Principes directeurs
| Principe | Signification |
|----------|---------------|
| **100% local** | Les données de la famille ne quittent pas la maison (sauf choix explicite). |
| **Souveraineté** | Indépendance vis-à-vis des GAFAM et des dépendances fragiles (XPEnology). |
| **Réutilisation** | Pas d'achat pour l'achat — donner un rôle au matériel existant d'abord. |
| **Sobriété** | Consommation maîtrisée : ~4 boîtiers 24/7 sobres, le reste on-demand. |
| **Fiabilité** | Le système tourne sans intervention constante (watchdogs, services stables). |
| **Redondance** | Aucune donnée unique : backup 3-2-1 (3 copies, 2 supports, 1 offsite) — **données IA incluses**. |
| **Compréhension** | Chaque brique est documentée et comprise — sinon on ne la garde pas. |
### 1.3 Définition du succès (mesurable, horizon 1 an)
| Critère de succès | Mesure |
|-------------------|--------|
| **Dégafamisation** | Photos, fichiers, notes, mots de passe, média, agenda accessibles **sans** GAFAM. (Mail, messagerie, streaming = horizon > 1 an.) |
| **Fiabilité** | Backup 3-2-1 **vérifié** (restauration testée au moins une fois), **données IA incluses**. |
| **Sobriété** | ~4 boîtiers 24/7 sobres (Freebox + J5040 + G9 + PC IA), conso idle mesurée et stable. |
| **Maîtrise** | Je peux réparer n'importe quelle brique en < 5 min (doc + procédure). |
| **Compétence** | Dossier + docs projet maintenus à jour = portfolio démontrable. |
---
## R2 — Architecture cible
> **Statut** : ✅ **Validée** (02/10/2026) — chaque machine a un **rôle clair**, une force = un rôle, zéro chevauchement.
### 2.1 Rôle de chaque machine
| Machine | IP | **Rôle** | 24/7 ? | Disque |
|---------|-----|----------|--------|--------|
| **Freebox Delta** | .254 | Routeur WAN + **passthrough** (DHCP → J5040) + domotique (HA) + **2ᵉ copie** backup | ✅ | RAID5 3×1To = 2 To |
| **J5040** (ex-effi-server) | **.1** | **Edge** : firewall + DHCP + AdGuard (DNS) + reverse proxy + certificats + sites web | ✅ | 128 Go |
| **G9** (HP Pro 400 G9) | **.25** | **Cœur famille** : photos, fichiers, notes, mots de passe, média (Jellyfin) | ✅ | **NVMe 2 To (990 Pro, mono-disque)** + USB média |
| **PC IA** (ex-folzo-corp) | **.11** | **IA 24/7** : assistant vocal, inférence GPU (2× 3060) — **pas de gaming** | ✅ | NVMe 1,9 To (98 Go modèles) |
| **G7** (ex-xpenology) | **.30** | **Spare du G9** (secours cœur famille) — **non branché** | ⬜ on-demand | 256 Go SSD |
| **218play** | .26 | **Offsite** (3ᵉ copie) — éteinte le plus souvent | ⬜ on-demand | 2× 2 To |
| **BC250** | — | **Jeux** (Steam Machine) | ⬜ on-demand | à préciser |
| **Laptop** | — | Workstation principale + **jeux** (RTX 3050 Ti) | ⬜ on-demand | 2 To + 1 To |
| **Postes enfants** | .15/.16/.17 | Accès stack famille (DNS filtré) | — | — |
| **Média salon** | .51–.59 | Streaming / audio | — | — |
| **NVR Reolink ×3** | .41/.123/.191 | Surveillance (RTSP, autonomes) | ✅ | interne |
| **Alarme** | .21 | Alarme maison | ✅ | — |
> **Note disque J5040** : « 128 Go » = disque physique ; le snapshot (§2.1) mesure **98 Go** de volume LVM utilisable (87 Go utilisés au scan). Les deux sont vrais (physique vs volume). Source des faits matériels : le snapshot.
> **Principe « une force = un rôle »** : la **Freebox** = réseau/domotique, le **J5040** = edge internet, le **G9** = données famille, le **PC IA** = inférence, le **G7** = secours. **Aucun service n'est dupliqué** sur deux machines 24/7.
### 2.2 Le J5040 = l'« edge » complet
Le J5040 (ex-effi-server, 4 ports **2,5 Gb**) est placé **juste après le routeur** et devient l'**entrée internet unique** : tout ce qui est exposé passe par lui.
| Fonction | Outil type | Note |
|----------|-----------|------|
| **Firewall** | nftables | filtre LAN/WAN |
| **DHCP** | dnsmasq / Kea | la Freebox passe en **passthrough** (confirmé) |
| **DNS + filtre** | AdGuard Home | filtre famille (enfants) |
| **Reverse proxy** | Traefik / Nginx | point d'entrée unique |
| **Certificats** | Certbot (Let's Encrypt) | TLS auto-renew |
| **Sites web** | dd.folzocorp, lola.folzocorp… | hébergés sur le J5040 |
```
INTERNET → Freebox (WAN, port-forward) → J5040 (firewall + proxy + web) → LAN
```
> **Conséquence** : le J5040 n'héberge **plus aucune donnée IA** (l'IA part sur le PC IA). Son disque (128 Go) passe de **94% à ~30%** — le risque « disque saturé » disparaît.
### 2.3 Principe 24/7 vs on-demand
| Mode | Machines | Raison |
|------|----------|--------|
| **24/7** (toujours allumées) | **Freebox** + **J5040** + **G9** + **PC IA** | Services critiques famille + edge + cerveau IA vocal. Tous **sobres** (le PC IA est le seul à forte conso, voir R2.4). |
| **On-demand** | **G7** (spare, non branché), **218play** (offsite), **BC250 / Laptop** (jeux) | Ne s'allument que quand c'est nécessaire. |
> **Sobriété** : 4 boîtiers 24/7. Trois sont très sobres (~10 W chacun : Freebox, J5040, G9). Le **PC IA** est l'exception assumée (assistant vocal 24/7) — voir R2.4.
### 2.4 PC IA 24/7 : la conso assumée
L'assistant **vocal 24/7** impose que le PC IA (5800X3D + 2× 3060) soit **allumé en permanence**.
| Paramètre | Action |
|-----------|--------|
| **GPU** | **Power limit** (ex. 70%) pour réduire la conso et l'usure |
| **RAM / VRAM** | **Offload** si inactif > X min (libérer la VRAM quand pas de requête) |
| **LLM** | Chargé en VRAM 24/7 (dispo instantanée) |
| **ComfyUI** | **On-demand** (ne tourne que quand demandé) |
| **Objectif** | Conso idle **< 80 W** (vs ~100 W sans optimisation) |
> **Coût** : ~80-100 W idle → ~150-180 CHF/an (0,20 CHF/kWh). C'est le **prix de la dispo 24/7 de l'assistant vocal**. **Usure des GPU** assumée (conçus pour du gaming, pas du 24/7) — mitigée par le power limit.
>
> **Action** : **mesurer** la conso idle réelle (wattmètre + `nvidia-smi` + `turbostat`) → ajuster les power limits → re-mesurer (phase 0.5).
>
> **Pas de gaming** sur le PC IA : les jeux vont sur le **BC250** ou le **Laptop** (on-demand).
### 2.5 G7 = spare du G9
| Aspect | Détail |
|--------|--------|
| **Rôle** | Si le **G9** tombe → le G7 prend le relais (cœur famille) |
| **État** | **Non branché**, matériel prêt |
| **Préparation** | **Wipe DSM** (résout le problème de légalité XPEnology) + OS neuf (Ubuntu Server) + disque 256 Go |
| **Maintenance** | **Boot test trimestriel** (vérif que ça marche) |
| **Disques** | 256 Go SSD (OS + config ; les données viennent du **backup 3-2-1** en cas de sinistre) |
> Le G7 **n'est pas** un miroir en temps réel du G9. C'est une **machine de secours** : si le G9 est HS, on branche le G7, on **restaure depuis le 3-2-1**, et la famille repart. Le temps de restauration est le prix du spare (vs un RAID actif).
### 2.6 Topologie réseau (schéma)
```
INTERNET (Fibre Free 10 Gb)
│
┌───────▼──────────────────────────────┐
│ FREEBOX DELTA (.254) — routeur WAN │
│ ├─ passthrough (DHCP → J5040) │
│ ├─ Home Assistant — domotique │
│ └─ RAID5 (3×1To) — 2ᵉ copie │
└───┬──────────────────────────────────┘
│ 2× 2,5 Gb
┌───▼──────────────────────────────────┐
│ J5040 (.1) — EDGE (réseau + web) │
│ ├─ Firewall + DHCP + AdGuard │
│ ├─ Reverse proxy + Certs (LE) │
│ └─ Sites : dd/lola.folzocorp… │
└───┬───────────┬───────────┬──────────┬┘
│ │ │ │
┌───▼───┐ ┌────▼────┐ ┌───▼────┐ ┌───▼────────┐
│ G9 │ │ PC IA │ │ G7 │ │ 218play │
│ .25 │ │ .11 │ │ .30 │ │ .26 │
│ Cœur │ │ IA 24/7 │ │ SPARE │ │ Offsite │
│ famille│ │ (GPU) │ │ du G9 │ │ (3ᵉ copie) │
│ NVMe │ │ 2×3060 │ │ i5-7500T│ │ │
│ 2 To │ │ │ │ 15 Go │ │ │
│ +USB │ │ │ │ (non │ │ │
│ 20 To │ │ │ │ branché)│ │ │
└───────┘ └─────────┘ └────────┘ └────────────┘
│
├─ BC250 / Laptop — jeux (on-demand)
├─ Postes enfants (.15/.16/.17)
├─ Média salon (.51–.59)
├─ NVR Reolink ×3 (.41/.123/.191)
└─ 3-2-1 : G9 + PC IA → Freebox (quotidien) → 218play (hebdo)
```
---
## R3 — Configuration des disques
> **Statut** : ✅ **Validée** (02/10/2026), **révisée 10/10/2026** : le G9 est **mono-disque** (Samsung 990 Pro 2 To, seul disque interne, **pas de RAID**, **pas de LUKS** — Option 0, voir changelog).
| Machine | Disques | Config | Contenu |
|---------|---------|--------|---------|
| **G9** | NVMe 2 To (Samsung 990 Pro) — **seul disque interne** | **ext4 `/data` sur LVM (ni RAID, ni LUKS)** | **Données importantes** : photos, fichiers, notes, mots de passe, système — protégées par le **3-2-1** + spare G7 |
| **G9** | USB 15 To + USB 5,5 To | Capacité (pas de miroir) | **Média** (Jellyfin) — films/séries **re-téléchargeables** |
| **J5040** | 128 Go | OS + edge | ~25 Go utilisés (le 94% disparaît) |
| **PC IA** | NVMe 1,9 To | Capacité | **Modèles** (98 Go) + inférence + données IA |
| **G7** | 256 Go SSD | OS neuf | Spare (OS + config) |
| **Freebox** | RAID5 3×1 To = 2 To | RAID5 | **2ᵉ copie** (snapshot G9 + PC IA) |
| **218play** | 2× 2 To | Capacité | **3ᵉ copie** (offsite) |
### 3.1 Le split G9 (NVMe + USB)
| Support | Contenu | Raison |
|---------|---------|--------|
| **NVMe 2 To — `/data` (mono-disque)** | Photos, fichiers, notes, mots de passe, système | Données **importantes** ; protection = **3-2-1** (copies quotidiennes + offsite) + **spare G7** (pas de miroir local, décision 10/10/2026) |
| **USB 1 (15 To) + USB 2 (5,5 To)** | Films, séries (Jellyfin) | Média **re-téléchargeable** → pas besoin de miroir |
> **Contrainte** : les **données importantes** doivent tenir dans **2 To** (photos ~10-500 Go + fichiers + notes + système = OK). Le disque unique n'a **pas de miroir** : la **panne disque** est couverte par le **3-2-1** (restic → Freebox quotidien + 218play hebdo, restauration testée) et le **spare G7** ; la **panne boîtier** (feu, vol) aussi. D'où l'exigence absolue : **backup opérationnel AVANT import de données critiques** (Phase 3).
>
> **Nuance USB** : les disques externes sont moins fiables que du interne, mais le média est **re-téléchargeable** → une panne USB n'est pas catastrophique.
### 3.2 Les modèles IA restent sur le PC IA
Les **98 Go de modèles GGUF** + les modèles Ollama restent sur le **PC IA** (là où sont les GPU + le 1,9 To). Le **G7** (256 Go) ne les stocke **pas** — il n'est que le spare du G9.
---
## R4 — Stratégie de backup 3-2-1
> **Statut** : ✅ **Validée** (02/10/2026) — **données IA incluses** (nouveau vs v1)
**3-2-1** = **3** copies, sur **2** supports différents, dont **1** offsite.
| Copie | Support | Machine | Contenu | Fréquence |
|-------|---------|---------|---------|-----------|
| **1** (originale) | NVMe 2 To (G9) + NVMe 1,9 To (PC IA) | **G9** + **PC IA** | Données famille **et** données IA | continu |
| **2** (intermédiaire) | RAID5 (3×1 To) = 2 To | **Freebox** | Snapshot **G9 + PC IA** | quotidien |
| **3** (offsite) | 2× 2 To | **218play** | Copie des données critiques (photos, mots de passe, docs, données IA) | hebdo / on-demand |
> **État 10/10/2026 (copie 2, Phase 3)** : ✅ **en place** sur le G9 — restic 0.19.1
> + rclone 1.75.2, repo chiffré `Freebox/backup/g9` (Delta, 1.79 To), snapshot initial
> 4.18 GiB, **append-only prouvé** (`forget` refusé), **restauration testée** (sha256
> identique), cron 03:30/04:00/09:15 + alerte Matrix. Détail : `g9-migration/README.md`
> (§Phase 3) et `g9-migration/RESTORE-G9.md`. Le PC IA (copie 2, 2ᵉ machine) reste à
> brancher en Phase 5.
>
> **Phase 5 (planifié, non réalisé)** — renforcer la copie 2 et la rendre
> **indépendante du G9** : la Freebox Delta expose **FTP/SFTP/SMB en local** (port 21
> vérifié, **13366** en distant) mais **ne fait pas tourner restic**. Donc :
> 1. **VM sur la Freebox** faisant tourner **`rest-server --append-only`** (repo
> append-only côté serveur, plus fort que l'append-only imposé par le G9), exposé en
> **HTTPS (TLS, certificat interne)** avec **`htpasswd`** (utilisateurs séparés :
> `g9-backup` en écriture, `g9-restore` en lecture) ; **à valider** : l'**autostart**
> de la VM Freebox (non testé) et le passage du repo de `rclone:` vers `rest:`.
> 2. **`restic copy` G9 → Freebox → 218play** pour la copie 3 (offsite), avec un repo
> **append-only dédié** et des **identifiants `NoAccess` (suppression/renommage
> refusés)** côté SMB.
> 3. **Chroot/rootfs durci** sur le G9 pour isoler le job de backup du reste.
>
> Limitation assumée en attendant : l'append-only actuel est imposé par le **rclone
> local du G9** (`rclone serve restic --stdio --append-only`), pas par la Freebox.
### 4.1 Les données IA dans le 3-2-1
**Règle** : les **données utilisateur** sont sauvegardées ; les **modèles** (re-téléchargeables) ne le sont **pas**.
| Donnée IA | Où | Criticité | Sauvegardée ? |
|-----------|-----|-----------|---------------|
| **Qdrant** (vector DB / RAG) | PC IA | 🔴 **haute** | **Oui** |
| **n8n** (workflows) | G9 | haute | **Oui** |
| **Obsidian** (notes) | PC IA | 🔴 **haute** | **Oui** |
| **Dify / Effi** (config + data) | PC IA | moyenne | **Oui** |
| **Modèles GGUF** (98 Go) | PC IA | basse — **re-téléchargeables** | **Non** |
| **Ollama** (modèles) | PC IA | basse — **re-téléchargeables** | **Non** |
> **Contexte** : actuellement, **aucune donnée IA n'est sauvegardée**. C'est un point soulevé et intégré à la v2. Le périmètre exact (quels volumes/data) sera précisé **quand l'usage IA sera défini** (R6.3) — la **règle** est posée dès maintenant.
### 4.2 Prérequis
Le backup 3-2-1 ne peut être mis en place **qu'après** :
1. la résolution du **disque backup USB HS** (R7, risque #1),
2. l'installation du **G9** (NVMe mono-disque + USB),
3. la migration de l'**IA** sur le PC IA.
---
## R5 — Plan de (re)création
> **Statut** : 🟡 **Phasé, à affiner** — la Phase 0 est posée ; les phases suivantes seront précisées pendant le rebuild. **Structuré pour être utilisé PENDANT le rebuild.**
### 5.0 Règle de lecture
- Chaque phase a : **objectif**, **actions**, **dépendances**, **critères de succès vérifiables**.
- On démarre par les **fondations** (fiabilité/backup), on finit par les **optimisations**.
- **Statut par phase** : ⬜ à faire → 🟡 en cours → ✅ validé.
- **On ne passe à la phase N+1 qu'après validation de la phase N.**
> **Accès au xpenology (pour la migration)** : `ssh -p 222 Effi@192.168.1.25` (mot de passe, groupe `administrators` → `sudo`). Docker **hors PATH** : `/var/packages/ContainerManager/target/usr/bin/docker` (via `sudo`). **Majorité des briques stateful gérées via GUI** (seulement 12 `compose` dans `/volume1/docker/`) → **re-déclarer** les stateful en `compose` (pinning + labels Watchtower + backup) pendant la migration. Détail : snapshot `ETAT-DE-LART-2026-10-06.md` §1.
### 5.1 Phase 0 — Fondations (fiabilité + edge + cœur)
**Objectif** : un système qui ne repose plus sur du sable, avec l'edge et le cœur famille en place.
| # | Action | Dépendance | Critère de succès (vérifiable) |
|---|--------|------------|-------------------------------|
| 0.1 | **Sauvegarder + remplacer** le disque backup USB HS (Seagate 3,6 To, secteurs HS) | — | **3,2 To de données saines copiées** sur 218play + disque remplacé + backup testé (restauration OK) |
| 0.2 | Corriger la **thermique Freebox** (85°C) | — | Température **< 70°C** en charge |
| 0.3 | **Installer le J5040** (edge) + Freebox en **passthrough** | — | Firewall + DHCP + AdGuard + reverse proxy + certs fonctionnels ; Freebox en passthrough ; sites web accessibles |
| 0.3a | **Upgrader la RAM du J5040** (7,6 Go → **16 Go**) | — | `free -h` confirme **16 Go** ; nécessaire pour Matrix+Jitsi+\*arr (voir `DOSSIER-SOFTWARE.md` S2.4) |
| 0.4 | **Installer le G9** (cœur famille) + **/data NVMe** + USB | 0.3 | OS + `/data` (NVMe 2 To) montés + USB média montés ; IP .25 |
| 0.5 | **Migrer l'IA** (J5040 → PC IA) + **power limit** + **mesurer conso** | 0.3 | IA fonctionnelle sur le PC IA ; conso idle **mesurée** et < 80 W ; disque J5040 **< 30%** |
| 0.6 | **Mettre en place le 3-2-1** (G9 + PC IA → Freebox → 218play) | 0.1, 0.4, 0.5 | 3 copies en place + **restauration testée** (données IA incluses) |
| 0.7 | **Préparer le G7** (wipe DSM + OS neuf = spare) | 0.4 | G7 bootable (Ubuntu Server), test de boot OK, prêt à prendre le relais du G9 |
**Statut** : ⬜ à faire
**Dépendances** : aucune (c'est le départ)
> **Note** : 0.5 (migration IA) libère le disque du J5040 (94% → ~30%) → résout le risque « disque saturé ». 0.6 (3-2-1) est le **prérequis** de toute migration ultérieure.
>
> **🔴 Prérequis absolu** : le **backup 3-2-1 fonctionnel** (0.1 + 0.6, **restauration testée**) est la **condition de TOUTE migration** (xpenology → G9) **et** de toute **MAJ stateful**. L'**incident Nextcloud** (06/10/2026 — snapshot `ETAT-DE-LART-2026-10-06.md` §3) prouve que le risque « **MAJ stateful non supervisée** » est **réel** : Watchtower a mis à jour l'app + la DB sans laisser la migration de schéma se terminer → service HS.
>
> **🔴 Action corrective immédiate (sur le NAS actuel, AVANT la migration)** : **exclure les briques stateful de Watchtower** — **urgent** (NAS en production, sans exclusion) et **indépendant** de la migration xpenology → G9. Détail + procédure : `DOSSIER-SOFTWARE.md` S13.0 (Phase A.0) + S11.4.
### 5.2 Phase 1 — Cœur famille (dégafamisation)
**Objectif** : le G9 devient le **cœur famille** (dégafamisation).
| # | Action | Dépendance | Critère de succès |
|---|--------|------------|-------------------|
| 1.1 | Migrer **photos** (Synology → G9) | Phase 0 + **R6.1 tranché** | Photos accessibles, IA OK |
| 1.2 | Migrer **fichiers** (Nextcloud) | Phase 0 | Fichiers accessibles multi-appareils |
| 1.3 | Migrer **mots de passe** (Vaultwarden) | Phase 0 | Coffre accessible famille |
| 1.4 | Installer **média** (Jellyfin + \*arr) sur USB | Phase 0 | Films/séries accessibles |
| 1.5 | Installer **notes** | Phase 0 + **R6.2 tranché** | Notes accessibles |
| 1.6 | Configurer **DNS** (AdGuard) + sous-domaines | Phase 0 | Sous-domaines résolus en local |
| 1.7 | Installer **Gitea** (host canonique du vault — versioning) | Phase 0 | Gitea accessible, vault versionné |
**Statut** : ⬜ à faire
**Dépendances** : Phase 0 + décisions R6.1 / R6.2
### 5.3 Phase 2 — Finitions (dégafamisation complète)
**Objectif** : la famille n'utilise plus de GAFAM.
| # | Action | Dépendance | Critère de succès |
|---|--------|------------|-------------------|
| 2.1 | **Agenda + contacts** (CalDAV/CardDAV) | Phase 1 | Synchro tous téléphones |
| 2.2 | **Mail** (serveur local) | Phase 1 | Mail famille local |
| 2.3 | **Caméras** (vision IA) | Phase 1 | Vision IA locale |
| 2.4 | **Messagerie / vidéo** (alternatives ouvertes) | Phase 1 | Alternatives ouvertes |
| 2.5 | **Jeux** (BC250 / Laptop) | Phase 0 | Jeux accessibles |
| 2.6 | **Décommissionner xpenology** (G7 reprenant le rôle) | 1.1–1.5 validés | xpenology éteint, G7 prêt, G9 seul sur .25 |
**Statut** : ⬜ à faire
**Dépendances** : Phase 1
### 5.4 Vue d'ensemble des phases
```
Phase 0 (Fondations) ──► Phase 1 (Cœur famille G9) ──► Phase 2 (Finitions)
USB HS / Freebox / photos/fichiers/notes/ agenda/mail/
J5040 edge / G9 / média/DNS caméras/jeux /
IA → PC IA / 3-2-1 / décommissionner xpenology
G7 spare
```
---
## R6 — Décisions ouvertes
> **Statut** : 🟡 **Cadrées, non tranchées** — à étudier **au cas par cas**. Ce dossier fournit le **cadre de réflexion + critères d'évaluation**, pas la décision. **On ne tranche jamais à l'arrache.**
### 6.1 Décision ouverte — Photos
**Contexte** : 10 ans de photos sur Synology Photos, **fiable**, mais **enchaîné à XPEnology**. C'est LA décision qui justifie le NAS G9.
**Besoin** : la même **fiabilité** + **IA** + **partage famille**, **sans dépendance XPEnology**.
**Axes de réflexion** :
| Axe | Option A — "gère tout" | Option B — "stockage + accès" |
|-----|------------------------|-------------------------------|
| Exemple | Immich | Nextcloud (photos) |
| IA (reconnaissance, recherche) | intégrée | à ajouter |
| Partage famille | intégrée | à configurer |
| Migration des 10 ans | export + re-upload | rsync / sync |
| Complexité | plus élevée | plus simple |
| Souveraineté | forte | forte |
**Critères d'évaluation (à remplir lors de l'étude)** :
- [ ] Fiabilité sur le long terme (track record)
- [ ] Qualité de l'IA (reconnaissance personnes/lieux, recherche sémantique)
- [ ] Facilité de partage famille (liens, albums)
- [ ] Effort de migration des 10 ans de photos
- [ ] Consommation (CPU/RAM/disk) sur le G9 (16 Go)
- [ ] Maintenance (MAJ, backups)
- [ ] Sortie / export (rester libre)
**Volume à estimer** : ~10 ans de photos → **estimer le volume** (Go / nombre de fichiers) avant de choisir (doit tenir dans le **NVMe 2 To du G9**, espace `/data`).
### 6.2 Décision ouverte — Notes
**Contexte** : essai de **Joplin / Affine / Nextcloud Notes / Obsidian**… toujours pas fixé. Gros point de réflexion lié à la **culture de la donnée**.
**Besoin** : un outil de notes **local, portable, structuré, souverain**, aligné sur ma culture de la donnée (thèse CAS).
**Critères d'évaluation (à remplir lors de l'étude)** :
- [ ] **Local** : données sur le NAS (pas dans le cloud)
- [ ] **Multi-appareils** : synchro laptop / téléphone / tablette
- [ ] **Recherche** : plein texte + (idéalement) sémantique
- [ ] **Structure** : hiérarchie, liens, tags, graph
- [ ] **Format** : ouvert (Markdown) → pas de verrouillage
- [ ] **Export** : rester libre (exporter tout à tout moment)
- [ ] **Collaboration** : partage famille (si besoin)
- [ ] **Intégration** : avec le reste de la stack (RAG, assistant IA)
**Point de réflexion clé** : quelle est la **philosophie** de mes notes — "capture rapide" (type Joplin) vs "second cerveau structuré" (type Obsidian) vs "workspace collaboratif" (type Affine) ?
### 6.3 Décision ouverte — Usage IA (nouveau, v2)
**Contexte** : l'usage de l'IA **n'est pas encore défini**. La **capacité** est dimensionnée (R2 : G7 = CPU, PC IA = GPU), mais **les briques exactes** (outils) seront choisies **quand l'usage sera défini**.
**Ce qui est posé** :
- La **chaîne** : **PC IA** = inférence GPU (LLM, STT, images) ; l'orchestration/RAG tourne aussi sur le PC IA (24/7).
- Les **données IA** (Qdrant, n8n, Obsidian, Dify) sont **sauvegardées** (R4.1).
- Le **périmètre de backup** des données IA sera précisé ici, à la définition de l'usage.
**Critères d'évaluation (à remplir lors de l'étude)** :
- [ ] Quel(s) usage(s) concret(s) ? (assistant vocal, RAG, génération, automatisation…)
- [ ] Quels outils servent cet usage ? (au cas par cas, par usage pas par techno)
- [ ] Quelles données IA sont critiques (→ périmètre backup) ?
- [ ] Charge GPU vs CPU (24/7 vs on-demand)
### 6.4 Règle pour les décisions ouvertes
> Chaque décision ouverte a une **liste de critères d'évaluation prêts à l'emploi** (6.1, 6.2, 6.3). Lors de l'étude ultérieure, on **remplit la grille**, on **note le choix**, et on **met à jour ce dossier** (R5 + R6). **On ne tranche jamais à l'arrache.**
---
## R7 — Risques & priorités
> **Statut** : 🟡 **Cadre fourni, ordre à confirmer** — la matrice est mise à jour pour la v2 ; l'ordre final sera fixé après l'étude des décisions ouvertes (R6).
### 7.1 Cadre d'évaluation des risques
**Formule** : `Risque = Probabilité (1-5) × Impact (1-5)` → score 1-25.
| Score | Niveau | Action |
|-------|--------|--------|
| 15-25 | 🔴 Critique | Traiter **en premier** (fondations) |
| 8-14 | 🟠 Élevé | Traiter tôt |
| 4-7 | 🟡 Moyen | Traiter au fil de l'eau |
| 1-3 | 🟢 Faible | Surveiller |
### 7.2 Risques actuels connus (v2)
| # | Risque | Machine | Prob. | Impact | Score | Niveau | Lien vision |
|---|--------|---------|-------|--------|-------|--------|-------------|
| 1 | **Pas de backup** (USB HS — secteurs HS détectés 01/10 ; **confirmé 06/10** : HyperBackup **données** en échec depuis **01/10/2024** — 108 erreurs, dernière entrée 03/11/2024, destination USB3 3,6 To absente, `status_dest_file_not_exist` ; pas de restic/borg) | xpenology | 4 | 5 | **20** | 🔴 | Pilier 5 — sans backup de **données**, tout repose sur du sable. **Prérequis absolu de toute migration**. Voir snapshot `ETAT-DE-LART-2026-10-06.md` §2 / §4 |
| 2 | **Freebox 85°C** | Freebox | 3 | 4 | **12** | 🟠 | Pilier 5 — usure du routeur = tout le réseau |
| 3 | **Disque J5040 94%** | J5040 | 4 | 3 | **12** | 🟠 | Pilier 5 — **résolu par la migration IA** (phase 0.5) |
| 4 | **XPEnology (légalité + MAJ)** | G7 | 3 | 4 | **12** | 🟠 | Pilier 1, 5 — moteur de la migration ; **résolu par wipe DSM** (phase 0.7) |
| 5 | **J5040 = point de défaillance unique** du réseau | J5040 | 3 | 4 | **12** | 🟠 | Pilier 5 — mitigé par watchdog + fallback DHCP Freebox |
| 6 | **Données IA non sauvegardées** | PC IA | 4 | 4 | **16** | 🔴 | Pilier 5 — **résolu par le 3-2-1** (phase 0.6) |
| 7 | **Usure GPU 24/7** (PC IA) | PC IA | 3 | 3 | **9** | 🟠 | Pilier 5 — mitigé par power limit (phase 0.5) |
| 8 | **G7 spare non testé** | G7 | 3 | 3 | **9** | 🟠 | Pilier 5 — mitigé par test trimestriel (phase 0.7) |
| 9 | **18 modèles legacy (98 Go)** | PC IA | 2 | 2 | **4** | 🟡 | Pilier 3 — nettoyage |
| 10 | **Docs obsolètes (GPU/RAM)** | — | 2 | 2 | **4** | 🟡 | Pilier 4 — culture de la donnée |
### 7.3 Principe « fondations d'abord »
> **On ne construit pas sur du sable.** Avant toute migration ou nouveau service, les **fondations** doivent être solides :
> 1. **Backup 3-2-1** fonctionnel (risque #1, #6)
> 2. **Freebox thermique** corrigée (risque #2)
> 3. **Disque J5040** allégé (risque #3, via migration IA)
>
> Sans ces 3, tout le reste (G9, dégafamisation) repose sur un système fragile.
### 7.4 Ordre de priorité
> **Cadre de décision** : on traite d'abord les 🔴 (score 15+ : #1, #6), puis les 🟠 (8-14), en respectant le principe « fondations d'abord » (7.3). L'ordre final sera confirmé après l'étude des décisions ouvertes (R6).
---
## R8 — Montée en compétence
> **Statut** : ✅ Cadré — l'infra comme terrain d'apprentissage et portfolio.
### 8.1 L'infra comme terrain d'apprentissage
| Compétence | Service / action | Phase |
|------------|------------------|-------|
| Réseau / firewall | nftables + passthrough | 0 |
| DNS / DHCP | AdGuard + dnsmasq/Kea | 0 |
| Reverse proxy + TLS | Traefik/Nginx + Certbot | 0 |
| Stockage | NVMe `/data` + montages USB | 0 |
| Docker | Installation + conteneurs | 0, 1 |
| Backup | 3-2-1 (données IA incluses) | 0 |
| Sécurité | firewall, VPN, mots de passe | 0, 2 |
| IA | LLM, RAG, STT/TTS, power limit | 0 |
| Domotique | Home Assistant | (sur Freebox) |
| Supervision | Beszel + watchdog | 0 |
### 8.2 Principe « une seule source de vérité »
> **Ce dossier + les docs projet** = la source de vérité unique. Plus de dispersion entre `effi/README.md`, mémoires Hermes, docs ad-hoc.
>
> **Règle** : noter la **réalité mesurée** (scan live) plutôt que la documentation héritée. Après chaque évolution majeure → **mettre à jour ce dossier**.
### 8.3 Lien avec le CAS (IA & transformation digitale)
> L'infrastructure est le **portfolio réel** du CAS :
> - **Culture de la donnée** (thèse) → appliquée dans la décision "notes" (R6.2) + la source de vérité (8.2) + le **3-2-1 des données IA** (R4).
> - **IA & transformation digitale** → appliquée dans la chaîne IA (PC IA 24/7).
> - **Méthode** → état de l'art → besoins → architecture → plan (ce dossier).
---
## R9 — Qualité & traçabilité
> **Statut** : ✅ En cours d'application
### 9.1 Cohérence interne (valeurs uniques)
| Point | Valeur unique (pas de contradiction) |
|-------|--------------------------------------|
| IP du G9 | **.25** (partout) |
| IP du J5040 (edge) | **.1** (partout) |
| IP du PC IA | **.11** (partout) |
| IP du G7 (spare) | **.30** (partout) |
| Rôle G9 | **cœur famille** (NVMe mono-disque + USB) |
| Rôle J5040 | **edge** (firewall + DHCP + DNS + proxy + web) |
| Rôle PC IA | **IA 24/7** (pas de gaming) |
| Rôle G7 | **spare du G9** (non branché) |
| GPU PC IA | **2× RTX 3060 12 Go** |
| CPU du G9 | **i3-13100T** |
| CPU du G7 | **i5-7500T** |
| CPU du J5040 | **Pentium Silver J5040** |
### 9.2 Structure & lisibilité
- **Français**, hiérarchie claire (H1/H2/H3), tableaux.
- Sommaire avec ancres.
- Chaque section porte son **statut** (✅ / 🟡 / ⬜).
### 9.3 Document vivant
- **Versionné** : les documents vivants (ce dossier) ont un **nom sans date** ; les dates sont dans le **changelog**. Les **snapshots** (état de l'art) sont **datés et immuables**.
- **Statut par section** : ✅ validé / 🟡 en cours / ⬜ à faire.
- **Traçabilité** : besoin → décision → action → machine (Annexe A).
---
## Annexe A — Matrice de traçabilité
| Besoin | Pilier (R1) | Décision (R6) | Action (R5) | Machine (R2) |
|--------|-------------|---------------|-------------|--------------|
| **Photos** | 1, 2 | **R6.1 (ouvert)** | 1.1 | G9 .25 |
| **Fichiers** | 1, 2 | — | 1.2 | G9 .25 |
| **Notes** | 1, 2, 4 | **R6.2 (ouvert)** | 1.5 | G9 .25 |
| **Mots de passe** | 1 | — | 1.3 | G9 .25 |
| **Films/Séries** | 2 | — | 1.4 | G9 .25 (USB) |
| **Musique** | 2 | — | 1.4 | G9 .25 (USB) |
| **Agenda/Contacts** | 1 | — | 2.1 | G9 .25 |
| **Mail** | 1 | — | 2.2 | G9 .25 |
| **Recherche web** | 1 | — | (edge) | J5040 .1 |
| **Anti-ads / DNS** | 2 | — | 0.3 | J5040 .1 |
| **Domotique** | 2 | — | (sur Freebox) | Freebox .254 |
| **Caméras (vision IA)** | 2 | — | 2.3 | G9 .25 / PC IA |
| **Messagerie/vidéo** | 1 | — | 2.4 | G9 .25 |
| **Jeux** | 2 | — | 2.5 | BC250 / Laptop |
| **IA personnelle** | 2, 5 | **R6.3 (ouvert)** | 0.5 | PC IA .11 |
| **Automatisation (n8n)** | 2, 5 | — | 0.5 | G9 .25 |
| **Versioning (Gitea)** | 4, 5 | — | 1.7 | G9 .25 |
| **Sites web** | 5 | — | 0.3 | J5040 .1 |
| **Fiabilité (global)** | 5 | — | 0.1–0.7 | toutes |
> **Lecture** : chaque besoin a un pilier, une décision (si ouverte), une action, et une machine. **Pas d'orphelin.**
---
## Annexe B — Glossaire & abréviations
| Terme | Définition |
|-------|------------|
| **GAFAM** | Google, Apple, Facebook (Meta), Amazon, Microsoft |
| **Dégafamisation** | Remplacer les services GAFAM par des équivalents locaux |
| **3-2-1** | 3 copies, 2 supports, 1 offsite (stratégie de backup) |
| **Edge** | Point d'entrée internet unique (firewall + proxy + web) |
| **Passthrough** | La Freebox laisse le DHCP/DNS au J5040 (mode bridge) |
| **WoL** | Wake-on-LAN (allumer une machine à distance) |
| **NAS** | Network Attached Storage |
| **NVR** | Network Video Recorder |
| **XPEnology** | DSM (Synology) installé sur hardware non officiel |
| **RAG** | Retrieval-Augmented Generation |
| **LLM** | Large Language Model |
| **STT / TTS** | Speech-To-Text / Text-To-Speech |
| **\*arr** | Stack de gestion média (Sonarr, Radarr, Prowlarr) |
| **CAS** | Certificat d'Aptitude Spéciale (IA & transformation digitale) |
| **J5040** | Serveur edge (ex-effi-server, Pentium Silver J5040) |
| **G9** | HP Pro Mini 400 G9 (i3-13100T) — cœur famille |
| **G7** | Ex-xpenology (i5-7500T) — spare du G9 |
| **PC IA** | Ex-folzo-corp (5800X3D + 2× RTX 3060) — IA 24/7 |
| **Spare** | Machine de secours, non branchée, restaurée depuis le backup en cas de sinistre |
---
## Changelog
| Date | Version | Changement |
|------|---------|------------|
| 10/10/2026 | **v2.3** | **R4 — copie 2 (Freebox) EN PLACE** : backup restic du G9 opérationnel (4.18 GiB, append-only prouvé, restauration testée, cron + alerte Matrix) → **prérequis de migration (G2) satisfait pour le G9** ; le PC IA reste à brancher. **Phase 5 planifiée** (non réalisée) : VM Freebox `rest-server --append-only` (autostart à valider, la Freebox ne fait pas tourner restic), `restic copy` G9 → Freebox → 218play, `NoAccess` SMB, chroot durci. Détail : `g9-migration/README.md` §Phase 3. |
| 10/10/2026 | **v2.3** | **G9 mono-disque (décision utilisateur, Phase 2)** : le G9 ne recevra **qu'un seul disque** (Samsung 990 Pro 2 To) → **RAID1 abandonné**, **LUKS abandonné sur le G9** (données familiales non critiques, protection contre la fuite = ufw LAN-only + edge, protection des copies = restic chiffré). La tolérance panne repose sur le **3-2-1** (Phase 3/5, restauration testée) + **spare G7** (Phase 7). R1/R3/3.1/3.2/R5/R8 + plan 0.4 alignés. Exécution : `g9-migration/scripts/02-data.sh` (non destructif). |
| 06/10/2026 | **v2.2** | **Cohérence inter-dossiers (source unique)** : (1) **n8n = G9** (aligné sur `DOSSIER-SOFTWARE.md` S2.2/S3.1) — R4.1 (tableau données IA) + R8 (tableau besoins) : « PC IA » → « G9 » ; (2) **R5.1** : le bloc « action corrective immédiate (exclure les stateful de Watchtower) » ne **re-déclare plus** la procédure → **pointeur** vers `DOSSIER-SOFTWARE.md` S13.0 (Phase A.0) + S11.4 (source unique). |
| 06/10/2026 | **v2.1** | **Renforcement backup + Watchtower** (après l'**incident Nextcloud** du 06/10, snapshot `ETAT-DE-LART-2026-10-06.md` §3) : **R7 risque #1** confirmé (HyperBackup **données** en échec depuis **01/10/2024** — 108 erreurs, dernière entrée 03/11/2024, destination USB3 absente, pas de restic/borg) ; **R5** : prérequis absolu « backup 3-2-1 fonctionnel AVANT toute migration / MAJ stateful » + **action corrective immédiate** (exclure les stateful de Watchtower sur le NAS actuel) + **accès SSH** au xpenology (`Effi@192.168.1.25:222`, Docker hors PATH, stateful en GUI → re-déclarer en compose). Lien `DOSSIER-SOFTWARE.md` S11.4/S11.5 + S13 A.0. |
| 30/09/2026 | v1.0 | Création du dossier v1 (`DOSSIER-INFRA.md`) — vision, état de l'art, besoins, architecture, décisions ouvertes, risques, plan. |
| 30/09/2026 | v1.1 | (dossier v1) Corrections, clarification scope, risque backup Freebox. |
| 02/10/2026 | **v2.0** | **Nouveau dossier (`DOSSIER-RECREATION.md`)** — architecture cible **redistribuée** : J5040 = edge, G9 = cœur famille (RAID1 + USB), PC IA = IA 24/7, G7 = spare (réutilisé, pas décommissionné), jeux sur BC250/Laptop. **Données IA intégrées au 3-2-1**. Plan Phase 0 (0.1–0.7). Supplante `DOSSIER-INFRA.md`. |