Une session qui part d'un audit et finit en production : figer ce qui tourne, exporter ce qui vit, déployer, migrer, tourner le secret, clore. Aucun geste spectaculaire — c'est leur ordre qui a tout sauvé.
La base de données vivait dans un dossier éphémère du conteneur, alors que le volume censé la préserver était monté sur un dossier voisin.
Conséquence : elle n'était jamais sauvegardée, et le script de sauvegarde de la flotte archivait
un volume vide. Le geste de routine qui devait protéger les données les aurait regardées
disparaître au premier redéploiement. Quatre mois de vie du personnage — sans un seul message d'erreur.
Chaque étape mesurée avant d'être franchie. Aucune déduction depuis la prose.
Comparaison des fichiers réellement servis en production avec l'historique du dépôt → un commit précis de juin. Le tag de release existant était deux commits trop ancien : un retour dessus n'aurait pas restauré la vraie version.
Base copiée sans arrêter le service, empreinte vérifiée, contenu relu (niveau, expérience, quêtes) pour emporter du réel et pas une coquille vide.
Chaîne de déploiement morte (transfert FTP en échec à chaque poussée) remplacée par la
chaîne vivante : image construite, publiée, puis démarrée à distance via le script canonique.
Le « réimport » n'est pas un remplacement : la nouvelle version migre la base en place (migrations idempotentes) — les données survivent et se complètent.
Le jeton ayant été public, il est régénéré — des deux côtés (Hero et la porte d'intégration), puis les services recréés : un jeton est figé à la création du conteneur.
Récapitulatif daté, vérifications avec leur commande, chemin de retour, prochaine action exacte. Source de l'article publiée par branche propre — pas d'envoi direct sur l'arbre partagé.
Même service, même données — deux états mesurés à une heure d'intervalle.
env.jsFTP en échec à chaque pousséeenv.js sans jeton · jeton tournéSix vérifications rejouables, toutes vertes après bascule.
| Contrôle | Résultat |
|---|---|
Page env.js | aucun jeton |
| Écriture sans session | 403 |
| Fiche publique | 200 · niveau 7 |
| Page d'admin | 302 → connexion |
| Santé API | uptime faible |
| Front | assets v2 |
L'image de juin est figée dans un tag de retour ; les sauvegardes de configuration et d'environnement sont conservées à côté ; un export de la base existe hors du serveur.
deploy.sh hero-api hero-web --tag c99a0bc
La leçon n'est pas « on a livré une version ».
C'est qu'un déploiement — sans avoir mesuré ce qui tourne et où vivent les données —
aurait pu effacer quatre mois de vie, sans un seul message d'erreur.
Figer, exporter, mesurer : avant d'écrire quoi que ce soit.