`external-ip` pointait sur 91.121.90.228, l'adresse d'admin.opytex.org, alors
que la stack tourne sur chioggia (188.165.240.182) : coturn annonçait aux
clients une machine qui n'écoute rien sur ces ports.
3478 n'était par ailleurs publié qu'en TCP, alors qu'un client TURN tente
l'UDP en premier. Les deux défauts se cumulaient, le relais était inopérant.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Déclarer `labels: backup.enable` sur un volume qui existe déjà ne se
contente pas d'être sans effet : Compose détecte la divergence entre la
déclaration et le volume, et propose de le recréer — donc de détruire le
coffre. La question est posée au premier `up`, avec « data will be lost ».
La sauvegarde de ce volume passe par MANUAL_VOLUMES dans backup.conf.
Le label reste la bonne méthode pour un volume neuf uniquement.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Première stack migrée vers le nouveau modèle. Le nom du dossier est
conservé à l'identique : il détermine le nom du projet Compose
(vaultopytexorg) et donc le préfixe des volumes, ce qui permet de
reprendre les données existantes.
- env_file : les 22 variables non sensibles, en clair et diffables
- secrets.env.yaml : ADMIN_TOKEN et SSO_CLIENT_SECRET, chiffrés
- env_file: .env supprimé ; les deux secrets passent par ${VAR:?} pour
échouer franchement si `sops exec-env` est oublié
Corrections au passage :
- priority=10 sur le router principal. Sans elle Traefik la déduisait de
la longueur de la règle (23), contre 26 sur le router /admin : trois
caractères de marge avant que /admin ne perde le forward auth.
- backup.enable sur le volume, qui n'était couvert par aucune sauvegarde.
À compléter dans MANUAL_VOLUMES : un label n'agit pas sur un volume
déjà créé.
- version d'image figée (1.35.7) au lieu de latest, détectable par Renovate
- security_opt: no-new-privileges
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>