- Ajout du script add_external_node.sh pour gérer les nœuds externes - Configuration external_nodes.conf avec dev3-relay - Scripts de test pour dev3.4nkweb.com (connectivité WSS) - Documentation complète (CONFIGURATION_DEV3.md, RESUME_AJOUT_DEV3.md) - Scripts de test de synchronisation et monitoring - Configuration multi-relais avec 3 instances - Mise à jour de la documentation technique et fonctionnelle - Scripts de démarrage et monitoring pour les 3 relais
8.4 KiB
4NK Node - Infrastructure Docker
Infrastructure Docker complète pour le développement et le déploiement de services 4NK
🏗️ Architecture
4NK Node est composé de plusieurs services orchestrés via Docker Compose :
- Tor : Proxy anonyme pour Bitcoin Core
- Bitcoin Core : Nœud Bitcoin en mode signet
- Blindbit : Service de filtres pour les paiements silencieux
- sdk_relay : Service de relais pour l'intégration avec les applications
🚀 Démarrage rapide
Prérequis
- Docker et Docker Compose installés
- Au moins 10 Go d'espace disque disponible
- Connexion Internet pour la synchronisation Bitcoin
- Clé SSH configurée pour GitLab (recommandé)
Installation
# Cloner le repository (avec SSH)
git clone git@git.4nkweb.com:4nk/4NK_node.git
cd 4NK_node
# Ou avec HTTPS (si SSH non configuré)
# git clone https://git.4nkweb.com/4nk/4NK_node.git
# cd 4NK_node
# Lancer tous les services
sudo docker-compose up -d
# Vérifier le statut des services
sudo docker-compose ps
Configuration SSH (optionnel mais recommandé)
Pour une authentification automatique et sécurisée :
# Générer une clé SSH (si pas déjà fait)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk -C "4nk-automation"
# Ajouter la clé à l'agent SSH
ssh-add ~/.ssh/id_ed25519_4nk
# Configurer Git pour utiliser la clé
git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_4nk"
# Ajouter la clé publique à votre compte GitLab
cat ~/.ssh/id_ed25519_4nk.pub
# Copier cette clé dans GitLab > Settings > SSH Keys
Services disponibles
Service | Port | Description |
---|---|---|
Tor | 9050, 9051 | Proxy anonyme |
Bitcoin Core | 18443 (RPC), 29000 (ZMQ) | Nœud Bitcoin signet |
Blindbit | 8000 | Service de filtres |
sdk_relay | 8090, 8091 | Service de relais |
📋 Configuration
Bitcoin Core
Configuration automatique pour le réseau signet avec :
- RPC activé sur le port 18443
- ZMQ activé sur le port 29000
- Connexion Tor pour l'anonymat
- Synchronisation automatique
Blindbit
Service de filtres pour les paiements silencieux :
- Version stable (branche master)
- Connexion automatique à Bitcoin Core
- API REST sur le port 8000
sdk_relay
Service de relais pour l'intégration :
- Configuration Docker automatique
- Authentification par cookie Bitcoin Core
- Connexion aux services via réseau Docker
🔧 Scripts utilitaires
Tests de connectivité
## 📚 Exemples Pratiques
Pour des exemples détaillés d'utilisation, consultez le document [EXEMPLES_PRATIQUES.md](EXEMPLES_PRATIQUES.md) qui contient :
- 🚀 **Exemples de démarrage** : Démarrage complet, avec 3 relais, séquentiel
- 🧪 **Exemples de tests** : Tests de connectivité, synchronisation, performance
- 🌐 **Exemples d'ajout de nœuds externes** : Configuration multi-sites, gestion
- 🔧 **Exemples de configuration** : Bitcoin Core, sdk_relay, réseau personnalisé
- 📊 **Exemples de monitoring** : Temps réel, synchronisation Bitcoin, relais
- 🛠️ **Exemples de debug** : Connexion Bitcoin Core, WebSocket, synchronisation
- 🔒 **Exemples de sécurité** : Pare-feu, SSL/TLS, monitoring de sécurité
- 📈 **Exemples de performance** : Tests de charge, optimisation, monitoring
- 🚀 **Exemples de déploiement** : Production, multi-environnements, backup
### Exemples rapides
```bash
# Démarrage complet
docker-compose up -d
# Test de synchronisation
./test_final_sync.sh status
# Ajouter un nœud externe
./add_external_node.sh add external-relay-1 external-relay-1.example.com:8090
# Monitoring en temps réel
./monitor_sync.sh
Test complet de tous les services
cd sdk_relay ./test_final.sh
Test de connectivité réseau
./test_connectivity.sh
Test simple
./test_simple.sh
### Débogage
```bash
# Débogage du container sdk_relay
./debug_container.sh
# Test du healthcheck sdk_relay
./test_healthcheck.sh
# Logs des services
sudo docker-compose logs [service_name]
🌐 Réseau Docker
Tous les services communiquent via le réseau 4nk_node_btcnet
avec résolution DNS automatique :
bitcoin
: Bitcoin Coreblindbit
: Service Blindbittor
: Proxy Torsdk_relay
: Service de relais
📊 Monitoring
Healthchecks
Les services incluent des healthchecks automatiques :
# Vérifier l'état des healthchecks
sudo docker-compose ps
# Logs des healthchecks
sudo docker-compose logs | grep health
Healthcheck sdk_relay
Le service sdk_relay utilise un healthcheck personnalisé qui vérifie :
- ✅ Processus : sdk_relay en cours d'exécution
- ✅ Port WebSocket : Port 8090 en écoute
- ✅ Connectivité Bitcoin Core : Accès au RPC Bitcoin
- ✅ Connectivité Blindbit : Accès au service Blindbit
- ✅ Configuration : Fichier de configuration présent
- ✅ Cookie Bitcoin : Authentification Bitcoin configurée
# Test manuel du healthcheck
sudo docker exec sdk_relay /usr/local/bin/healthcheck.sh
# Test depuis l'hôte
cd sdk_relay && ./test_healthcheck.sh
Logs
# Logs de tous les services
sudo docker-compose logs -f
# Logs d'un service spécifique
sudo docker-compose logs -f bitcoin
sudo docker-compose logs -f blindbit
sudo docker-compose logs -f sdk_relay
🔒 Sécurité
Authentification
- Bitcoin Core utilise l'authentification par cookie
- Les cookies sont automatiquement copiés dans les containers
- Permissions restrictives sur les fichiers sensibles
Réseau
- Isolation via réseau Docker
- Communication interne uniquement
- Ports exposés limités au minimum nécessaire
🛠️ Développement
Ajout d'un nouveau service
- Créer le Dockerfile dans un sous-répertoire
- Ajouter le service dans
docker-compose.yml
- Configurer les dépendances et le réseau
- Ajouter les healthchecks si nécessaire
Modification de la configuration
# Modifier la configuration Bitcoin Core
sudo docker-compose down
# Éditer bitcoin/bitcoin.conf
sudo docker-compose up -d bitcoin
# Modifier la configuration Blindbit
# Éditer blindbit/blindbit.toml
sudo docker-compose restart blindbit
📁 Structure des fichiers
lecoffre_node/
├── bitcoin/
│ ├── Dockerfile
│ └── bitcoin.conf
├── blindbit/
│ ├── Dockerfile
│ └── blindbit.toml
├── sdk_relay/
│ ├── Dockerfile
│ ├── .conf.docker
│ └── scripts/
├── tor/
│ ├── Dockerfile
│ └── torrc
├── docker-compose.yml
└── README.md
🚨 Dépannage
Problèmes courants
-
Ports déjà utilisés
# Vérifier les ports utilisés sudo netstat -tlnp | grep -E "(18443|8000|9050)" # Arrêter les services conflictuels sudo docker-compose down
-
Problèmes de synchronisation Bitcoin
# Vérifier les logs Bitcoin Core sudo docker-compose logs bitcoin # Redémarrer Bitcoin Core sudo docker-compose restart bitcoin
-
Problèmes de connectivité sdk_relay
# Tester la connectivité cd sdk_relay ./test_final.sh # Vérifier la configuration ./debug_container.sh
Logs détaillés
# Logs avec timestamps
sudo docker-compose logs -t
# Logs des 100 dernières lignes
sudo docker-compose logs --tail=100
# Logs depuis une date
sudo docker-compose logs --since="2024-01-01T00:00:00"
📈 Performance
Ressources recommandées
- CPU : 2 cœurs minimum, 4 cœurs recommandés
- RAM : 4 Go minimum, 8 Go recommandés
- Stockage : 20 Go minimum pour la blockchain signet
- Réseau : Connexion stable pour la synchronisation
Optimisations
# Limiter l'utilisation CPU
sudo docker-compose up -d --scale bitcoin=1
# Surveiller l'utilisation des ressources
sudo docker stats
🤝 Contribution
- Fork le repository
- Créer une branche feature (
git checkout -b feature/nouvelle-fonctionnalite
) - Commit les changements (
git commit -am 'Ajout de nouvelle fonctionnalité'
) - Push la branche (
git push origin feature/nouvelle-fonctionnalite
) - Créer une Pull Request
📄 Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
🆘 Support
Pour obtenir de l'aide :
- Consulter la documentation
- Vérifier les issues existantes
- Créer une nouvelle issue avec les détails du problème
- Inclure les logs et la configuration utilisée