4NK_node/EXEMPLES_PRATIQUES.md
Nicolas Cantu 72682290c1 feat: Ajout du support des relais externes et intégration dev3.4nkweb.com
- 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
2025-08-22 17:00:31 +02:00

9.9 KiB

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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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é

# 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

# 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

# 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

# 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

# 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

# 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

# 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 !