Set-OPS-Public/roles/serveur_collabora/defaults/main.yml
Daniel Allaire 70e57076e8 collabora : en natif, la derniere exception conteneurisee tombe
Le role lancait collabora/code dans Docker -- seule exception de la flotte au
principe « logiciel libre en natif ». Desormais : paquet coolwsd du depot amont,
systemd, derriere l'edge nginx. community.docker est retiree de requirements :
plus aucun role n'a besoin de Docker.

Eprouve avant d'ecrire, sur une Debian 13.6 reelle et sans rien installer :
apt-get install --simulate coolwsd resout jusqu'a « Conf coolwsd (26.04.3.1-1) »,
libgcc1 est fourni par libgcc-s1, et le depot CODE-deb est PLAT.

La configuration passe par un fragment systemd (--o:) : le coolwsd.xml livre,
439 lignes commentees, reste intact.

Trois outils du harnais ont pese. voute.py lisait les COMMENTAIRES : documenter
le nom d'une clef suffisait a l'exiger -- corrige, controle negatif fait. Et
verifier_intrants avait raison : une garde ecrite en deux morceaux promettait un
secret pour une console fermee ; reecrite en implication, elle dit le vrai
contrat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 16:23:35 -04:00

87 lines
4.6 KiB
YAML

---
# COLLABORA ONLINE, EN NATIF — plus de conteneur.
#
# Ce rôle lançait `collabora/code` dans Docker, ce qui contredisait le principe fondateur
# du dépôt : logiciel libre **en natif**, systemd + paquets + nginx, zéro conteneur. C'était
# la seule exception de la flotte, et elle traînait une dépendance entière
# (`community.docker`) qui n'était même pas déclarée dans `requirements.yml`.
#
# CE QUI A ÉTÉ ÉPROUVÉ AVANT D'ÉCRIRE CE RÔLE (2026-08-24), sur une Debian 13.6 réelle,
# sans rien installer :
#
# apt-get install --simulate coolwsd -> résout jusqu'à « Conf coolwsd (26.04.3.1-1) »
# libgcc1 (exigé) -> fourni par libgcc-s1 sur trixie
# le dépôt CODE-deb est PLAT -> Packages et Release à la racine, pas de dists/
#
# Le paquet livre aussi `/etc/nginx/snippets/coolwsd.conf` et un profil AppArmor — deux
# choses que cette flotte sait déjà exploiter, contrairement à une image opaque.
serveur_collabora_paquets:
- coolwsd
serveur_collabora_service: "coolwsd"
serveur_collabora_port: 9980
# --- LE DÉPÔT AMONT ----------------------------------------------------------
#
# Dépôt PLAT : `Suites: ./` et pas de composant. Une source classique (`deb … stable
# main`) ne le trouverait pas.
serveur_collabora_depot_uri: "https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-deb"
serveur_collabora_depot_cle_url: "https://www.collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg"
serveur_collabora_depot_cle_fichier: "/etc/apt/keyrings/collaboraonline.gpg"
# --- CONFIGURATION : PAR SURCHARGE, PAS PAR RÉÉCRITURE -----------------------
#
# Le `coolwsd.xml` livré fait 439 lignes richement commentées. Le remplacer par un gabarit
# maison, ce serait s'engager à suivre son évolution à chaque version amont — et perdre
# les commentaires qui expliquent chaque réglage.
#
# `coolwsd` accepte des surcharges `--o:<clé>=<valeur>` sur sa ligne de commande. On pose
# donc un fragment systemd : la configuration de Set-OPS tient en un seul fichier lisible,
# le fichier du paquet reste intact, et `apt purge` rend la machine à son état d'origine.
serveur_collabora_fragment: "/etc/systemd/system/coolwsd.service.d/setops.conf"
# TLS TERMINÉ À L'EDGE, comme tout le reste de la flotte : `serveur_nginx` présente le
# certificat step-ca, Collabora écoute en clair derrière lui.
serveur_collabora_ssl_enable: false
serveur_collabora_ssl_termination: true
# Nom externe, tel que le navigateur l'atteint. Vide = déduit de la requête, ce qui échoue
# derrière un mandataire inverse — d'où la valeur explicite.
serveur_collabora_server_name: "bureau.{{ domaine_interne }}"
# Hôtes WOPI autorisés — qui a le droit de faire éditer un document.
#
# Les défauts du paquet couvrent déjà les plages privées (10/8, 172.16/12, 192.168/16,
# loopback), donc l'adressage dérivé de Set-OPS. On ajoute le FQDN de Nextcloud pour que
# l'autorisation soit LISIBLE dans le plan plutôt que déduite d'un masque.
serveur_collabora_domaine_nextcloud: "cloud.{{ domaine_interne }}"
# --- CONSOLE D'ADMINISTRATION : FERMÉE PAR DÉFAUT ----------------------------
#
# Elle sert à surveiller les sessions et les documents ouverts. Personne n'en a besoin au
# quotidien, et elle expose un formulaire identifiant/mot de passe de plus — hors de tout
# SSO, avec un secret à créer, à faire tourner et à surveiller.
#
# Même raisonnement que `serveur_forgejo_connexion_locale` : une porte ouverte en
# permanence contourne la politique centrale et ne se révoque nulle part. On la ferme, et
# l'on garde l'accès par SSH à l'hôte — le mécanisme de secours retenu par ce dépôt.
#
# L'ouvrir exige alors un secret en voûte, et de l'ajouter au gabarit de l'instance.
# LE MOT DE PASSE N'EST PAS TIRE D'UNE CLE DE VOUTE PAR DEFAUT, ET C'EST VOULU.
#
# `scripts/voute.py` exige de la voute TOUTE reference `vault_*` trouvee dans un role
# actif — c'est ce qui garantit qu'aucun secret n'est oublie. Mais une porte FERMEE ne
# doit pas reclamer de clef : nommer ici `vault_collabora_admin` obligerait chaque
# ecosysteme installant Collabora a inventer, chiffrer et faire tourner un secret pour
# une console que personne n'ouvre.
#
# Qui veut la console la declare chez lui :
#
# # group_vars/serveur_collabora.yml de l'instance
# serveur_collabora_admin_actif: true
# serveur_collabora_admin_mot_de_passe: "{{ vault_collabora_admin }}"
#
# et ajoute `vault_collabora_admin` a son gabarit de voute — ou P18 le lui rappellera.
serveur_collabora_admin_actif: false
serveur_collabora_admin_utilisateur: "collabora-admin"
serveur_collabora_admin_mot_de_passe: ""