Skip to content

La passerelle refuse de démarrer

This content is not available in your language yet.

La passerelle refuse de démarrer quand une variable indispensable est absente, plutôt que de démarrer avec un repli. C’est délibéré : un repli était juste sur un poste et faux en production, où il transformait une variable oubliée en conteneur qui démarrait, passait ses sondes, et échouait sur chaque requête avec une erreur qui ne nommait jamais la variable en cause.

Le message de démarrage nomme donc ce qui manque. Commencez par le lire.

La passerelle lit sa configuration — endpoints, fournisseurs, clés — dans sa base. Sans adresse de base, elle n’a rien à servir.

Fenêtre de terminal
export DATABASE_URL="postgresql://<utilisateur>:<mot-de-passe>@<hôte>:<port>/<base>"

Cas particulier d’une base managée. Certaines refusent le mode sslmode=require attendu par le client PostgreSQL et demandent sslmode=no-verify :

Fenêtre de terminal
export DATABASE_URL="postgresql://…/proxy?sslmode=no-verify"

C’est la clé qui protège les routes d’administration. La passerelle refuse de démarrer sans elle, pour qu’aucune installation ne se retrouve avec une surface d’administration ouverte.

Fenêtre de terminal
export ADMIN_API_KEY=""

Le symptôme est différent : la passerelle est saine, c’est le relais vers le fournisseur qui casse. Deux causes fréquentes.

La clé du fournisseur n’est pas définie. Le nom de la variable attendue n’est pas figé dans le code : il est inscrit en base, dans la colonne api_key_env du fournisseur. Une omission ne se voit donc qu’à la première requête. Relevez le nom attendu dans la console d’administration, puis définissez-la.

Le réseau sortant passe par un proxy d’entreprise. La passerelle utilise le client HTTP natif de la plateforme et n’applique pas HTTPS_PROXY ni NODE_EXTRA_CA_CERTS. Derrière un pare-feu sortant, elle ne joint aucun fournisseur. C’est une limitation connue, sans contournement documenté à ce jour : signalez-la, elle est suivie.

Il n’existe pas de route de santé dédiée. Le contrôle en usage consiste à appeler une route inexistante et à vérifier qu’elle répond 401 — ce qui prouve que le service écoute et que l’authentification s’applique :

Fenêtre de terminal
curl -s -o /dev/null -w '%{http_code}\n' http://<hôte>:<port>/healthz/v1/messages

Une réponse 401 est le résultat attendu. Une absence de réponse signifie que le service n’écoute pas.