Le dépôt fait / explique / prouve ce qu'il affirme, vérifiable en une commande.
- Phase 1 : docs/audit/affirmations.md — 54 affirmations publiques tracées vers
une commande de preuve et un statut (✅/🟡/❌/⚪).
- Phase 2 : CLAUDE.md réduit à un pointeur mince ; contradiction SSH levée (le
code applique déjà PasswordAuthentication no + AuthenticationMethods publickey,
conforme à AGENTS.md) ; section AGENTS « Codex » → « agents IA ».
- Phase 3 : parcours démarrage réparé (QUICKSTART renvoyait à un modèle absent,
chemins de voûte faux, commandes make périmées) ; make verifier vert
(ansible-lint 33 → 0 : site.yml généré nommé, pipefail, name[template]) ;
voûte Proxmox unifiée lue par le clonage (all/vault.yml).
- Phase 4 : make prouver → docs/audit/preuve-<date>.md, harnais rejouable qui
rappelle l'outillage existant (aucune validation réimplémentée).
- Phase 5 : parcours QUICKSTART prouvé hors-ligne sur le socle ; modèle socle
rendu valide (autorite interne → auto-heberge) ; split-brain d'inventaire
corrigé (repli sur le répertoire existant, pas principal/).
make prouver : 15 OK, 0 échec, 1 sautée (voûte). ansible-lint : 0 failure.
Écarts découverts en cours de traitement (AFF-097..100) : tous résolus.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Le public ne garde que le modèle générique 'socle' (preuve libre reproductible).
Les modèles assemblés (identite/observabilite/forge/collaboration/presence-web/
integral) = actif commercial, déplacés dans Set-OPS-modeles (privé). Le moteur
(rôles, machinerie) reste libre.
NB : ces modèles restent dans l'HISTORIQUE git de ce dépôt — mettre Set-OPS-Public
en visibilité privée sur le Forgejo, ou réécrire l'historique (git filter-repo).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Les rôles serveur_web_frontal/dorsal existent maintenant → presence-web passe de
« rôles à construire » à ✅. Apps frontal/dorsal exposées (site./app.<domaine>),
group_vars d'exemple (sites statiques + webapp Python). Instancie proprement.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ce qui manquait aux modèles = la collaboration (Nextcloud/Collabora), placeholder
'rôles à construire' du README, désormais bâti.
- exemples/modeles/collaboration/ : socle + identité + nœud collab (8 VM, zone
Collaboration VLAN 20) ; nextcloud+collabora exposés (cloud/bureau, websocket auto),
base nextcloud, client Keycloak nextcloud. SANs edge + plancher auto-dérivés.
- integral : + collab-01 (zone Applications), nextcloud/collabora/base/client — il
tient enfin sa promesse de « tout ».
- README : collaboration ✅.
Les deux modèles instancient proprement (collab dérivé, expositions auto).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Régénéré depuis le cas prouvé (Technolibre/lab), rendu générique (exemple.internal,
index à remplacer). 12 VM en 6 zones de sécurité, vmid_schema: ip-miroir, intrants
fuseau_horaire/organisation/identite_realm. Prouvé (dérivation + valider_serveurs).
README réécrit (tableau des zones, procédure d'instanciation).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Stalwart trop jeune/volatil pour un pilier mail critique (config cassée
0.15→0.16, `config apply` annoncé non livré, API REST supprimée pour
JMAP, gros backlog). Pivot vers la stack mature Postfix/Dovecot/rspamd,
100 % configurable par fichiers (alignée au modèle déclaratif Set-OPS).
- Rôle serveur_stalwart retiré (Phase 1 prototypée ; git en garde la trace).
- docs/courriel-conception.md mis à jour ; vault_stalwart_admin retiré.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Stalwart Mail Server v0.16.11, binaire unique natif. Mécaniques réelles
validées empiriquement sur le binaire :
- config.json = objet typé {"@type":"RocksDb","path":…} (DataStore seul) ;
- démarrage IaC en mode récupération (STALWART_RECOVERY_MODE +
STALWART_RECOVERY_ADMIN), admin depuis la voûte (vault_stalwart_admin).
Rôle : install version-épinglée, user système, unité systemd durcie
(CAP_NET_BIND_SERVICE, ProtectSystem), EnvironmentFile pour le secret.
Phase 2 (écouteurs/TLS step_ca/annuaire LDAP/DKIM via API d'admin) à venir.
Validé statiquement (ansible-lint, syntax, rendu config.json).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Fini les voûtes éparpillées : tous les secrets (token Proxmox + vault_*)
vivent dans group_vars/all/vault.yml, un seul fichier chiffré, un seul mot
de passe. Gabarit committé exemples/vault.exemple.yml (17 clés). make config
écrit/édite cette voûte (semée depuis le gabarit si absente). .gitignore
durci (**/vault.yml). Docs : config-proxmox.md (+ migration), intrants-
communs.md §H, QUICKSTART. Le GUI ne stocke aucun secret.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>