- 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
353 lines
8.4 KiB
Markdown
353 lines
8.4 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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 :
|
|
|
|
```bash
|
|
# 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é
|
|
|
|
```bash
|
|
|
|
## 📚 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 Core
|
|
- `blindbit` : Service Blindbit
|
|
- `tor` : Proxy Tor
|
|
- `sdk_relay` : Service de relais
|
|
|
|
## 📊 Monitoring
|
|
|
|
### Healthchecks
|
|
|
|
Les services incluent des healthchecks automatiques :
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Créer le Dockerfile dans un sous-répertoire
|
|
2. Ajouter le service dans `docker-compose.yml`
|
|
3. Configurer les dépendances et le réseau
|
|
4. Ajouter les healthchecks si nécessaire
|
|
|
|
### Modification de la configuration
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. **Ports déjà utilisés**
|
|
|
|
```bash
|
|
# Vérifier les ports utilisés
|
|
sudo netstat -tlnp | grep -E "(18443|8000|9050)"
|
|
|
|
# Arrêter les services conflictuels
|
|
sudo docker-compose down
|
|
```
|
|
|
|
2. **Problèmes de synchronisation Bitcoin**
|
|
|
|
```bash
|
|
# Vérifier les logs Bitcoin Core
|
|
sudo docker-compose logs bitcoin
|
|
|
|
# Redémarrer Bitcoin Core
|
|
sudo docker-compose restart bitcoin
|
|
```
|
|
|
|
3. **Problèmes de connectivité sdk_relay**
|
|
|
|
```bash
|
|
# Tester la connectivité
|
|
cd sdk_relay
|
|
./test_final.sh
|
|
|
|
# Vérifier la configuration
|
|
./debug_container.sh
|
|
```
|
|
|
|
### Logs détaillés
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Limiter l'utilisation CPU
|
|
sudo docker-compose up -d --scale bitcoin=1
|
|
|
|
# Surveiller l'utilisation des ressources
|
|
sudo docker stats
|
|
```
|
|
|
|
## 🤝 Contribution
|
|
|
|
1. Fork le repository
|
|
2. Créer une branche feature (`git checkout -b feature/nouvelle-fonctionnalite`)
|
|
3. Commit les changements (`git commit -am 'Ajout de nouvelle fonctionnalité'`)
|
|
4. Push la branche (`git push origin feature/nouvelle-fonctionnalite`)
|
|
5. 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 :
|
|
|
|
1. Consulter la documentation
|
|
2. Vérifier les issues existantes
|
|
3. Créer une nouvelle issue avec les détails du problème
|
|
4. Inclure les logs et la configuration utilisée
|