8.8 KiB
8.8 KiB
🚀 Architecture Autonome LeCoffre Node
Vue d'ensemble
Cette architecture autonome permet de déployer l'ensemble de l'écosystème LeCoffre dans un seul conteneur Docker, avec Nginx intégré pour une autonomie complète.
🏗️ Architecture
┌─────────────────────────────────────────────────────────┐
│ Container Master │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Nginx (Port 80) │ │
│ │ - Reverse Proxy │ │
│ │ - Load Balancing │ │
│ │ - SSL Termination │ │
│ │ - Rate Limiting │ │
│ └─────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Supervisor │ │
│ │ - Process Management │ │
│ │ - Auto-restart │ │
│ │ - Log Management │ │
│ └─────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Docker Compose Services │ │
│ │ - Bitcoin Signet │ │
│ │ - SDK Relay/Signer/Storage │ │
│ │ - LeCoffre Front/Back │ │
│ │ - IHM Client │ │
│ │ - Grafana/Loki/Promtail │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
📁 Structure des fichiers
lecoffre_node/
├── Dockerfile.master # Image Docker autonome
├── .env.master # Configuration avec secrets
├── env.master # Variables publiques
├── docker-compose.yml # Services internes
├── conf/
│ ├── nginx/
│ │ └── nginx.conf # Configuration Nginx intégrée
│ └── supervisor/
│ └── supervisord.conf # Gestion des processus
├── scripts/
│ ├── entrypoint.sh # Point d'entrée principal
│ ├── startup.sh # Démarrage des services
│ └── deploy-autonomous.sh # Script de déploiement
└── README-AUTONOMOUS.md # Cette documentation
🔐 Sécurité
Protection des secrets
- Tous les fichiers
.env
sont protégés par.gitignore
- Les secrets sont centralisés dans
.env.master
- Variables sensibles : clés API, mots de passe, tokens
Variables protégées
# IdNot
IDNOT_API_KEY=ba557f84-0bf6-4dbf-844f-df2767555e3e
IDNOT_CLIENT_SECRET=3F733549E879878344B6C949B366BB5CDBB2DB5B7F7AB7EBBEBB0F0DD0776D1C
# OVH
OVH_APP_SECRET=de1fac1779d707d263a611a557cd5766
OVH_CONSUMER_KEY=5fe817829b8a9c780cfa2354f8312ece
# Stripe
STRIPE_SECRET_KEY=sk_test_51OwKmMP5xh1u9BqSeFpqw0Yr15hHtFsh0pvRGaE0VERhlYtvw33ND1qiGA6Dy1DPmmV61B6BqIimlhuv7bwElhjF00PLQwD60n
# Grafana
GF_SECURITY_ADMIN_PASSWORD=Fuy8ZfxQI2xdSdoB8wsGxNjyU
🚀 Déploiement
Prérequis
- Docker et Docker Compose installés
- Ports 80, 443, 3000 disponibles (le conteneur utilise son propre Nginx)
- Accès au socket Docker (
/var/run/docker.sock
) - Nginx du host supprimé pour éviter les conflits
Déploiement automatique
cd /home/debian/4NK_env/lecoffre_node
./scripts/deploy-autonomous.sh
Déploiement manuel
# 1. Construction de l'image
docker build -f Dockerfile.master -t lecoffre-node-master:int-dev .
# 2. Démarrage du conteneur (utilise le port 80 du host)
docker run -d \
--name lecoffre-node-master \
--privileged \
--restart unless-stopped \
-p 80:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
-v $(pwd)/.env.master:/app/.env \
lecoffre-node-master:int-dev
Désinstallation du Nginx du host (optionnel)
# Pour une indépendance complète, désinstaller Nginx du host
./scripts/uninstall-host-nginx.sh
🌐 Services exposés
Service | URL | Description |
---|---|---|
Status Page | http://localhost/status/ | Tableau de bord des services |
Grafana | http://localhost/grafana/ | Monitoring et logs |
LeCoffre Front | http://localhost/lecoffre/ | Application principale |
IHM Client | http://localhost/ | Interface client |
API Backend | http://localhost/api/ | API REST |
WebSocket | ws://localhost/ws/ | Communication temps réel |
Redirections IdNot | http://local.4nkweb.com:3000/ | Redirections externes IdNot |
HTTPS | https://localhost/ | Accès sécurisé (certificats auto-signés) |
🔧 Gestion
Commandes utiles
# Voir les logs
docker logs lecoffre-node-master
# Accéder au shell
docker exec -it lecoffre-node-master bash
# Redémarrer le conteneur
docker restart lecoffre-node-master
# Arrêter le conteneur
docker stop lecoffre-node-master
# Voir les services internes
docker exec lecoffre-node-master docker-compose ps
Surveillance
# Healthcheck automatique
docker inspect lecoffre-node-master | grep Health -A 10
# Vérification des services
curl -f http://localhost:8080/status/api/health
📊 Monitoring
Grafana Dashboards
- Bitcoin Miner : Surveillance du minage Signet
- Backend Services : Métriques des APIs
- SDK Services : État des services SDK
- Frontend Services : Performance des interfaces
- Bitcoin Services : État du réseau Bitcoin
Logs centralisés
- Tous les logs sont collectés par Promtail
- Stockage dans Loki
- Visualisation dans Grafana
- Rotation automatique des logs
🔄 Maintenance
Sauvegarde
# Sauvegarde des données
docker exec lecoffre-node-master tar -czf /app/backup/backup-$(date +%Y%m%d).tar.gz /app/data
# Restauration
docker exec lecoffre-node-master tar -xzf /app/backup/backup-YYYYMMDD.tar.gz -C /
Mise à jour
# 1. Arrêter le conteneur
docker stop lecoffre-node-master
# 2. Reconstruire l'image
docker build -f Dockerfile.master -t lecoffre-node-master:int-dev .
# 3. Redémarrer
docker start lecoffre-node-master
🚨 Dépannage
Problèmes courants
-
Services non accessibles
docker logs lecoffre-node-master docker exec lecoffre-node-master docker-compose ps
-
Problème de permissions Docker
sudo chmod 666 /var/run/docker.sock
-
Ports déjà utilisés
sudo netstat -tulpn | grep :8080 sudo fuser -k 8080/tcp
Logs détaillés
# Logs du conteneur master
docker logs lecoffre-node-master -f
# Logs des services internes
docker exec lecoffre-node-master tail -f /app/logs/docker-compose.log
# Logs Nginx
docker exec lecoffre-node-master tail -f /var/log/nginx/error.log
📝 Configuration
Variables d'environnement principales
EXTERNAL_DOMAIN
: Domaine externe (dev4.4nkweb.com)INTERNAL_DOMAIN
: Domaine interne (localhost)DOCKER_NETWORK_SUBNET
: Sous-réseau DockerGF_SECURITY_ADMIN_PASSWORD
: Mot de passe Grafana
Personnalisation
- Modifier
.env.master
pour les secrets - Ajuster
conf/nginx/nginx.conf
pour le routage - Configurer
conf/supervisor/supervisord.conf
pour les processus
🎯 Avantages
✅ Autonomie complète : Un seul conteneur pour tout l'écosystème ✅ Sécurité renforcée : Secrets centralisés et protégés ✅ Monitoring intégré : Grafana, Loki, Promtail inclus ✅ Facilité de déploiement : Script automatisé ✅ Scalabilité : Architecture modulaire ✅ Maintenance simplifiée : Gestion centralisée
📞 Support
Pour toute question ou problème :
- Vérifier les logs :
docker logs lecoffre-node-master
- Consulter la documentation des services individuels
- Tester la connectivité :
curl http://localhost:8080/status/