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>
|
||
|---|---|---|
| .. | ||
| inventories/production/group_vars | ||
| plan | ||
| README.md | ||
Modèle : collaboration
Socle + identité + collaboration — 8 VM : le modèle identite
(socle infra + PostgreSQL/Redis + OpenLDAP + Keycloak) + un nœud collab
exécutant Nextcloud (fichiers, documents, agendas, contacts) et Collabora
Online (édition de documents, WOPI). SSO Keycloak, PG chiffré, exposés via l'edge.
C'est le cœur des offres maison-obnl (OBNL/coops) et cabinet (PME de professionnels) : le remplaçant souverain de Google Workspace / Microsoft 365.
Zones : Frontière (16) · Identité (17) · Données (18) · Services-infra (19) ·
Collaboration (20). VMID ip-miroir.
Exposé
cloud.<domaine>→ Nextcloud (collab-01:80)bureau.<domaine>→ Collabora (collab-01:9980, WebSocket auto)
Les SAN du cert edge et le plancher /etc/hosts sont dérivés du plan (aucune
liste manuelle) ; le vhost Collabora est WebSocket-aware via websocket: true.
Secrets de voûte requis (Ansible Vault)
vault_bd_nextcloud: "..." # mot de passe BD de l'utilisateur nextcloud
vault_nextcloud_admin: "..." # mot de passe admin Nextcloud initial
vault_nextcloud_oidc: "..." # secret du client OIDC 'nextcloud' (= côté Keycloak)
(plus ceux du modèle identite : vault_bd_keycloak, vault_keycloak_admin, PKI…)
Utilisation
cp -r exemples/modeles/collaboration ../OPS-<tenant>
# éditer : intrants (domaine_interne, organisation, identite_realm),
# nomenclature.yml (index unique + supernet du tenant), domaines
ln -s ../OPS-<tenant> instance
make instancier-appliquer FORCE=1