Aller au contenu

Variables d'environnement

Chaque service dispose de ses variables d’environnement, injectées au déploiement.

  • Créer / modifier — clé (MAJUSCULES/underscore) + valeur. Marquez isSecret pour chiffrer.
  • Importer — collez un fichier .env brut : la plateforme le parse et résume le résultat.
  • Supprimer — retire une clé (prise en compte au prochain déploiement).

Une variable enregistrée en clair (par exemple après l’import d’un .env, qui crée tout en clair) peut être passée en secret sans ressaisir sa valeur : bouton cadenas sur sa ligne, dans l’onglet Variables du service ou de la stack.

  • Aucun redéploiement n’est nécessaire : la valeur injectée dans le conteneur ne change pas.
  • Le geste est à sens unique : pour repasser la variable en clair, il faut ressaisir sa valeur.

Un badge « à protéger ? » signale les variables en clair qui ressemblent à un secret :

  • un nom de secret (*_PASSWORD, *_TOKEN, *_KEY…) ;
  • une URL qui contient un mot de passe ;
  • une valeur qui a la forme d’une clé connue (Stripe, GitHub, AWS, clé privée, JWT…) ;
  • une longue chaîne aléatoire.

C’est un indice, pas une règle : rien n’est modifié sans votre confirmation. Les variables *PUBLIC* (par exemple NEXT_PUBLIC_*) ne sont jamais signalées, puisqu’elles sont publiques par construction. Pour une stack, dont les valeurs ne sont jamais réaffichées, seul le nom est examiné.

Avec le serveur MCP : outil mark_variables_secret.

Captures d’écran à insérer.

Une valeur peut citer une autre variable : ${NOM} est remplacé à chaque déploiement (services et stacks). La plateforme fournit à tout service exposé sur Internet — et à toute stack qui expose un conteneur, le premier donnant l’adresse — :

  • CASSIOPE_PUBLIC_HOST — son nom de domaine : votre domaine personnalisé vérifié s’il en a un, sinon l’adresse attribuée par la plateforme ;
  • CASSIOPE_PUBLIC_URL — la même adresse en https://.

Une connexion vers un service exposé sur Internet ajoute <PRÉFIXE>_PUBLIC_URL, son adresse publique — ce qu’il faut à une application qui s’exécute dans le navigateur.

Exemple : APP_URL=${CASSIOPE_PUBLIC_URL}. Comme la référence est enregistrée telle quelle, elle suit un domaine ajouté plus tard, et une duplication d’environnement la résout contre les nouveaux services, pas contre ceux d’origine.

${NOM:-valeur} prend valeur quand la variable NOM n’existe pas — c’est ainsi qu’Element vise le serveur de sa connexion, et matrix.org à défaut.

Une référence fournie par la plateforme qui ne peut pas être résolue (service non exposé, connexion retirée) fait échouer le déploiement en nommant la variable. Toute autre référence inconnue est laissée telle quelle : elle peut appartenir à votre application.

Cochez Figer au premier déploiement pour une valeur qu’une application inscrit dans ses données et ne supporte pas de voir changer — le nom d’un serveur Matrix, par exemple. La valeur est résolue au premier déploiement puis enregistrée telle quelle (badge figée) ; un domaine ajouté ensuite ne la modifie plus. Une duplication sans données repart de la référence (nouvelle installation, nouveau nom) ; une duplication avec données garde la valeur figée, que la base copiée exige.

Certaines applications ne lisent leur configuration que dans un fichier, pas dans des variables : Element, par exemple, attend l’adresse de son serveur dans /app/config.json. Tout service peut en porter : à la création (Options avancées, onglets Git et Docker) ou ensuite, dans l’onglet Variables, sous Fichiers de configuration (« Ajouter un fichier »). Les modèles concernés créent les leurs avec le service.

  • Le chemin est celui que l’application attend : il n’est pas modifiable ensuite — retirez le fichier et ajoutez-le de nouveau pour en changer.
  • Le contenu se modifie librement. ${CLE} y est remplacé, au déploiement, par la valeur de la variable CLE du service — changer l’adresse d’un serveur se fait donc dans ses variables, le fichier suit.
  • Un ajout, une modification ou un retrait est pris en compte au prochain déploiement, comme une variable.
  • Les fichiers sont recopiés par une duplication d’environnement et par l’export en blueprint.
  • Une référence ${CLE} à une variable absente fait échouer le déploiement en nommant la variable, plutôt que de déposer un fichier incomplet.