# 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) ```yaml # docker-compose.yml services: sdk_relay: env_file: - /home/debian/4NK_env/.env.master ``` ### Après (Structure Séparée) ```yaml # docker-compose.yml services: sdk_relay: env_file: - /home/debian/4NK_env/env/sdk_relay/.env ``` ## Avantages de la Nouvelle Structure 1. **Séparation des responsabilités**: Chaque projet a ses propres variables 2. **Sécurité améliorée**: Isolation des variables sensibles par service 3. **Maintenance facilitée**: Modification des variables sans impact sur les autres services 4. **Déploiement modulaire**: Possibilité de déployer des services indépendamment 5. **Debugging simplifié**: Variables spécifiques à un service dans un seul fichier ## Scripts de Gestion ### Ajout de Variables Manquantes ```bash ./scripts/add-missing-env-vars-new.sh ``` ### Test de Configuration ```bash ./scripts/test-env-config.sh ``` ### Démarrage des Services ```bash ./scripts/lecoffre_node/start.sh ``` ## Variables Sensibles Les variables marquées comme sensibles sont identifiées par la section : ```bash # ================== /!\ 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 .env - `scripts/lecoffre_node/start.sh`: Vérifie les fichiers par projet - `scripts/test-env-config.sh`: Teste la nouvelle structure ## Recommandations 1. **Ne jamais modifier les valeurs des variables** sans validation préalable 2. **Utiliser les scripts de gestion** pour ajouter/modifier des variables 3. **Tester la configuration** après chaque modification 4. **Maintenir la cohérence** entre les fichiers .env et la documentation 5. **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//.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 1. Créer le dossier `env//` 2. Créer le fichier `.env` avec les variables nécessaires 3. Mettre à jour `docker-compose.yml` 4. Mettre à jour les scripts de test 5. Documenter les variables dans ce fichier ### Suppression d'un Service 1. Sauvegarder le fichier .env 2. Supprimer le dossier `env//` 3. Mettre à jour `docker-compose.yml` 4. Mettre à jour les scripts de test 5. Mettre à jour la documentation