Set-OPS-Public/roles/serveur_collabora/README.md
Daniel Allaire da4976aa98 serveur_collabora : rôle codifié depuis le spike (Docker, WOPI)
Conteneur collabora/code (restart always), publié sur localhost + IP LAN
(gotcha : bind localhost seul → 502 depuis l'edge), aliasgroup = domaine
Nextcloud, ssl.termination à l'edge, attente santé /hosting/capabilities.
meta/flux.yml (ingress 9980 depuis edge) alimente le registre des flux.

Docker (prouvé au spike) ; CODE natif = option future à spiker. Tag à épingler.
ansible-lint profil production : 0 échec.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 15:03:07 -04:00

27 lines
1.5 KiB
Markdown

# serveur_collabora
Serveur d'édition de documents **Collabora Online (CODE)**, protocole WOPI, consommé
par Nextcloud (`richdocuments`). **Codifié depuis le spike du 2026-07-05** (Docker, prouvé).
## Ce que le rôle fait
- Installe Docker + lance le conteneur `collabora/code` (`restart: always`) ;
- publie sur `127.0.0.1:9980` (Nextcloud co-localisé) **ET** l'IP LAN `:9980` (l'edge) — gotcha spike : bind localhost seul ⇒ **502** depuis l'edge ;
- `aliasgroup1` = le domaine Nextcloud (`cloud.<domaine>`) — Collabora n'accepte le WOPI que de cet hôte ;
- `ssl.enable=false` + `ssl.termination=true` (TLS terminé à l'edge) ;
- attend la santé (`/hosting/capabilities` = 200).
## Dépendances / exposition (à fournir)
- **Vhost edge WebSocket-aware** : `bureau.<domaine>` → ce nœud:9980 avec `map $http_upgrade`
+ en-têtes `Upgrade`/`Connection` + `proxy_read_timeout` long. **Le vhost générique ne suffit pas**
(l'édition live échoue sans WebSocket) ;
- FQDN `bureau.<domaine>` dans les SAN du cert edge ;
- port 9980 à firewaller (voir `meta/flux.yml` : ingress depuis l'edge seulement).
## Docker vs natif
Le spike a prouvé **Docker** → on codifie Docker. Le **CODE natif** (paquets Collabora,
`loolwsd`) serait plus « Set-OPS » (natif, pas de moteur Docker) mais exigerait **son propre
spike**. Décision à trancher.
## Robustesse
- **Épingler `serveur_collabora_tag`** en prod (pas de `:latest` surprise) ;
- surveillance Icinga sur `/hosting/capabilities`.