Rend l'écosystème reconstructible en une commande (create+deploy idempotent) et ajoute la couche « accès » (nftables least-privilege) au zéro-confiance. Orchestrateur (phase 2) : - docs/couches-deploiement.yml : registre des couches (socle → pki → services → apps → agents) - scripts/orchestrer.py : tri par couche + topo intra-couche (graphe) → playbooks/site.yml ordonné - Makefile : site / deployer-tout / flotte-creer / reconstruire / myDay (+ gardes CONFIRMER) - docs/dependances-groupes.yml : graphe complété (keycloak→openldap, dovecot, postfix, icingaweb2, nextcloud) Audit codé-en-dur (phase 1b) : labels/slug OIDC dérivés de l'intrant `organisation` (serveur_forgejo/grafana/nextcloud) — le moteur ne porte plus de nom de tenant. Registre des flux réseau (phase 0) : - meta/flux.yml pour tous les rôles (29 rôles, 63 flux ; schéma + matrice validés) - scripts/resoudre_flux.py : matrice d'audit (docs/registre-flux.md) + rulesets nftables résolus par hôte - roles/nftables_baseline : déploie le ruleset résolu (moindre-privilège) quand activé, sinon repli Correctifs : détection du coffre Vault (chemin production → inventaire réellement résolu). Outillage : make wiki-publier (publication du wiki pédagogique dans Forgejo). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| defaults | ||
| files | ||
| handlers | ||
| meta | ||
| tasks | ||
| templates | ||
| README.md | ||
serveur_nextcloud
Maison numérique souveraine : fichiers + collaboration (Nextcloud + Collabora), SSO Keycloak, base PostgreSQL chiffrée. Codifié depuis le spike empirique du 2026-07-05 (collab-01) — chaque réglage encode un gotcha prouvé sur du vrai. Cœur de l'offre maison-obnl (OBNL/coops) et cabinet (PME de professionnels).
Ce que le rôle fait
- Paquets PHP-FPM 8.4 + extensions, nginx, redis (imagick tire ses deps — pas
libmagickcore-6, absent de Debian 13) ; - tuning PHP 512M + opcache, et
env[PGSSLMODE]/PGSSLROOTCERTdans le pool php-fpm (PDO pgsql lit libpq) ; - tarball épinglé →
/var/www/nextcloud+occ maintenance:installsur PG en verify-full TLS ; - vhost nginx local avec MIME
.mjs= text/javascript (sinon modules ES bloqués → pages blanches) ; overwrite*+trusted_proxies(edge) + Redis +allow_local_remote_servers(anti-SSRF, IP privées) + import du root step-ca dans le bundle CA propre de Nextcloud ;- SSO user_oidc (Keycloak) ; richdocuments (WOPI :
wopi_urllocal +public_wopi_urledge, posé après activate-config) ; - identité Alliance Boréale (theming + thème « ciel étoilé ») + whitelist anti-force-brute du sous-réseau d'admin.
Dépendances (à fournir avant déploiement)
- Registre BD : une base
nextcloud(consommateurserveur_nextcloud) dansbases-donnees.yml; - Voûte :
vault_nextcloud_admin,vault_nextcloud_oidc(secret du client Keycloak) ; - Keycloak : un client
nextcloud(redirect…/apps/user_oidc/code) dans le realm de l'instance ; serveur_collaboraactif (le serveur WOPI) + son expositionbureau.<domaine>;- Exposition edge :
cloud.<domaine>→ ce nœud:80, avec le FQDN dans les SAN du cert edge ; - Plancher : le nœud doit résoudre
bureau.<domaine>(→ edge) ;client_pkipour le root_ca.
Robustesse (hygiène Nextcloud)
- Version épinglée (
serveur_nextcloud_version) — pas de mise à jour surprise ; - upgrades en escale (staging → prod), sauvegarde d'abord (restic), surveillance Icinga ;
- l'app riche en config → traiter avec soin (le spike a documenté les pièges, on n'improvise pas).
Validation
ansible-lint : profil production (0 échec, 0 avertissement). --syntax-check : OK.
Éprouvé bout-en-bout sur collab-01 (SSO, édition .odt, apps, identité visuelle).