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>
Met en place la mécanique de gestion des secrets du dépôt :
- .sops.yaml : deux périmètres séparés par acteur. Les
stacks/*/secrets.env.yaml sont déchiffrables par le compte de
déploiement de chioggia ET l'admin ; tout le reste par l'admin seul.
Une compromission du serveur ne donne donc pas accès aux credentials
OVH, qui restent gérés par pass.
- .gitignore : tout .env est traité comme un accident. La configuration
non sensible de chaque stack vit dans un fichier `env_file` versionné.
- README : création des clés, emplacements, recettes et pièges.
Les secrets sont injectés à la volée par `sops exec-env` : aucun fichier
déchiffré ne touche le disque.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>