+25
−0
+26
−9
Loading
Les réglages introduits par l'audit de sécurité existaient dans le code mais
n'atteignaient pas le conteneur : `docker-compose.yml` ne les listait pas sous
« environment: », et les définir dans le `.env` restait donc sans effet.
`install.sh` le disait d'ailleurs explicitement, en les rangeant sous « non
transmis au conteneur en l'état ».
Ajoutées au service « app » :
SECRETS_KEY clef distincte pour les secrets chiffrés en base.
Absente, elle reste dérivée de JWT_SECRET — la définir
à part permet de faire tourner JWT_SECRET sans rendre
illisibles les secrets déjà stockés.
TRUSTED_PROXIES nombre de proxys devant l'application. Sans elle, le
plafonnement des routes publiques compte tous les
visiteurs sur une seule adresse, celle du proxy.
AUDIT_RETENTION_DAYS rétention RGPD des données d'instance.
SIGNUP_RETENTION_DAYS
SMTP_*, MAIL_FROM amorçage sans interface.
Une distinction qui compte, et qui est écrite dans les deux fichiers : le code
applique ses défauts sur une variable ABSENTE, pas sur une variable vide. Une
valeur vide vaut 0 pour un nombre — soit, pour AUDIT_RETENTION_DAYS, la purge du
journal désactivée. D'où les lignes commentées dans le `.env` généré plutôt que
des lignes vides, et l'avertissement qui les précède.
Les défauts du compose (730 et 90 jours) doublent ceux du code
(`apps/api/src/maintenance/retention.ts`) et doivent le rester.
Le mot de passe SMTP reste préférable en console d'instance, qui le chiffre avant
stockage : renseigné ici, il est lisible par quiconque peut faire un
`docker inspect`. Les deux fichiers le disent.
Vérifications
`bash -n install.sh` valide. TRUSTED_PROXIES est bien demandé à l'utilisateur
(borné 0-10) avant d'être écrit, donc la ligne non commentée du `.env` porte
toujours une valeur — elle ne tombe pas dans le piège que le commentaire voisin
décrit. Aucune valeur sensible en dur dans le compose : `JWT_SECRET` échoue même
au démarrage s'il manque (`:?`), les autres sont des substitutions vides.
364 tests / 34 suites, typecheck, eslint et build : verts. Ces deux fichiers ne
sont couverts par aucun test — le déploiement lui-même reste à éprouver.
Co-Authored-By: Claude (Enkadenn)