# 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 1. Paquets PHP-FPM 8.4 + extensions, nginx, redis (imagick tire ses deps — **pas** `libmagickcore-6`, absent de Debian 13) ; 2. tuning PHP **512M** + opcache, et `env[PGSSLMODE]`/`PGSSLROOTCERT` dans le pool php-fpm (PDO pgsql lit libpq) ; 3. tarball **épinglé** → `/var/www/nextcloud` + `occ maintenance:install` sur PG en **verify-full TLS** ; 4. vhost nginx local avec **MIME `.mjs` = text/javascript** (sinon modules ES bloqués → pages blanches) ; 5. `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 ; 6. SSO **user_oidc** (Keycloak) ; **richdocuments** (WOPI : `wopi_url` local + `public_wopi_url` edge, posé *après* activate-config) ; 7. 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` (consommateur `serveur_nextcloud`) dans `bases-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_collabora`** actif (le serveur WOPI) + son exposition `bureau.` ; - **Exposition edge** : `cloud.` → ce nœud:80, avec le FQDN dans les SAN du cert edge ; - **Plancher** : le nœud doit résoudre `bureau.` (→ edge) ; `client_pki` pour 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).