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
- Allez dans Paramètres → Environnements
- Cliquez "+ Environnement"
- Nommez-le (ex:
development,production) - Ajoutez des variables
Attacher un environnement à un service
Dans la configuration du service, onglet Environnement :
- Sélectionnez l'environnement global à activer
- Définissez l'option
activateOn: quand cet environnement s'active - 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éeRé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>