lecoffre_node/README-AUTONOMOUS.md
2025-09-22 15:02:32 +02:00

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

  1. Services non accessibles

    docker logs lecoffre-node-master
    docker exec lecoffre-node-master docker-compose ps
    
  2. Problème de permissions Docker

    sudo chmod 666 /var/run/docker.sock
    
  3. 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 Docker
  • GF_SECURITY_ADMIN_PASSWORD : Mot de passe Grafana

Personnalisation

  1. Modifier .env.master pour les secrets
  2. Ajuster conf/nginx/nginx.conf pour le routage
  3. 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 :

  1. Vérifier les logs : docker logs lecoffre-node-master
  2. Consulter la documentation des services individuels
  3. Tester la connectivité : curl http://localhost:8080/status/