From 31dedfe28294355d6d8bc14f0d7376bedba31998 Mon Sep 17 00:00:00 2001 From: Debian Date: Wed, 27 Aug 2025 19:44:13 +0000 Subject: [PATCH] release: 1.1.1 (latest) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - signer: endpoint de santé via httpd (9092) exposé en /signer/health - relays: healthcheck assoupli (attente indicateur de démarrage) - docs: ARCHITECTURE/CONFIGURATION/TESTING mis à jour - changelog: entrée 1.1.1 --- CHANGELOG.md | 9 +++++++++ VERSION | 1 + docker-compose.yml | 3 ++- docs/ARCHITECTURE.md | 4 ++-- docs/CONFIGURATION.md | 7 +++++-- docs/TESTING.md | 8 +++----- sdk_relay/healthcheck.sh | 24 ++++++++++++++---------- 7 files changed, 36 insertions(+), 20 deletions(-) create mode 100644 VERSION diff --git a/CHANGELOG.md b/CHANGELOG.md index fb9dbc87..ffc98fb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,15 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/spec/v2.0.0.htm - Correction `EACCES` de build UI via gestion des permissions `ihm_client/dist` - Diagnostic et correction outillage réseau : installation de `netcat-openbsd` sur l’hôte et dans `bitcoin-signet` pour tests SOCKS/TCP +## [1.1.1] - 2025-08-27 + +### Changed +- `docker-compose.yml` : ajout d’un mini serveur HTTP (busybox httpd) sur `sdk_signer` pour l’endpoint de santé interne 9092, exposé via Nginx en `/signer/health`. +- `sdk_relay/healthcheck.sh` : assouplissement du healthcheck (attente d’un indicateur de démarrage) pour éviter les faux négatifs durant la phase de rescan/initialisation. + +### Fixed +- `/signer/health` retournait 502 via le reverse proxy ; désormais HTTP 200 avec corps `ok`. + ## [1.0.0] - 2024-12-19 ### Added diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..56130fb3 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +v1.1.1 diff --git a/docker-compose.yml b/docker-compose.yml index c5501715..2e23302d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -273,7 +273,8 @@ services: entrypoint: > /bin/sh -lc "mkdir -p /app/data && chown -R nodejs:nodejs /app/data || true; \ apk add --no-cache busybox-extras >/dev/null 2>&1 || true; \ - ( while true; do { printf 'HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nContent-Length: 2\r\n\r\nok'; } | nc -l -p 9092 -s 0.0.0.0 -q 1; done ) & \ + mkdir -p /tmp/health && printf 'ok' > /tmp/health/health; \ + ( /usr/sbin/httpd -f -h /tmp/health -p 9092 ) & \ exec node -r ts-node/register/transpile-only src/index.ts" networks: btcnet: diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index d8ca925b..b4464781 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -47,6 +47,7 @@ Un reverse proxy dédié assure désormais l'exposition publique unique de l'inf - `/ws/` → `sdk_relay_1` (WebSocket, upgrade) - `/storage/` → `sdk_storage` (HTTP 8081 via proxy) - `/signer/ws/` → `sdk_signer` (WebSocket 9090 via proxy) + - `/signer/health` → `sdk_signer` (HTTP 9092 via sidecar httpd pour health) - Tous les autres services restent strictement internes au réseau Docker `btcnet` ## Composants Principaux @@ -93,6 +94,7 @@ Un reverse proxy dédié assure désormais l'exposition publique unique de l'inf **Caractéristiques :** - Port interne : 9090 (WebSocket) +- Santé : HTTP 9092 (sidecar httpd minimal) exposé via `/signer/health` - Dépendances : `sdk_relay_1` (URL relay `ws://sdk_relay_1:8090`) - Publication : via reverse proxy en `/signer/ws/` - Persistance : volume `sdk_signer_data` pour la base locale @@ -496,5 +498,3 @@ Client ──── WebSocket ──── SDK Relay ──── Bitcoin Core R - **Monitoring :** Prometheus, Grafana - **Logging :** ELK Stack - **Alerting :** PagerDuty, Slack - - diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index 20cf6552..17089109 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -31,6 +31,11 @@ RELAY_2_PORTS=8092:8090,8093:8091 RELAY_3_PORTS=8094:8090,8095:8091 ``` +### 1.b Santé des services + +- `sdk_signer` expose un endpoint de santé interne HTTP sur le port 9092 (sidecar httpd minimal). Le reverse proxy le publie en `/signer/health`. +- Les `sdk_relay_*` utilisent un healthcheck tolérant au démarrage : le processus doit être actif et l’indicateur `/home/bitcoin/.4nk/processes` présent. Les ports 8090/8091 peuvent n’ouvrir qu’après les phases initiales (scan/resync). + ### 2. Configuration Réseau #### Réseau Docker Personnalisé @@ -792,5 +797,3 @@ docker-compose logs --tail=50 ``` --- - - diff --git a/docs/TESTING.md b/docs/TESTING.md index e464bd48..22808ffa 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md @@ -106,7 +106,7 @@ Options disponibles : - `test_connectivity.sh` : Test de connectivité des services - `test_websocket_messages.py` : Test des messages WebSocket - `test_storage_proxy.sh` : Test de l’API sdk_storage via le reverse proxy (`/storage/*`) - - `test_signer_proxy.sh` : Test de la connectivité sdk_signer (port 9090 + WSS via `/signer/ws/`) +- `test_signer_proxy.sh` : Test de la connectivité sdk_signer (port 9090 + WSS via `/signer/ws/` + santé `/signer/health`) - Tests externes reverse proxy : ```bash curl -kI https:/// @@ -336,8 +336,8 @@ Les logs sont conservés sous `tests/logs/signet_sync_*.log`. #### Vérifier l’ouverture des ports du relais et l’API ```bash -# Ports 8090/8091 dans sdk_relay_1 -sudo docker exec sdk_relay_1 sh -lc 'ss -lntp 2>/dev/null || netstat -tlnp 2>/dev/null' | grep -E ':8090 |:8091 ' || echo no-listen +# Ports 8090/8091 dans sdk_relay_1 (peuvent s'ouvrir après la phase d'initialisation) +sudo docker exec sdk_relay_1 sh -lc 'ss -lntp 2>/dev/null || netstat -tlnp 2>/dev/null' | grep -E ':8090 |:8091 ' || echo en-initialisation # Test /api via reverse proxy curl -k -I https://localhost/api/ @@ -555,5 +555,3 @@ Pour obtenir de l'aide : - Tests d'API REST - Tests d'interface WebSocket - Tests de compatibilité - - diff --git a/sdk_relay/healthcheck.sh b/sdk_relay/healthcheck.sh index bb51cc5f..113dae0d 100755 --- a/sdk_relay/healthcheck.sh +++ b/sdk_relay/healthcheck.sh @@ -12,13 +12,20 @@ else exit 1 fi -# Test 2: Vérifier que le port WebSocket écoute -echo "🔍 Test 2: Port WebSocket" -if netstat -tuln | grep ":8090 " | grep "LISTEN" > /dev/null; then - echo "✅ Port 8090 écoute" -else - echo "❌ Port 8090 n'écoute pas" - exit 1 +# Test 2: Vérifier que le binaire est prêt (attente gracieuse au démarrage) +echo "🔍 Test 2: Démarrage du service" +READY_FILE="/home/bitcoin/.4nk/processes" +for i in 1 2 3 4; do + if [ -f "$READY_FILE" ]; then + echo "✅ Indicateur de démarrage présent ($READY_FILE)" + break + fi + echo "⏳ En attente de l'initialisation (tentative $i/4)" + sleep 5 +done +if [ ! -f "$READY_FILE" ]; then + echo "❌ Indicateur de démarrage absent après délai" + exit 1 fi # Test 3: Vérifier la connectivité Bitcoin Core @@ -59,6 +66,3 @@ fi echo "🎯 Tous les tests de santé sont passés !" exit 0 - - -