4NK_env/IA_agents/env-centralized.md
LeCoffre Deployment 851d900dcb align for IA
2025-09-23 22:42:13 +00:00

289 lines
7.6 KiB
Markdown

# Centralisation des Variables d'Environnement - LeCoffre Node
## 📋 Vue d'ensemble
**Date de mise en œuvre** : 2024-09-21
**Statut** : ✅ Terminé et opérationnel
**Impact** : Architecture simplifiée et sécurisée
---
## 🎯 Objectifs atteints
### ✅ Centralisation complète
- **Fichier unique** : `lecoffre_node/.env.master` contient toutes les variables
- **Suppression des .env** : Plus de fichiers .env dispersés dans les projets
- **Configuration centralisée** : Docker Compose utilise `.env.master`
- **Applications adaptées** : Code modifié pour lire les variables d'environnement
### ✅ Sécurité renforcée
- **Protection Git** : `.env.master` exclu du .gitignore
- **Variables sensibles** : Centralisées et protégées
- **Configuration unique** : Plus de duplication de secrets
### ✅ Déploiement simplifié
- **Commande unique** : `docker compose --env-file .env.master up`
- **Tests automatisés** : `./scripts/test-env-config.sh`
- **Validation** : Configuration testée et validée
---
## 📦 Contenu du .env.master
### 🔧 Variables d'environnement générales
```bash
NODE_OPTIONS=--max-old-space-size=2048
NODE_ENV=production
```
### 🌐 Configuration IDNOT (APIs notaires)
```bash
IDNOT_ANNUARY_BASE_URL=https://qual-api.notaires.fr/annuaire
IDNOT_REDIRECT_URI=http://dev3.4nkweb.com/authorized-client
IDNOT_TOKEN_URL=https://qual-connexion.idnot.fr/user/IdPOAuth2/token/idnot_idp_v1
IDNOT_API_BASE_URL=https://qual-api.notaires.fr
```
### 🖥️ Configuration serveur
```bash
APP_HOST=dev4.4nkweb.com
API_BASE_URL=https://dev4.4nkweb.com/back
DEFAULT_STORAGE=https://dev4.4nkweb.com/storage
```
### 🎨 Configuration frontend
```bash
NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com
NEXT_PUBLIC_FRONT_APP_HOST=https://dev4.4nkweb.com/lecoffre
NEXT_PUBLIC_IDNOT_BASE_URL=https://qual-connexion.idnot.fr
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/IdPOAuth2/authorize/idnot_idp_v1
NEXT_PUBLIC_BACK_API_PROTOCOL=https
NEXT_PUBLIC_BACK_API_HOST=dev4.4nkweb.com
NEXT_PUBLIC_BACK_API_PORT=443
NEXT_PUBLIC_BACK_API_ROOT_URL=/api
NEXT_PUBLIC_BACK_API_VERSION=v1
```
### 🔄 Variables SDK_RELAY
```bash
SDK_RELAY_CORE_URL=http://bitcoin:38332
SDK_RELAY_WS_URL=0.0.0.0:8090
SDK_RELAY_WALLET_NAME=default
SDK_RELAY_NETWORK=signet
SDK_RELAY_BLINDBIT_URL=http://blindbit-proxy:8000
SDK_RELAY_ZMQ_URL=tcp://bitcoin:29000
SDK_RELAY_STORAGE=https://dev4.4nkweb.com/storage
SDK_RELAY_DATA_DIR=/home/bitcoin/.4nk
SDK_RELAY_BITCOIN_DATA_DIR=/home/bitcoin/.bitcoin
SDK_RELAY_BOOTSTRAP_URL=ws://dev3.4nkweb.com:8090
SDK_RELAY_BOOTSTRAP_FAUCET=true
SDK_RELAY_RUST_LOG=DEBUG,reqwest=DEBUG,tokio_tungstenite=DEBUG
```
### 🎯 Variables IHM_CLIENT
```bash
VITE_JWT_SECRET_KEY=52b3d77617bb00982dfee15b08effd52cfe5b2e69b2f61cc4848cfe1e98c0bc9
VITE_API_BASE_URL=https://dev4.4nkweb.com/back/api/v1
VITE_WS_URL=wss://dev4.4nkweb.com/ws/
VITE_STORAGE_URL=https://dev4.4nkweb.com/storage
VITE_SIGNER_URL=https://dev4.4nkweb.com/signer
```
### 💳 Variables STRIPE (paiements)
```bash
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key
STRIPE_PUBLISHABLE_KEY=pk_test_your_stripe_publishable_key
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret
```
### 📧 Variables MAILCHIMP (emails)
```bash
MAILCHIMP_API_KEY=your_mailchimp_api_key
MAILCHIMP_SERVER_PREFIX=us1
MAILCHIMP_LIST_ID=your_list_id
```
### 📱 Variables OVH SMS
```bash
OVH_APPLICATION_KEY=your_ovh_app_key
OVH_APPLICATION_SECRET=your_ovh_app_secret
OVH_CONSUMER_KEY=your_ovh_consumer_key
OVH_SERVICE_NAME=your_ovh_service
```
### 📊 Variables monitoring
```bash
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=admin123
LOKI_URL=http://loki:3100
PROMTAIL_CONFIG_FILE=/etc/promtail/config.yml
```
---
## 🔧 Modifications apportées
### 📁 Fichiers supprimés
-`sdk_relay/.env`
-`ihm_client/.env`
-`lecoffre-front/.env`
### 🔄 Fichiers modifiés
#### `sdk_relay/src/config.rs`
```rust
// Lecture prioritaire des variables d'environnement
let env_vars = [
("core_url", "CORE_URL"),
("ws_url", "WS_URL"),
("wallet_name", "WALLET_NAME"),
// ... autres variables
];
for (config_key, env_key) in env_vars.iter() {
if let Ok(env_value) = env::var(env_key) {
file_content.insert(config_key.to_string(), env_value);
}
}
```
#### `lecoffre_node/docker-compose.yml`
```yaml
services:
sdk_relay:
environment:
- NODE_OPTIONS=${NODE_OPTIONS}
- CORE_URL=${SDK_RELAY_CORE_URL}
- WS_URL=${SDK_RELAY_WS_URL}
# ... toutes les variables SDK_RELAY_*
```
#### `lecoffre_node/.gitignore`
```bash
.env
!.env.master # Autoriser le fichier centralisé
miner/.env
```
---
## 🧪 Tests et validation
### ✅ Tests automatisés
```bash
# Test de la configuration centralisée
./scripts/test-env-config.sh
# Résultats :
# ✅ Fichier .env.master existe (113 lignes)
# ✅ Syntaxe docker-compose.yml valide
# ✅ Tous les fichiers .env supprimés (6/6)
# ✅ Fichiers de configuration modifiés (2/2)
# ✅ Variables critiques chargées correctement
```
### ✅ Validation Docker Compose
```bash
# Test de syntaxe
docker compose --env-file .env.master config --quiet
# ✅ Syntaxe valide
```
### ✅ Variables critiques validées
- **SDK_RELAY_CORE_URL** : Référencée dans docker-compose.yml
- **SIGNER_API_KEY** : Référencée dans docker-compose.yml
- **VITE_JWT_SECRET_KEY** : Référencée dans docker-compose.yml
---
## 🚀 Utilisation
### Déploiement standard
```bash
cd lecoffre_node
docker compose --env-file .env.master up -d
```
### Test de configuration
```bash
cd lecoffre_node
./scripts/test-env-config.sh
```
### Cloner l'environnement complet
```bash
git clone --recursive https://git.4nkweb.com/4nk/4NK_env.git
cd 4NK_env/lecoffre_node
docker compose --env-file .env.master up -d
```
---
## 📊 Avantages de la centralisation
### 🔒 Sécurité
- **Configuration unique** : Plus de duplication de secrets
- **Protection centralisée** : Un seul fichier à sécuriser
- **Audit simplifié** : Toutes les variables au même endroit
### 🛠️ Maintenance
- **Modification unique** : Changer une variable une seule fois
- **Cohérence garantie** : Même valeur partout
- **Déploiement simplifié** : Une seule commande
### 📈 Évolutivité
- **Nouveaux services** : Ajout facile de nouvelles variables
- **Environnements multiples** : Facile de créer .env.prod, .env.dev
- **Documentation** : Toutes les variables documentées
---
## 🎯 Impact sur l'architecture
### ✅ Avant (problématique)
```
sdk_relay/.env
ihm_client/.env
lecoffre-front/.env
├── Variables dupliquées
├── Incohérences possibles
├── Maintenance complexe
└── Sécurité dispersée
```
### ✅ Après (solution)
```
lecoffre_node/.env.master
├── Variables centralisées
├── Configuration unique
├── Maintenance simplifiée
└── Sécurité renforcée
```
---
## 🔄 Prochaines étapes
### 🎯 Court terme
1. **Déploiement** : Utiliser la configuration centralisée en production
2. **Formation** : Former l'équipe sur la nouvelle architecture
3. **Documentation** : Mettre à jour les guides utilisateur
### 🎯 Moyen terme
1. **Environnements multiples** : Créer .env.prod, .env.dev
2. **Validation** : Ajouter des scripts de validation des variables
3. **Monitoring** : Surveiller l'utilisation des variables
### 🎯 Long terme
1. **Secrets management** : Intégrer avec HashiCorp Vault ou similaire
2. **Chiffrement** : Chiffrer les variables sensibles
3. **Rotation** : Automatiser la rotation des secrets
---
**Note** : Cette centralisation des variables d'environnement représente une amélioration majeure de l'architecture LeCoffre Node, offrant une meilleure sécurité, une maintenance simplifiée et une évolutivité renforcée.