4NK_env/docs/VARIABLES-ENVIRONNEMENT-NOUVELLE-STRUCTURE.md
2025-10-02 15:32:58 +00:00

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

  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

./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 .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/<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

  1. Créer le dossier env/<nouveau_service>/
  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/<service>/
  3. Mettre à jour docker-compose.yml
  4. Mettre à jour les scripts de test
  5. Mettre à jour la documentation