ihm_client/docs/INTEGRATION_4NK_NODE.md
Nicolas Cantu 71b18a315f feat: amélioration du script de démarrage et ajout des tests
- Amélioration du script start.sh pour une meilleure robustesse
- Suppression des dépendances critiques pour permettre le démarrage même si certains services ne sont pas prêts
- Ajout de vérifications WebSocket pour les relays
- Correction de la fonction hexToBlob pour gérer correctement les types ArrayBuffer
- Ajout de tests unitaires pour les fonctions de conversion hex
- Configuration Jest pour les tests
- Mise à jour de la documentation d'intégration avec 4NK_node
- Amélioration du .gitignore pour exclure les dépendances temporaires
2025-08-25 20:29:24 +02:00

5.5 KiB

Intégration avec 4NK_node

Vue d'ensemble

Ce document décrit l'intégration de ihm_client dans l'infrastructure 4NK_node et les modifications apportées pour assurer une connectivité optimale avec les services backend.

Architecture d'intégration

Services connectés

  • SDK Relays : Connexion WebSocket pour la synchronisation
  • Bitcoin Core : API RPC pour les opérations blockchain
  • Blindbit Oracle : API pour les oracles
  • Tor Proxy : Proxy pour la confidentialité

Ports et URLs

  • Interface utilisateur : http://localhost:8080
  • SDK Relay 1 : ws://localhost:8090 (WebSocket)
  • SDK Relay 2 : ws://localhost:8092 (WebSocket)
  • SDK Relay 3 : ws://localhost:8094 (WebSocket)
  • Bitcoin Core RPC : http://localhost:18443
  • Blindbit Oracle : http://localhost:8000

Modifications du script de démarrage

Changements principaux

Le script start.sh a été modifié pour améliorer la robustesse et la connectivité :

1. Vérification WebSocket des relays

# Vérification WebSocket des relays (optionnel)
check_websocket "sdk_relay WebSocket" "$SDK_RELAY_WS_URL"

2. Suppression des dépendances critiques

  • Les vérifications HTTP des relays ont été supprimées
  • Les attentes critiques de Bitcoin Core et Blindbit ont été remplacées par des vérifications informatives
  • L'interface utilisateur démarre maintenant même si certains services ne sont pas encore prêts

3. Configuration dynamique

# Génération de la configuration dynamique
cat > /usr/share/nginx/html/config.js << EOF
window.ENV_CONFIG = {
    SDK_RELAY_WS_URL: '$SDK_RELAY_WS_URL',
    SDK_RELAY_HTTP_URL: '$SDK_RELAY_HTTP_URL',
    BITCOIN_RPC_URL: '$BITCOIN_RPC_URL',
    BLINDBIT_URL: '$BLINDBIT_URL',
    ENVIRONMENT: '4nk-node'
};
EOF

Fonctionnalités de connectivité

Reconnexion automatique

L'interface utilisateur gère automatiquement :

  • La reconnexion aux WebSockets des relays
  • La gestion des déconnexions temporaires
  • La récupération après panne de service

Gestion des erreurs

  • Tentatives de reconnexion avec backoff exponentiel
  • Logs détaillés pour le diagnostic
  • Dégradation gracieuse en cas d'indisponibilité de service

Tests de connectivité

Test manuel des WebSockets

# Depuis le conteneur ihm_client
nc -z sdk_relay_1 8090
nc -z sdk_relay_2 8090
nc -z sdk_relay_3 8090

Test de l'interface utilisateur

# Test HTTP
curl -s http://localhost:8080 | head -10

# Test de santé
curl -s http://localhost:8080/health

Monitoring et logs

Logs du conteneur

# Voir les logs de démarrage
docker logs 4nk-ihm-client

# Suivre les logs en temps réel
docker logs -f 4nk-ihm-client

Métriques de santé

  • Vérification périodique de nginx
  • Statut des connexions WebSocket
  • Disponibilité des services backend

Dépannage

Problèmes courants

1. Interface utilisateur non accessible

# Vérifier le statut du conteneur
docker ps | grep ihm_client

# Vérifier les logs
docker logs 4nk-ihm-client --tail=20

2. Connexion WebSocket échouée

# Vérifier la connectivité réseau
docker exec 4nk-ihm-client nc -z sdk_relay_1 8090

# Vérifier les logs des relays
docker logs sdk_relay_1 --tail=10

3. Services backend indisponibles

# Vérifier Bitcoin Core
curl -s --user bitcoin:bitcoin http://localhost:18443

# Vérifier Blindbit
curl -s http://localhost:8000/health

Solutions

Redémarrage du service

# Redémarrer ihm_client
docker-compose restart ihm_client

# Reconstruire et redémarrer
docker-compose build ihm_client
docker-compose up -d ihm_client

Nettoyage complet

# Arrêter tous les services
docker-compose down

# Nettoyer les volumes (optionnel)
docker-compose down -v

# Redémarrer
docker-compose up -d

Configuration avancée

Variables d'environnement

SDK_RELAY_WS_URL=ws://sdk_relay_1:8090
SDK_RELAY_HTTP_URL=http://sdk_relay_1:8091
BITCOIN_RPC_URL=http://bitcoin:18443
BLINDBIT_URL=http://blindbit:8000

Personnalisation du script

Le script start.sh peut être modifié pour :

  • Ajouter des vérifications de santé personnalisées
  • Modifier les timeouts de connexion
  • Ajouter des métriques de performance

Sécurité

Isolation réseau

  • L'interface utilisateur est isolée dans le réseau Docker btcnet
  • Communication sécurisée entre conteneurs
  • Pas d'exposition directe des services backend

Authentification

  • Bitcoin Core utilise l'authentification par cookie
  • Les WebSockets des relays sont sécurisés
  • L'interface utilisateur gère l'authentification côté client

Performance

Optimisations

  • Connexions WebSocket persistantes
  • Mise en cache des données fréquemment utilisées
  • Compression des données transmises

Métriques

  • Temps de réponse de l'interface
  • Latence des WebSockets
  • Utilisation des ressources

Maintenance

Mises à jour

# Mettre à jour l'image
docker-compose pull ihm_client

# Reconstruire avec les dernières modifications
docker-compose build ihm_client

Sauvegarde

# Sauvegarder la configuration
docker cp 4nk-ihm-client:/usr/share/nginx/html/config.js ./backup/

# Sauvegarder les logs
docker logs 4nk-ihm-client > ./backup/ihm_client.log

Support

Pour toute question ou problème lié à l'intégration :

  1. Consulter les logs du conteneur
  2. Vérifier la connectivité réseau
  3. Tester les services backend individuellement
  4. Consulter la documentation de 4NK_node