- 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
440 lines
9.9 KiB
Markdown
440 lines
9.9 KiB
Markdown
# Exemples Pratiques - 4NK Node
|
|
|
|
Ce document contient des exemples pratiques pour utiliser l'infrastructure 4NK Node.
|
|
|
|
## 🚀 Exemples de Démarrage
|
|
|
|
### 1. Démarrage complet de l'infrastructure
|
|
|
|
```bash
|
|
# Cloner et configurer
|
|
git clone git@git.4nkweb.com:4nk/4NK_node.git
|
|
cd 4NK_node
|
|
|
|
# Démarrer tous les services
|
|
docker-compose up -d
|
|
|
|
# Vérifier le statut
|
|
docker-compose ps
|
|
|
|
# Suivre les logs
|
|
docker-compose logs -f
|
|
```
|
|
|
|
### 2. Démarrage avec 3 relais pour tests
|
|
|
|
```bash
|
|
# Utiliser le script de démarrage spécialisé
|
|
./start_3_relays_docker.sh
|
|
|
|
# Ou manuellement
|
|
docker-compose up -d tor bitcoin blindbit
|
|
sleep 30 # Attendre la synchronisation Bitcoin
|
|
docker-compose up -d sdk_relay_1 sdk_relay_2 sdk_relay_3
|
|
```
|
|
|
|
### 3. Démarrage séquentiel pour debug
|
|
|
|
```bash
|
|
# 1. Démarrer Tor
|
|
docker-compose up -d tor
|
|
sleep 5
|
|
|
|
# 2. Démarrer Bitcoin Core
|
|
docker-compose up -d bitcoin
|
|
echo "Attendre la synchronisation Bitcoin (peut prendre 10-30 minutes)"
|
|
echo "Vérifier avec: docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo"
|
|
|
|
# 3. Démarrer Blindbit
|
|
docker-compose up -d blindbit
|
|
sleep 10
|
|
|
|
# 4. Démarrer les relais
|
|
docker-compose up -d sdk_relay_1 sdk_relay_2 sdk_relay_3
|
|
```
|
|
|
|
## 🧪 Exemples de Tests
|
|
|
|
### 1. Test de connectivité basique
|
|
|
|
```bash
|
|
# Vérifier que tous les services répondent
|
|
./test_final_sync.sh status
|
|
|
|
# Test de connectivité WebSocket
|
|
python3 test_websocket_messages.py
|
|
|
|
# Test des messages de synchronisation
|
|
./test_sync_logs.sh test
|
|
```
|
|
|
|
### 2. Test de synchronisation entre relais
|
|
|
|
```bash
|
|
# Test en continu
|
|
./test_sync_logs.sh continuous
|
|
|
|
# Test forcé avec redémarrage
|
|
./test_sync_logs.sh force
|
|
|
|
# Surveillance des logs de synchronisation
|
|
./monitor_sync.sh
|
|
```
|
|
|
|
### 3. Test de performance
|
|
|
|
```bash
|
|
# Test de charge WebSocket
|
|
for i in {1..10}; do
|
|
python3 test_websocket_messages.py &
|
|
done
|
|
wait
|
|
|
|
# Test de connectivité multiple
|
|
netstat -tlnp | grep -E "(8090|8092|8094)"
|
|
```
|
|
|
|
## 🌐 Exemples d'Ajout de Nœuds Externes
|
|
|
|
### 1. Ajouter un nœud externe simple
|
|
|
|
```bash
|
|
# Ajouter un nœud externe
|
|
./add_external_node.sh add external-relay-1 external-relay-1.example.com:8090
|
|
|
|
# Vérifier la configuration
|
|
./add_external_node.sh list
|
|
|
|
# Tester la connectivité
|
|
./add_external_node.sh test external-relay-1
|
|
|
|
# Redémarrer les relais pour appliquer
|
|
docker-compose restart sdk_relay_1 sdk_relay_2 sdk_relay_3
|
|
```
|
|
|
|
### 2. Configuration d'un réseau multi-sites
|
|
|
|
```bash
|
|
# Site principal (4NK_node)
|
|
./add_external_node.sh add site-paris-1 paris-relay-1.4nk.net:8090
|
|
./add_external_node.sh add site-paris-2 paris-relay-2.4nk.net:8090
|
|
|
|
# Site secondaire
|
|
./add_external_node.sh add site-lyon-1 lyon-relay-1.4nk.net:8090
|
|
./add_external_node.sh add site-lyon-2 lyon-relay-2.4nk.net:8090
|
|
|
|
# Site de backup
|
|
./add_external_node.sh add backup-1 backup-relay-1.4nk.net:8090
|
|
|
|
# Vérifier la configuration complète
|
|
./add_external_node.sh list
|
|
```
|
|
|
|
### 3. Gestion des nœuds externes
|
|
|
|
```bash
|
|
# Supprimer un nœud problématique
|
|
./add_external_node.sh remove external-relay-1
|
|
|
|
# Valider une nouvelle adresse avant ajout
|
|
./add_external_node.sh validate 192.168.1.100:8090
|
|
|
|
# Tester tous les nœuds configurés
|
|
for relay in $(./add_external_node.sh list | grep "🔸" | cut -d' ' -f3); do
|
|
echo "Testing $relay..."
|
|
./add_external_node.sh test $relay
|
|
done
|
|
```
|
|
|
|
## 🔧 Exemples de Configuration
|
|
|
|
### 1. Configuration Bitcoin Core personnalisée
|
|
|
|
```bash
|
|
# Modifier la configuration Bitcoin
|
|
cat > bitcoin/bitcoin.conf << EOF
|
|
signet=1
|
|
rpcuser=bitcoin
|
|
rpcpassword=your_secure_password
|
|
rpcbind=0.0.0.0
|
|
rpcallowip=172.19.0.0/16
|
|
zmqpubrawblock=tcp://0.0.0.0:29000
|
|
zmqpubrawtx=tcp://0.0.0.0:29000
|
|
txindex=1
|
|
server=1
|
|
listen=1
|
|
EOF
|
|
|
|
# Redémarrer Bitcoin Core
|
|
docker-compose restart bitcoin
|
|
```
|
|
|
|
### 2. Configuration sdk_relay personnalisée
|
|
|
|
```bash
|
|
# Créer une configuration personnalisée pour relay-1
|
|
cat > sdk_relay/.conf.docker.relay1 << EOF
|
|
core_url=http://bitcoin:18443
|
|
core_wallet=relay_wallet
|
|
ws_url=0.0.0.0:8090
|
|
wallet_name=relay_wallet.json
|
|
network=signet
|
|
blindbit_url=http://blindbit:8000
|
|
zmq_url=tcp://bitcoin:29000
|
|
data_dir=.4nk
|
|
cookie_path=/home/bitcoin/.4nk/bitcoin.cookie
|
|
dev_mode=true
|
|
standalone=false
|
|
relay_id=relay-1
|
|
EOF
|
|
|
|
# Redémarrer le relais
|
|
docker-compose restart sdk_relay_1
|
|
```
|
|
|
|
### 3. Configuration réseau personnalisée
|
|
|
|
```bash
|
|
# Créer un réseau Docker personnalisé
|
|
docker network create 4nk-network --subnet=172.20.0.0/16
|
|
|
|
# Modifier docker-compose.yml pour utiliser le réseau personnalisé
|
|
sed -i 's/4nk_default/4nk-network/g' docker-compose.yml
|
|
|
|
# Redémarrer tous les services
|
|
docker-compose down
|
|
docker-compose up -d
|
|
```
|
|
|
|
## 📊 Exemples de Monitoring
|
|
|
|
### 1. Monitoring en temps réel
|
|
|
|
```bash
|
|
# Suivre tous les logs
|
|
docker-compose logs -f --tail=100
|
|
|
|
# Suivre un service spécifique
|
|
docker logs -f sdk_relay_1
|
|
|
|
# Monitoring des ressources
|
|
docker stats
|
|
|
|
# Vérifier l'espace disque
|
|
docker system df
|
|
```
|
|
|
|
### 2. Monitoring de la synchronisation Bitcoin
|
|
|
|
```bash
|
|
# Vérifier la progression de synchronisation
|
|
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo | jq '.verificationprogress'
|
|
|
|
# Vérifier les connexions
|
|
docker exec bitcoin-signet bitcoin-cli -signet getconnectioncount
|
|
|
|
# Vérifier l'utilisation mémoire
|
|
docker exec bitcoin-signet bitcoin-cli -signet getmemoryinfo
|
|
```
|
|
|
|
### 3. Monitoring des relais
|
|
|
|
```bash
|
|
# Vérifier l'état des relais
|
|
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep sdk_relay
|
|
|
|
# Vérifier les ports WebSocket
|
|
netstat -tlnp | grep -E "(8090|8092|8094)"
|
|
|
|
# Vérifier les logs de synchronisation
|
|
for i in {1..3}; do
|
|
echo "=== Relay $i ==="
|
|
docker logs sdk_relay_$i --tail=5 | grep -E "(Sync|Relay|Mesh)"
|
|
done
|
|
```
|
|
|
|
## 🛠️ Exemples de Debug
|
|
|
|
### 1. Debug de connexion Bitcoin Core
|
|
|
|
```bash
|
|
# Vérifier la connectivité RPC
|
|
curl -u bitcoin:your_password --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getblockchaininfo", "params": []}' -H 'content-type: text/plain;' http://localhost:18443/
|
|
|
|
# Vérifier le cookie d'authentification
|
|
docker exec bitcoin-signet ls -la /home/bitcoin/.bitcoin/signet/.cookie
|
|
|
|
# Tester la connexion depuis un relais
|
|
docker exec sdk_relay_1 curl -s http://bitcoin:18443/
|
|
```
|
|
|
|
### 2. Debug de connectivité WebSocket
|
|
|
|
```bash
|
|
# Test de connectivité WebSocket basique
|
|
curl -v -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Key: test" http://localhost:8090/
|
|
|
|
# Test avec wscat (si installé)
|
|
wscat -c ws://localhost:8090
|
|
|
|
# Test de connectivité depuis un autre conteneur
|
|
docker run --rm --network 4nk_default curlimages/curl curl -s http://sdk_relay_1:8090/
|
|
```
|
|
|
|
### 3. Debug de synchronisation
|
|
|
|
```bash
|
|
# Vérifier les logs de synchronisation
|
|
docker logs sdk_relay_1 | grep -E "(discover|sync|relay)" | tail -10
|
|
|
|
# Vérifier l'état du SyncManager
|
|
docker exec sdk_relay_1 ps aux | grep sdk_relay
|
|
|
|
# Vérifier les fichiers de données
|
|
docker exec sdk_relay_1 ls -la /home/bitcoin/.4nk/
|
|
```
|
|
|
|
## 🔒 Exemples de Sécurité
|
|
|
|
### 1. Configuration de pare-feu
|
|
|
|
```bash
|
|
# Autoriser seulement les ports nécessaires
|
|
sudo ufw allow 18443/tcp # Bitcoin Core RPC
|
|
sudo ufw allow 8090/tcp # sdk_relay WebSocket
|
|
sudo ufw allow 8000/tcp # Blindbit API
|
|
sudo ufw enable
|
|
|
|
# Vérifier les règles
|
|
sudo ufw status numbered
|
|
```
|
|
|
|
### 2. Configuration SSL/TLS
|
|
|
|
```bash
|
|
# Générer un certificat auto-signé
|
|
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
|
|
|
|
# Configurer nginx comme proxy SSL
|
|
cat > nginx.conf << EOF
|
|
server {
|
|
listen 443 ssl;
|
|
server_name your-domain.com;
|
|
|
|
ssl_certificate cert.pem;
|
|
ssl_certificate_key key.pem;
|
|
|
|
location / {
|
|
proxy_pass http://localhost:8090;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade \$http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host \$host;
|
|
}
|
|
}
|
|
EOF
|
|
```
|
|
|
|
### 3. Monitoring de sécurité
|
|
|
|
```bash
|
|
# Vérifier les connexions suspectes
|
|
netstat -tuln | grep -E "(8090|8092|8094)"
|
|
|
|
# Vérifier les logs d'accès
|
|
docker logs sdk_relay_1 | grep -E "(ERROR|WARN)" | tail -20
|
|
|
|
# Vérifier l'utilisation des ressources
|
|
docker stats --no-stream | grep sdk_relay
|
|
```
|
|
|
|
## 📈 Exemples de Performance
|
|
|
|
### 1. Test de charge
|
|
|
|
```bash
|
|
# Script de test de charge simple
|
|
for i in {1..50}; do
|
|
python3 test_websocket_messages.py &
|
|
sleep 0.1
|
|
done
|
|
wait
|
|
|
|
# Vérifier les performances
|
|
docker stats --no-stream
|
|
```
|
|
|
|
### 2. Optimisation mémoire
|
|
|
|
```bash
|
|
# Limiter la mémoire des conteneurs
|
|
docker-compose down
|
|
sed -i 's/- memory: 2g/- memory: 1g/g' docker-compose.yml
|
|
docker-compose up -d
|
|
|
|
# Vérifier l'utilisation mémoire
|
|
docker stats --no-stream | grep sdk_relay
|
|
```
|
|
|
|
### 3. Monitoring des performances
|
|
|
|
```bash
|
|
# Script de monitoring continu
|
|
while true; do
|
|
echo "=== $(date) ==="
|
|
docker stats --no-stream | grep -E "(sdk_relay|bitcoin)"
|
|
echo "WebSocket connections:"
|
|
netstat -an | grep :8090 | wc -l
|
|
sleep 30
|
|
done
|
|
```
|
|
|
|
## 🚀 Exemples de Déploiement
|
|
|
|
### 1. Déploiement en production
|
|
|
|
```bash
|
|
# Configuration production
|
|
export NODE_ENV=production
|
|
export RUST_LOG=info
|
|
|
|
# Démarrer avec restart automatique
|
|
docker-compose up -d --restart unless-stopped
|
|
|
|
# Vérifier la configuration
|
|
docker-compose config
|
|
|
|
# Monitoring de production
|
|
./monitor_sync.sh
|
|
```
|
|
|
|
### 2. Déploiement multi-environnements
|
|
|
|
```bash
|
|
# Environnement de développement
|
|
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
|
|
|
|
# Environnement de staging
|
|
docker-compose -f docker-compose.yml -f docker-compose.staging.yml up -d
|
|
|
|
# Environnement de production
|
|
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
|
```
|
|
|
|
### 3. Backup et restauration
|
|
|
|
```bash
|
|
# Backup des données
|
|
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin
|
|
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz ./backup/
|
|
|
|
# Backup des configurations
|
|
tar czf config-backup.tar.gz sdk_relay/.conf* external_nodes.conf
|
|
|
|
# Restauration
|
|
docker cp ./backup/bitcoin-backup.tar.gz bitcoin-signet:/tmp/
|
|
docker exec bitcoin-signet tar xzf /tmp/bitcoin-backup.tar.gz -C /
|
|
```
|
|
|
|
Ces exemples couvrent les cas d'usage les plus courants pour l'infrastructure 4NK Node. Adaptez-les selon vos besoins spécifiques !
|