Décisions d'architecture (ADR)¶
Journal des choix structurants et de leur pourquoi. Format léger : Contexte → Décision → Conséquences.
ADR-001 — Projet compose unique (include:) au lieu d'un Makefile¶
- Contexte : ancien monolithe
docker-compose.yml+ wrapper Makefile/--env-file. - Décision : un seul
compose.yaml(projettichnou) quiinclude:un compose par domaine, chacun avec sonenv_file. - Conséquences :
docker compose up -dpilote tout ; IP/secrets résolus par stack ; plus de make. Limite :depends_oninter-stacks impossible → dépendances retirées (cf. ADR-003).
ADR-002 — Adressage IP centralisé (network.env)¶
- Décision : toutes les IP dans
network.env(IP_<SERVICE>), référencées${...}. - Conséquences : une seule source de vérité ; changer une IP = 1 ligne +
up. Interdit d'écrire une IP en dur (sauf exceptionactions-manager, cf. Pièges).
ADR-003 — Pas d'ordre de démarrage global¶
- Décision : s'appuyer sur
restart:(reconnexion auto) +depends_onintra-stack. - Conséquences : démarrage robuste sans orchestrateur d'ordre ; les services doivent tolérer l'indisponibilité temporaire de leurs dépendances.
ADR-004 — TimescaleDB pour l'historique HA¶
- Décision : PostgreSQL+Timescale pour le recorder/LTSS (compression, perfs séries-temps).
ADR-005 — RAID1 pour les photos, mais backup séparé¶
- Décision : library Immich sur RAID1 (
md0) ; base sur/(sauvegardée) ; cache ML exclu. - Conséquences : tolérance à une panne disque, mais RAID1 ≠ sauvegarde → backup média à part.
ADR-006 — Démon Docker indépendant des disques secondaires¶
- Décision :
/var/lib/dockersur/; montages secondaires ennofail; supprimer toutRequiresMountsForcouplant Docker à un disque. Un disque absent ne doit pas bloquer Docker.
ADR-007 — Wiki = MkDocs Material (markdown pur, git)¶
- Contexte : besoin d'une mémoire infra double usage (humain + Claude).
- Décision : MkDocs Material — source
.mdsur disque (lisible Claude), git + remote, statique, léger ; pages volatiles auto-générées séparées du rédigé. Alternatives écartées : Wiki.js (Postgres + synchro git délicate), BookStack (stockage en base, pas de.md). - Conséquences : édition via fichiers/code-server/git (pas de WYSIWYG navigateur) ; accès interne direct sans friction pour l'agent.