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
This commit is contained in:
Effi
2026-10-11 07:45:00 +02:00
commit c246427cf5
39 changed files with 6131 additions and 0 deletions
+635
View File
@@ -0,0 +1,635 @@
# 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`. |