Commit 7773551d authored by Kourser's avatar Kourser
Browse files

Prévenir que « production » ne démarre pas encore

L'installateur demandait si l'instance était en production, écrivait
KASTELL_ENV=production, et rendait la main. L'application, elle, refuse ce
mode tant qu'aucun transport de courriel n'est configuré : le transport
« console » écrirait les liens de connexion dans « docker logs », et il vaut
mieux ne pas démarrer que le découvrir dans un journal.

Le refus est juste. Ce qu'il réclame n'existe pas.

  definirTransport n'est appelé que par le harnais de vérification. Il n'y a
  pas d'adaptateur SMTP, pas de variable d'environnement pour en désigner un,
  et les passerelles Brevo ou OVH que branche une organisation servent les
  envois de masse, pas les liens d'authentification — auth/comptes.ts passe
  par adaptateurs/notify, qui reste sur « console ».

  Conséquence : aujourd'hui, KASTELL_ENV=production ne démarre pas. En boucle,
  avec une erreur qui nomme sa cause mais pas le fait qu'elle est sans issue.

Ce que le script fait maintenant
  Il le dit à la question, là où la décision se prend, et propose de revenir à
  « developpement » — au prix, énoncé, des liens de connexion visibles dans
  les traces. Rester en production reste possible : quelqu'un qui écrira le
  transport avant de démarrer a le droit de le vouloir.

  Ce script écrit une configuration, il ne promet pas qu'elle démarre. Mais
  quand il sait qu'elle ne démarrera pas, se taire n'est pas de la réserve.

Ce que ce commit ne fait pas
  Écrire le transport manquant. C'est une pièce à part entière — adaptateur,
  variables, documentation, contrôle — et la bâcler dans un correctif
  d'installateur donnerait le pire des deux : une production qui démarre et
  des courriels qui ne partent pas.

Co-Authored-By: default avatarClaude Opus 5 <noreply@anthropic.com>
parent 8cfa93bf
Loading
Loading
Loading
Loading
Loading
+29 −0
Changes for outils/installer.sh: 29 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -724,6 +724,35 @@ if [ "$ecrire_env" = "oui" ]; then
  echo
  if oui_non_b "Cette instance est-elle en production ?" "Is this instance in production?" "n"; then
    environnement="production"
    # En production, l'application refuse le transport de courriel « console »,
    # qui écrirait les liens de connexion dans « docker logs ». Le refus est
    # juste ; ce qu'il réclame n'existe pas encore. Le dire ici plutôt que de
    # laisser l'instance boucler au démarrage sur une erreur qui ne nomme pas
    # sa cause : ce script écrit une configuration, il ne promet pas qu'elle
    # démarre, mais il doit prévenir quand il sait qu'elle ne démarrera pas.
    echo
    dire "  ⚠  En production, l'application exige un transport de courriel et" \
         "  ⚠  In production the application requires a mail transport, and"
    dire "     refuse celui de développement, qui écrirait les liens de" \
         "     refuses the development one, which would write sign-in links"
    dire "     connexion en clair dans les traces." \
         "     in the clear to the logs."
    echo
    dire "     Aucun transport ne peut aujourd'hui satisfaire cette exigence :" \
         "     No transport can satisfy that requirement today: the instance"
    dire "     l'instance refusera de démarrer, en boucle. Tant que la pièce" \
         "     will refuse to start, in a loop. Until that piece exists, only"
    dire "     manque, seul « developpement » démarre — au prix des liens de" \
         "     \"developpement\" starts — at the cost of sign-in links in"
    dire "     connexion visibles dans « docker logs »." \
         "     \"docker logs\"."
    echo
    if ! oui_non_b "Rester en production quand même ?" "Stay on production anyway?" "n"; then
      environnement="developpement"
      echo
      dire "  Environnement ramené à « developpement »." \
           "  Environment set back to \"developpement\"."
    fi
  else
    environnement="developpement"
  fi