**Motivations:** - Export Signet and mining wallet backups to git with only 2 versions kept - Document and add backup/restore scripts for signet and mining wallet **Correctifs:** - Backup-to-git uses SSH URL for passwordless cron; copy timestamped files only; prune to 2 versions; remove *-latest from backup repo **Evolutions:** - data/backup-to-git-cron.sh: daily export to git.4nkweb.com/4nk/backup - save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh - features/backup-to-git-daily-cron.md, docs/MAINTENANCE.md backup section - .gitignore: data/backup-to-git.log **Pages affectées:** - .gitignore, data/backup-to-git-cron.sh, docs/MAINTENANCE.md, features/backup-to-git-daily-cron.md - save-signet-datadir-backup.sh, restore-signet-from-backup.sh, export-mining-wallet.sh, import-mining-wallet.sh - Plus autres fichiers modifiés ou non suivis déjà présents dans le working tree
107 lines
3.7 KiB
Markdown
107 lines
3.7 KiB
Markdown
# 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 la machine bitcoin
|
|
- 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** (depuis la racine du projet `/home/ncantu/Bureau/code/bitcoin/`) :
|
|
```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
|