Commit cf00c10a authored by Kourser's avatar Kourser
Browse files

Installateur : il s'arrêtait avant le seul geste indispensable

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: default avatarClaude Opus 5 <noreply@anthropic.com>
parent e878fb36
Loading
Loading
Loading
Loading
+12 −3
Changes for README.md: 12 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -24,6 +24,15 @@ Plateforme **open-source** d'organisation et d'animation d'**exercices de gestio

## Démarrage rapide (Docker)

```bash
./install.sh
```

L'installateur pose les questions nécessaires, écrit `.env`, lance la pile, attend que
l'API réponde et crée le premier compte d'administration. C'est le chemin recommandé.

À la main, si vous préférez :

```bash
cp .env.example .env
# Definir un secret de session (obligatoire) et ajuster les mots de passe :
@@ -36,9 +45,9 @@ L'application est disponible sur http://localhost:3000. Les migrations de base d
### Premier compte d'administration

Une base neuve ne contient **aucun compte**, et l'inscription publique est fermée par
défaut : sans cette étape, personne ne peut se connecter. Le mot de passe se transmet
par un tube, jamais en argument — la ligne de commande d'un processus est lisible par
tout utilisateur de la machine.
défaut : sans cette étape, personne ne peut se connecter. `install.sh` s'en charge ;
à la main, le mot de passe se transmet par un tube, jamais en argument — la ligne de
commande d'un processus est lisible par tout utilisateur de la machine.

```bash
printf '%s' 'votre-mot-de-passe' | docker compose exec -T app \
+358 −48

File changed.

Preview size limit exceeded, changes collapsed.