# Correction: Mempool affiche "hors connexion" **Date**: 2026-01-26 **Auteur**: Équipe 4NK ## Motivations - Le mempool affichait le site mais indiquait "hors connexion" - Le WebSocket ne pouvait pas se connecter au backend - L'utilisateur ne pouvait pas utiliser l'explorateur blockchain ## Root causes - Le backend mempool était en état "unhealthy" mais fonctionnait partiellement - Le backend avait des problèmes de connexion avec Bitcoin RPC (erreurs `ECONNRESET`) - Le processus de mise à jour des blocs était bloqué (`$updateBlocks stalled`) - Le backend nécessitait un redémarrage pour se resynchroniser correctement ## Correctifs - Redémarrage du backend mempool pour résoudre les problèmes de connexion - Vérification de la configuration nginx du frontend (proxy WebSocket vers `http://api:8999/`) - Vérification de la connectivité entre le frontend et le backend via le réseau Docker - Restauration de la configuration nginx après des modifications incorrectes ## Evolutions - Création d'un script de diagnostic (`mempool/diagnose-mempool.sh`) pour vérifier l'état des services localement - Création d'un script de diagnostic et correction (`mempool/fix-mempool-websocket.sh`) pour diagnostiquer et corriger les problèmes sur le serveur services - Amélioration de la configuration nginx pour le WebSocket (ajout des headers nécessaires dans `mempool/nginx-mempool.conf`) ## Pages affectées - `mempool/diagnose-mempool.sh` : Script de diagnostic local - `mempool/fix-mempool-websocket.sh` : Script de diagnostic et correction distant - `mempool/nginx-mempool.conf` : Configuration nginx pour le WebSocket (amélioration des headers) ## Modalités de déploiement 1. **Diagnostic local** : ```bash cd mempool ./diagnose-mempool.sh ``` 2. **Redémarrage du backend si nécessaire** : ```bash docker-compose -f docker-compose.signet.yml restart api ``` 3. **Vérification de la connectivité** : ```bash docker-compose -f docker-compose.signet.yml exec -T web curl -f -s http://api:8999/api/v1/backend-info ``` 4. **Redémarrage du frontend si la configuration nginx a été modifiée** : ```bash docker-compose -f docker-compose.signet.yml restart web ``` ## Modalités d'analyse ### Vérifier l'état des services ```bash docker-compose -f docker-compose.signet.yml ps ``` ### Vérifier les logs du backend ```bash docker-compose -f docker-compose.signet.yml logs --tail=50 api | grep -E "(ERROR|ERR|WARN|failed|error)" ``` ### Tester la connectivité backend ```bash # Depuis le conteneur frontend docker-compose -f docker-compose.signet.yml exec -T web curl -f -s http://api:8999/api/v1/backend-info # Depuis l'extérieur curl -s http://localhost:3015/api/v1/backend-info ``` ### Vérifier la configuration nginx WebSocket ```bash docker-compose -f docker-compose.signet.yml exec -T web cat /etc/nginx/conf.d/nginx-mempool.conf | grep -A 5 "api/v1/ws" ``` La configuration doit être : ```nginx location /api/v1/ws { proxy_pass http://api:8999/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } ``` ## Notes - Le backend mempool écoute sur toutes les routes pour les WebSockets (WebSocket.Server créé directement sur le serveur HTTP) - Le nginx du frontend proxyfie `/api/v1/ws` vers `http://api:8999/` (racine du backend) - Le backend peut être en état "unhealthy" mais fonctionner quand même si le healthcheck échoue pour une raison technique (par exemple, `curl` non disponible dans le conteneur) - Les erreurs `ECONNRESET` avec Bitcoin RPC peuvent être temporaires et se résoudre avec un redémarrage