Generer les secrets de la memoire plutot que les inventer

Question du proprietaire : HA_TOKEN il l a, mais les mots de passe PostgreSQL
et InfluxDB, il les invente ? Non — ils se generent. Les deux bases n existent
pas encore, c est ce fichier qui decide de leurs identifiants, et personne ne
les tape jamais : les conteneurs les lisent dans .env et Home Assistant lit le
jeton dans son propre secrets.yaml.

preparer-env.sh les tire avec openssl rand, reprend HA_TOKEN du .env a la
racine plutot que d en creer un nouveau, pose les droits a 600, et affiche la
ligne a recopier dans secrets.yaml. Il refuse d ecraser un .env existant :
regenerer les mots de passe d une base deja creee la rendrait inaccessible.

Corrige au passage un piege laisse dans l exemple : POSTGRES_PASSWORD et
PGPASSWORD etaient deux variables a tenir egales a la main. Le fichier s appelle
desormais .env, donc compose l utilise aussi pour la substitution, et le service
d historisation reprend le mot de passe par substitution. Un seul secret
PostgreSQL desormais.

Generateur essaye dans un bac a sable : fichier conforme, refus de regeneration
verifie. Fichiers d echange des editeurs ajoutes au gitignore.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
This commit is contained in:
Tallagrand Thierry
2026-09-04 01:29:12 +02:00
parent 230039d2a2
commit 7e2ed6d076
5 changed files with 98 additions and 26 deletions

View File

@@ -19,7 +19,7 @@
#
# Mise en service :
# cd /volume2/projects/EVCS/EVCS/deploy/historisation
# cp historisation.env.exemple historisation.env puis y mettre les mots de passe
# bash preparer-env.sh (genere .env avec des secrets aleatoires)
# docker compose up -d
# docker compose logs -f
#
@@ -42,7 +42,7 @@ services:
# Ouvert au réseau local : n8n tourne sur 10.10.10.17 et doit écrire ici.
- "5432:5432"
env_file:
- historisation.env
- .env
environment:
- TZ=Europe/Paris
- POSTGRES_USER=evcs
@@ -69,7 +69,7 @@ services:
# Home Assistant, sur 10.10.10.17, écrit ici.
- "8086:8086"
env_file:
- historisation.env
- .env
environment:
- TZ=Europe/Paris
- DOCKER_INFLUXDB_INIT_MODE=setup
@@ -105,7 +105,7 @@ services:
# Depot en LECTURE SEULE : ce service n'ecrit que dans la base.
- /volume2/projects/EVCS/EVCS:/app:ro
env_file:
- historisation.env
- .env
environment:
- TZ=Europe/Paris
- HA_URL=http://10.10.10.17:8123
@@ -113,8 +113,9 @@ services:
- PGPORT=5432
- PGUSER=evcs
- PGDATABASE=evcs
# PGPASSWORD doit valoir POSTGRES_PASSWORD : les deux sont dans le
# fichier d'environnement, tenus egaux a la main.
# Reprise du mot de passe unique par substitution : il n'y a qu'un seul
# secret PostgreSQL a renseigner, pas deux a tenir egaux a la main.
- PGPASSWORD=${POSTGRES_PASSWORD}
- HISTORISE_INTERVAL_S=60
command: ["node", "tools/historise-evcs.mjs"]