Maison numérique souveraine (offres maison-obnl + cabinet). Tâches découpées : paquets → php (512M + TLS PG) → install (occ, PG verify-full) → exposition (vhost .mjs) → configure (overwrite/redis/anti-SSRF/import CA) → OIDC user_oidc → Collabora richdocuments (WOPI split URL) → thème Alliance (ciel étoilé). Chaque réglage encode un piège prouvé sur collab-01 : imagick Debian 13, PGSSLMODE dans php-fpm, MIME .mjs, allow_local_remote_servers (SSRF), import root step-ca, memory_limit 512M, public_wopi_url après activate-config… Version épinglée (robustesse). ansible-lint profil production : 0 échec. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
32 lines
2.4 KiB
Markdown
32 lines
2.4 KiB
Markdown
# 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.<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_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).
|