Deux mouvements d une seule doctrine : le site fournit tout ce dont un
tenant a besoin pour venir au monde.
1. LES DEPOTS TIERS. Grafana, Icinga, Smallstep et Collabora ne publient
qu en HTTPS ; apt-cacher-ng ne relaie pas un tunnel, et le socle pose donc
Acquire::https::Proxy DIRECT. Chaque machine sortait elle-meme sur
Internet. Le cache declare desormais un Remap par fournisseur, et chaque
role demande en {{ ..._depot_schema }}:// - http des qu un cache est
declare, https sinon. Le TLS n est rompu nulle part : il est TERMINE au
cache, qui est notre machine, et l integrite vient des signatures.
avant : 4 fournisseurs en HTTPS direct, 14 machines sortant seules
apres : 0 source en HTTPS direct, 0 erreur apt sur 14 machines
Trois lecons. Le remap appartient au cache qui SORT : pose sur un cache
chaine, il tente le HTTPS a travers son amont et rend 503. apt_repository
AJOUTE au lieu de remplacer, donc l ancienne ligne https sortait toujours.
Et la liste des fournisseurs ne se devine pas - j en avais trois, l audit
en a revele un quatrieme.
2. LE CACHE DU TENANT. Sa ligne portait son propre retrait depuis toujours
- service MUTUALISABLE, un ecosysteme au premier age peut pointer sur celui
de son hote. Retiree. Ce qu on perd, dit franchement : plus de trafic
inter-zone et plus de charge sur site-cache-01, contre un service de moins
a poser, superviser et reproduire.
3. UN ROLE QU ON RETIRE DOIT DEFAIRE CE QU IL A FAIT. Le retrait a montre
que rien ne nettoie derriere. Le fichier apt visait un cache eteint en
ecrasant le plancher qui fonctionnait - le defaut deja paye a quinze
machines. Et les sondes du cache restaient, le porteur poussant pour des
services qu Icinga ne definit plus (404). Le socle retire le premier,
client_sante derive les sondes attendues et retire les orphelines.
P65 refuse tout role visant un depot relaye en https ecrit en dur. Sa
limite est dite : elle empeche une regression sur ce qui est connu, elle ne
decouvre pas l inconnu.
Mesure : Icinga 87 OK sur 96, prouver 65 OK, lint 0 defaut.
Reste, et c est dit : apt-cacher-ng tourne toujours sur forge-01 que plus
aucun plan ne declare.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
93 lines
5 KiB
YAML
93 lines
5 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: "{{ serveur_collabora_depot_schema }}://www.collaboraoffice.com/repos/CollaboraOnline/CODE-deb"
|
|
serveur_collabora_depot_cle_url: "{{ serveur_collabora_depot_schema }}://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: ""
|
|
|
|
# --- SCHEMA DU DEPOT TIERS (2026-09-10) ------------------------------------------------
|
|
# Meme derivation que les six autres roles a depot tiers : `http` des qu'un cache est dans
|
|
# le chemin, `https` sinon. Voir `serveur_artefacts_remaps` pour la moitie qui relaie.
|
|
serveur_collabora_depot_schema: >-
|
|
{{ 'http' if (artefacts_amorcage | default('') | string | length > 0) else 'https' }}
|