Aller au contenu

Exploitation & déploiement

Ce site documente le code. Ce qui suit documente la machine : provisionner un serveur, déployer, poser des identifiants, sauvegarder, dépanner.

Cette documentation-là vit dans le dépôt deploy/, et — c’est délibéré — elle est aussi présente sur le serveur, dans /opt/titreo-epay/. C’est là qu’on la cherche pendant un incident, sans le dépôt sous la main.

Document Répond à Longueur
deploy/HANDOVER.md « je reprends ce projet, par où je commence ? » court, à lire d’abord
deploy/CREDENTIALS.md « on me donne une clé — où la mets-je, et comment sais-je qu’elle marche ? » une page par nature de secret
deploy/RUNBOOK.md tout le reste : premier déploiement, migration, rollback, rotation des secrets, sauvegarde, logs, métriques, dépannage exhaustif
deploy/VPS.md choix de l’hébergeur, création de l’instance, architecture processeur avant même le premier déploiement

Un seul point d’entrée, façade au-dessus du Makefile et des scripts de deploy/scripts/, qui restent la source de vérité. tep help liste tout.

Fenêtre de terminal
tep provision <hôte> # serveur vierge → prêt (utilisateur, Docker, pare-feu, SSH)
tep init # assistant → .env.prod complet et validé
tep deploy --host <hôte> # construit, transfère, migre, démarre
tep doctor # contrôles de fumée sur le déploiement en ligne

Au quotidien :

Fenêtre de terminal
tep env set <CLÉ> # poser une valeur : saisie masquée, validée, $ doublés
tep check titreo|smtp|psp # les identifiants sont-ils acceptés par leur propriétaire ?
tep status | logs | health # état, journaux, sondes
tep backup # sauvegarde à chaud
tep heal # redémarre ce que les sondes déclarent malade
tep demo setup # boutique de démonstration, de bout en bout

Accès Titréo d’un marchand, collecte des logs, paquets installables :

Fenêtre de terminal
tep gift set --merchant <id> --enseigne <nom> # vérifie les accès auprès de Titréo, puis les enregistre chiffrés
tep gift check --merchant <id> # les accès enregistrés sont-ils toujours acceptés ?
tep check titreo --merchant <id> [--card <barcode>] # idem ; avec --card, lit le solde et l'émetteur
tep obs on | off | status # collecte de métriques et de logs (Prometheus, Loki, Alloy)
tep plugin build presta --domain <domaine> # construit et contrôle le zip du module PrestaShop
tep plugin publish presta|sdk-js|sdk-php # dépose le paquet dans cdn/downloads/, empreinte comprise

tep gift set demande la clé en saisie masquée, ou la lit sur l’entrée standard quand la commande est pilotée par un script. Elle ne passe jamais par la ligne de commande. Il n’existe plus d’accès Titréo dans .env.prod : seules TITREO_API_BASE et TITREO_PRODUCT_LABELS y restent.

tep obs on est le préalable de la page Logs techniques.

Trois timers systemd sur le serveur :

  • titreo-sync.timer (2 min) — applique les images publiées par la CI, et la « recette » (compose, Caddyfile, scripts, CLI, documentation). La CI ne se connecte jamais au serveur : elle s’arrête au registre, le serveur tire.
  • titreo-heal.timer (1 min) — le gardien. Docker Compose ne redémarre pas un conteneur unhealthy : une sonde informe, elle ne répare rien. Le gardien répare, avec un plafond horaire au-delà duquel il renonce et le dit — parce qu’à ce stade la panne est dans une dépendance.
  • titreo-backup.timer (03:15) — sauvegarde chiffrée et externalisée, posée seulement si une destination est configurée.

PSP_CONFIG_KEK — perdue, les identifiants PSP et les accès Titréo enregistrés en base sont définitivement illisibles. BOOTSTRAP_SIGNING_KEY — changée, tous les manifests signés deviennent invalides.

Ils se mettent à l’abri une fois, à la main : tep secrets archive --passphrase. Détails et raisons dans deploy/CREDENTIALS.md.