migration/infra #1

Merged
lafrite merged 2 commits from migration/infra into main 2026-08-12 14:41:05 +00:00

2 Commits

Author SHA1 Message Date
4aacd902f1 feat(vault): migre vault.opytex.org vers stacks/
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>
2026-08-12 16:38:34 +02:00
d619f165f0 feat(secrets): chiffrement des secrets avec SOPS + age
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>
2026-08-12 16:38:34 +02:00