Commit graph

12 commits

Author SHA1 Message Date
36a882b125 Adressage derive du seul seed index (rupture, mode compact retire)
Principe : les valeurs de configuration se derivent des intrants, elles ne se
reecrivent pas a la main. La nomenclature dupliquait ce qu'index determine deja
(supernet, sous-reseaux, passerelles, VLAN). Corrige en rupture nette.

- inventory_rules : source unique de derivation — supernet_de, base3_de,
  sous_reseau_de, passerelle_de, vlan_de. Modele 6 zones encode une fois
  (2e octet = 10+index, 3e octet zone = 15+categorie, VLAN = 1000+index*10+zone).
  deriver_nomenclature ne lit plus aucun adressage stocke ; mode compact supprime.
- devis_reseau : importe ces helpers (fin de la duplication) ; decouvre les
  tenants sur `index` present (filtre vmid_schema retire).
- GUI : `index` devient un INTRANT (section Reseau). Il vit dans la nomenclature
  (plan reseau uniforme, contrairement aux intrants des modeles heterogenes) et
  le GUI l'ecrit chirurgicalement (une ligne, sans reformater). Le miroir JS
  derive le VLAN du seed (fin de la lecture de c.vlan stocke).
- socle public : nomenclature au format maigre.

Preuve P20 (preuve_nomenclature_derivee) : aucune nomenclature ne stocke
d'adressage — garde-fou permanent, teste en negatif.

Valide : DIFF VIDE sur les 3 instances (la derivation reproduit exactement
l'adressage stocke), 7 modeles valident, devis_reseau genere les memes VLAN
(1011-1016 derives), make verifier rc=0 CONFORME 20/20, node --check du GUI OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-23 02:58:15 -04:00
835f8ab6d0 Mise en conformité prouvable : registre d'affirmations + make prouver
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>
2026-07-20 19:53:18 -04:00
a1cfe77b4a Modèles : extraire les modèles assemblés vers un dépôt privé (Set-OPS-modeles)
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>
2026-07-05 19:31:50 -04:00
61a6526ffb Modèle presence-web : complété (rôles web existent) — expose + group_vars d'exemple
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>
2026-07-05 18:50:46 -04:00
1f9cc0a0d3 Modèles : nouveau modèle 'collaboration' + collaboration dans 'integral'
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>
2026-07-05 16:21:25 -04:00
6eb178598f Modèles partiels rafraîchis (socle/identite/observabilite/forge) + presence-web flaggé
Réalignés sur le moule integral : 6 zones (numéros/VLAN cohérents), vmid_schema
ip-miroir, fonctions éprouvées (data→data-sql, idm→id-ldap+id-sso, mon→sup),
nouveaux intrants (fuseau_horaire/organisation/identite_realm). Prouvés (dérivation
9 chiffres + valider_serveurs).

presence-web : marqué ASPIRATIONNEL (fonctions web-frontal/dorsal sans rôle réel) —
honnêteté plutôt que faux-prêt. README général corrigé (état + intrants).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 01:11:52 -04:00
4037eafb63 Modèle integral rafraîchi : 6 zones, fonctions éprouvées, VMID ip-miroir, nouveaux intrants
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>
2026-07-05 01:04:29 -04:00
e006dee693 Retirer 3 rôles legacy (serveur_sendmail, client_dns, client_ldap) + nettoyage
Supprimés (supersédés / hors-conception) : serveur_sendmail (→ Postfix),
client_dns (→ plancher + client_unbound), client_ldap (login LDAP OS, hors
design). Rôles + playbooks de groupe retirés.

Nettoyage des références :
- dependances-groupes.yml : entrées client_dns/client_ldap retirées + entrées
  mortes des scaffoldings (nextcloud/collabora/client_supervision) ; deps
  périmées corrigées (client_smtp → serveur_postfix ; serveur_keycloak →
  serveur_postgresql, la raison parlait à tort de Nextcloud).
- 6 modèles d'exemple : app mail serveur_sendmail → serveur_postfix.
- README, AGENTS : listes/glossaire nettoyés.
- catalogue-services : listes, tables, roadmap ; note « rôles retirés ».
- nomenclature-vm : infra-mail-01 → serveur_dovecot (était faux).
- courriel-conception, dns-interne (re-ciblé client_unbound), pouvoirs,
  intrants, READMEs (client_smtp/forgejo/openldap/unbound).

ansible-lint : 0 échec (366 fichiers). instancier OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-04 12:14:04 -04:00
e01adac67b Courriel : pivot de Stalwart vers Postfix/Dovecot/rspamd
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>
2026-07-02 12:52:49 -04:00
e3efbb5b1a serveur_stalwart : Phase 1 (install + démarrage), code prod
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>
2026-07-02 10:24:50 -04:00
c4e73f8712 Consolider les secrets dans une voûte unique par environnement
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>
2026-06-30 15:42:12 -04:00
Alliance Boreale
3dd3f43ad8 Set-OPS — moteur d'ecosystemes numeriques souverains (Alliance Boreale) 2026-06-24 20:17:46 -04:00