- Réorganisation des tests par catégorie (unit, integration, connectivity, external) - Création de scripts d'exécution automatisés pour les tests - Création de guides techniques complets (ARCHITECTURE.md, API.md) - Transfert des informations depuis specs/ vers docs/ - Nettoyage et archivage des fichiers obsolètes - Documentation complète des tests avec exemples - Scripts de maintenance et nettoyage automatique - Structure professionnelle prête pour l'évolution
9.9 KiB
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 !