- 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
224 lines
5.5 KiB
Markdown
224 lines
5.5 KiB
Markdown
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# Test HTTP
|
|
curl -s http://localhost:8080 | head -10
|
|
|
|
# Test de santé
|
|
curl -s http://localhost:8080/health
|
|
```
|
|
|
|
## Monitoring et logs
|
|
|
|
### Logs du conteneur
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
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
|
|
```bash
|
|
# Mettre à jour l'image
|
|
docker-compose pull ihm_client
|
|
|
|
# Reconstruire avec les dernières modifications
|
|
docker-compose build ihm_client
|
|
```
|
|
|
|
### Sauvegarde
|
|
```bash
|
|
# 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`
|