Le runbook promettait cette rotation ; le code ne savait pas la faire. Les trois roles ne posaient le mot de passe qu'a la CREATION — regenerer la voute aurait produit le mensonge silencieux corrige toute la journee. Chaque role sait desormais CHANGER un mot de passe existant, idempotent par empreinte du secret applique. Pour Nextcloud le secret passe par l'environnement, pas par la ligne de commande ou il serait visible dans la table des processus. `grafana-cli` ecrivait dans une base FANTOME en annoncant « changed successfully » a chaque fois : il prend `paths.data` a `<homepath>/data`, le paquet Debian range la base dans /var/lib/grafana. Demasque par le champ `updated` du compte, reste a l'heure du deploiement initial malgre quatre reinitialisations « reussies ». Un message de succes n'est pas une preuve ; l'etat l'est. Verifie par authentification reelle : Grafana 200, Nextcloud 200. Forgejo ferme l'API par doctrine (D-41) — seule preuve disponible : le retour de la commande. Co-Authored-By: Claude Opus 5 <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).