5.6 KiB
Nouvelle Structure des Variables d'Environnement
Vue d'ensemble
La structure des variables d'environnement a été réorganisée pour séparer les variables par projet. Cette nouvelle architecture améliore la maintenabilité et la sécurité en isolant les configurations de chaque service.
Structure Actuelle
4NK_env/
├── env/
│ ├── lecoffre_node/
│ │ └── .env
│ ├── sdk_relay/
│ │ └── .env
│ ├── sdk_storage/
│ │ └── .env
│ ├── ihm_client/
│ │ └── .env
│ ├── lecoffre-front/
│ │ └── .env
│ ├── blindbit-oracle/
│ │ └── .env
│ ├── monitoring/
│ │ └── .env
│ └── sdk_signer/
│ └── .env
└── .env.master (conservé pour compatibilité)
Projets et Variables
1. lecoffre_node
Fichier: env/lecoffre_node/.env
Variables principales:
- Configuration des domaines (DOMAIN, BOOTSTRAP_DOMAIN, etc.)
- Configuration Git (GITEA_BASE_URL, GIT_TOKEN, etc.)
- Configuration IDNOT (IDNOT_API_KEY, IDNOT_CLIENT_ID, etc.)
- Configuration serveur (APP_HOST, API_BASE_URL, etc.)
2. sdk_relay
Fichier: env/sdk_relay/.env
Variables principales:
- SDK_RELAY_* (SDK_RELAY_CORE_URL, SDK_RELAY_WS_URL, etc.)
- Variables legacy (core_url, ws_url, etc.)
- Configuration des ports (RELAY_PORT, RELAY_HTTP_PORT)
3. sdk_storage
Fichier: env/sdk_storage/.env
Variables principales:
- STORAGE_URL, STORAGE_PORT, STORAGE_DATA_DIR
4. ihm_client
Fichier: env/ihm_client/.env
Variables principales:
- VITE_* (VITE_API_BASE_URL, VITE_WS_URL, etc.)
- VITE_JWT_SECRET_KEY (variable sensible)
5. lecoffre-front
Fichier: env/lecoffre-front/.env
Variables principales:
- NEXT_PUBLIC_* (NEXT_PUBLIC_4NK_URL, NEXT_PUBLIC_IDNOT_BASE_URL, etc.)
- NEXT_PUBLIC_IDNOT_CLIENT_ID (variable sensible)
6. blindbit-oracle
Fichier: env/blindbit-oracle/.env
Variables principales:
- BLINDBIT_API_PORT, BITCOIN_RPC_URL
7. monitoring
Fichier: env/monitoring/.env
Variables principales:
- Configuration Grafana (GRAFANA_ADMIN_USER, GRAFANA_ADMIN_PASSWORD, etc.)
- Configuration Loki (LOKI_URL, LOKI_CONFIG_FILE, etc.)
- Configuration Status API (STATUS_API_PORT, STATUS_API_HOST)
- Variables Bitcoin pour monitoring
8. sdk_signer
Fichier: env/sdk_signer/.env
Variables principales:
- SIGNER_* (SIGNER_PORT, SIGNER_DATABASE_PATH, etc.)
- SIGNER_API_KEY (variable sensible)
Migration depuis .env.master
Avant (Structure Monolithique)
# docker-compose.yml
services:
sdk_relay:
env_file:
- /home/debian/4NK_env/.env.master
Après (Structure Séparée)
# docker-compose.yml
services:
sdk_relay:
env_file:
- /home/debian/4NK_env/env/sdk_relay/.env
Avantages de la Nouvelle Structure
- Séparation des responsabilités: Chaque projet a ses propres variables
- Sécurité améliorée: Isolation des variables sensibles par service
- Maintenance facilitée: Modification des variables sans impact sur les autres services
- Déploiement modulaire: Possibilité de déployer des services indépendamment
- Debugging simplifié: Variables spécifiques à un service dans un seul fichier
Scripts de Gestion
Ajout de Variables Manquantes
./scripts/add-missing-env-vars-new.sh
Test de Configuration
./scripts/test-env-config.sh
Démarrage des Services
./scripts/lecoffre_node/start.sh
Variables Sensibles
Les variables marquées comme sensibles sont identifiées par la section :
# ================== /!\ sensible =========================
Ces variables contiennent :
- Clés API (IDNOT_API_KEY, SIGNER_API_KEY)
- Secrets JWT (VITE_JWT_SECRET_KEY)
- Identifiants clients (IDNOT_CLIENT_ID, NEXT_PUBLIC_IDNOT_CLIENT_ID)
- Mots de passe (IDNOT_CLIENT_SECRET, GRAFANA_ADMIN_PASSWORD)
Compatibilité
Le fichier .env.master
est conservé pour la compatibilité avec les anciens scripts, mais il est recommandé d'utiliser la nouvelle structure pour tous les nouveaux développements.
Migration des Scripts Existants
Les scripts ont été mis à jour pour utiliser la nouvelle structure :
docker-compose.yml
: Pointe vers les nouveaux fichiers .envscripts/lecoffre_node/start.sh
: Vérifie les fichiers par projetscripts/test-env-config.sh
: Teste la nouvelle structure
Recommandations
- Ne jamais modifier les valeurs des variables sans validation préalable
- Utiliser les scripts de gestion pour ajouter/modifier des variables
- Tester la configuration après chaque modification
- Maintenir la cohérence entre les fichiers .env et la documentation
- Sauvegarder avant toute modification importante
Troubleshooting
Problème : Service ne trouve pas ses variables
Solution: Vérifier que le fichier .env correspondant existe dans env/<service>/.env
Problème : Variables manquantes
Solution: Utiliser le script add-missing-env-vars-new.sh
Problème : Conflit de variables
Solution: Vérifier que les variables sont dans le bon fichier projet
Maintenance
Ajout d'un Nouveau Service
- Créer le dossier
env/<nouveau_service>/
- Créer le fichier
.env
avec les variables nécessaires - Mettre à jour
docker-compose.yml
- Mettre à jour les scripts de test
- Documenter les variables dans ce fichier
Suppression d'un Service
- Sauvegarder le fichier .env
- Supprimer le dossier
env/<service>/
- Mettre à jour
docker-compose.yml
- Mettre à jour les scripts de test
- Mettre à jour la documentation