+12
−3
+358
−48
File changed.
Preview size limit exceeded, changes collapsed.
Loading
Le script laissait l'exploitant devant un « docker compose up » réussi
et une base sans aucun compte. Il propose désormais, une fois l'API
vérifiée, de créer le premier administrateur d'instance — le jeu de
démonstration n'étant plus qu'un choix parmi trois, et non le seul
chemin vers une instance utilisable.
Le mot de passe part par un tube vers la commande d'amorçage, jamais en
argument.
UN VOLUME POSTGRESQL EXISTANT INTERDIT DE TIRER UN MOT DE PASSE NEUF.
PostgreSQL ne lit POSTGRES_PASSWORD qu'à la CRÉATION de son volume : sur
une base déjà là, le script écrivait dans .env un mot de passe que la
base n'avait jamais eu, et l'application échouait ensuite sur un
« password authentication failed » que rien ne rattachait à
l'installation. Le volume du projet est maintenant reconnu par ses
étiquettes Compose, et le script demande soit le mot de passe d'origine,
soit la destruction assumée des données.
Un .env existant peut être COMPLÉTÉ. Le choix était « remplacer ou
renoncer », ce qui ne répondait pas au cas réel : docker-compose.yml
gagne des variables au fil des versions, et l'ancien fichier n'a aucune
raison d'être jeté pour autant. Les valeurs présentes sont conservées,
seules les manquantes sont ajoutées.
Le port d'écoute est vérifié avant d'être écrit : un port déjà pris
faisait échouer le démarrage sur un « port is already allocated »
apparaissant longtemps après la question qui l'avait causé. Le port que
tient notre propre pile n'est pas compté comme un conflit.
openssl n'est plus obligatoire : /dev/urandom prend le relais. La source
d'aléa est vérifiée AVANT la première question — la découvrir à
l'écriture laisserait un .env à moitié écrit, et un secret de session
choisi dans l'urgence vaut pour la vie de l'instance.
Les garde-fous rappellent enfin comment se passer du script, qui sans
cela bloquait toute installation automatisée.
Trois pièges de « set -e » corrigés au passage : « docker compose
config » échoue tant que JWT_SECRET n'existe pas, et sans « || true » le
repli sur le nom de projet ne s'appliquait jamais ; un port LIBRE, rendu
par un code de retour non nul, faisait sortir le script.
Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>
File changed.
Preview size limit exceeded, changes collapsed.