Skip to content

Environnements & Variables

Runeya propose un système de variables d'environnement hiérarchique et flexible, permettant de gérer proprement dev, staging, production depuis une interface unique.

Concepts

Variable

Une variable est un couple KEY=VALUE identifié par un UUID interne. Elle est toujours définie dans un environnement.

Environnement global

Un environnement global est un groupe nommé de variables (ex: dev, production). Il est partagé entre tous les services qui y font référence.

Environnement service-scoped

Chaque service peut avoir ses propres overrides d'environnement. Ces surcharges s'appliquent par-dessus l'environnement global attaché.

Résolution des variables

La résolution suit un ordre de priorité strict (du plus fort au plus faible) :

Overrides service-scoped

Variables de l'environnement global attaché

Variables d'environnement système (passthrough explicite)

TIP

Si une même clé apparaît à plusieurs niveaux, c'est la valeur la plus haute dans la hiérarchie qui gagne.

Créer un environnement global

  1. Allez dans Paramètres → Environnements
  2. Cliquez "+ Environnement"
  3. Nommez-le (ex: development, production)
  4. Ajoutez des variables

Attacher un environnement à un service

Dans la configuration du service, onglet Environnement :

  1. Sélectionnez l'environnement global à activer
  2. Définissez l'option activateOn : quand cet environnement s'active
  3. Ajoutez des overrides spécifiques au service si besoin

Variables secrètes

Les valeurs marquées comme secret sont :

  • Chiffrées avec AES-256-GCM avant d'être écrites sur disque
  • Masquées dans l'interface (••••••••)
  • Jamais envoyées en clair dans les logs

Pour créer une variable secrète, activez le toggle Secret lors de la création.

DANGER

Ne commitez jamais votre fichier services.json si vous y avez des secrets non chiffrés. Runeya les chiffre automatiquement — ne contournez pas ce mécanisme.

Passthrough d'environnement système

Par défaut, Runeya n'injecte pas les variables système (process.env) dans les processus enfants. Seules les variables explicitement définies dans les environnements Runeya sont transmises, plus une allowlist de variables système sûres.

Cette approche évite les fuites accidentelles de tokens, clés API ou credentials présents dans l'environnement shell.

Exemple de configuration complète

Environnement global "development":
  DATABASE_URL = postgres://localhost:5432/myapp_dev
  REDIS_URL    = redis://localhost:6379
  LOG_LEVEL    = debug

Service "api" — overrides:
  PORT         = 3000
  LOG_LEVEL    = verbose   ← surcharge la valeur globale
  API_SECRET   = ••••••••  ← valeur secrète chiffrée

Résultat injecté dans le processus :

DATABASE_URL=postgres://localhost:5432/myapp_dev
REDIS_URL=redis://localhost:6379
LOG_LEVEL=verbose
PORT=3000
API_SECRET=<valeur déchiffrée>

Publié sous licence MIT.