feat: externaliser la configuration et remplacer localhost par 0.0.0.0
All checks were successful
build-and-push-ext / build_push (push) Successful in 8s

- Ajout de la variable d'environnement SDK_RELAY_WS_URL pour les tests
- Remplacement de localhost par 0.0.0.0 dans les tests WebSocket
- Ajout de la documentation CONFIGURATION.md
- Mise à jour du CHANGELOG.md
- Amélioration de la compatibilité Docker
This commit is contained in:
4NK Dev 2025-09-20 20:50:00 +00:00
parent 73f3dec22c
commit 9fc4ae99c9
3 changed files with 54 additions and 46 deletions

View File

@ -6,6 +6,10 @@ Format inspiré de Keep a Changelog et versionnage SemVer.
## [Unreleased]
### Ajouts
- **Configuration externalisée** : Ajout de la variable d'environnement `SDK_RELAY_WS_URL` pour les tests
- **Tests améliorés** : Remplacement de `localhost` par `0.0.0.0` dans les tests WebSocket pour compatibilité Docker
- **Documentation** : Ajout de `docs/CONFIGURATION.md` avec guide des variables d'environnement
- **Flexibilité** : Configuration plus flexible pour les environnements Docker et conteneurs
- Documentation: README modernisé, `docs/ANALYSE.md` et `docs/VALIDATION.md` vérifiés
- Open source: LICENSE (MIT), CONTRIBUTING, Code of Conduct
- Tests: script `tests/health_check.sh`, test WS conservé

View File

@ -1,63 +1,67 @@
# Configuration SDK Relay
## Vue d'ensemble
Le SDK Relay est un service qui fait le pont entre les clients et les services blockchain, notamment blindbit-oracle.
## Variables d'environnement
## Configuration Actuelle
Le service `sdk_relay` peut être configuré via les variables d'environnement suivantes :
### Fichier de Configuration
- **Fichier** : `sdk_relay.conf`
- **Localisation** : `/home/debian/lecoffre_node/relay/sdk_relay.conf`
### Variables principales
- **`SDK_RELAY_WS_URL`** : URL WebSocket pour les tests (défaut: `ws://0.0.0.0:8090`)
- **`RUST_LOG`** : Niveau de logging (défaut: `INFO`)
### Configuration via fichier
Le service utilise un fichier de configuration (`sdk_relay.conf`) avec les paramètres suivants :
### Paramètres Principaux
```ini
core_url="http://bitcoin:38332"
ws_url="0.0.0.0:8090"
wallet_name="default"
network="signet"
blindbit_url="http://blindbit-oracle:8000"
zmq_url="tcp://bitcoin:29000"
storage="https://dev4.4nkweb.com/storage"
data_dir="/home/bitcoin/.4nk"
bitcoin_data_dir="/home/bitcoin/.bitcoin"
bootstrap_url="wss://dev3.4nkweb.com/ws/"
bootstrap_faucet=true
RUST_LOG="INFO"
sp_address="tsp1qqgmwp9n5p9ujhq2j6cfqe4jpkyu70jh9rgj0pwt3ndezk2mrlvw6jqew8fhsulewzglfr7g2aa48wyj4n0r7yasa3fm666vda8984ke8tuaf9m89"
```
### Variables d'Environnement Docker
## Changements récents
### v0.1.2 - Configuration externalisée
- **Ajout** : Support de la variable d'environnement `SDK_RELAY_WS_URL` pour les tests
- **Modification** : Remplacement de `localhost` par `0.0.0.0` dans les tests WebSocket
- **Amélioration** : Configuration plus flexible pour les environnements Docker
### Tests
Les tests WebSocket utilisent maintenant `ws://0.0.0.0:8090` au lieu de `ws://localhost:8090` pour une meilleure compatibilité avec les environnements Docker.
## Configuration Docker
```yaml
environment:
- SDK_RELAY_SCAN_TIMEOUT=300
- SDK_RELAY_STARTUP_MODE=async
- SDK_RELAY_WS_URL=ws://0.0.0.0:8090
- RUST_LOG=INFO
volumes:
- ./relay/sdk_relay.conf:/home/bitcoin/.conf:ro
```
## Problèmes Résolus
## Endpoints
### 1. Problème de Build CI
**Problème** : Le CI échouait car sdk_common n'était pas trouvé dans le contexte de build.
- **WebSocket** : `0.0.0.0:8090` - Communication WebSocket
- **Health** : `0.0.0.0:8091` - Vérification de santé
**Solution** : Modification du Dockerfile pour cloner sdk_common depuis la branche dev :
```dockerfile
RUN --mount=type=ssh git clone -b dev ssh://git@git.4nkweb.com/4nk/sdk_common.git /sdk_common
```
## Dépannage
### 2. Problème de Scan Bloquant
**Problème** : Le service sdk_relay se bloquait pendant le scan des blocs, empêchant le démarrage des serveurs WebSocket et de santé.
### Problème de connexion WebSocket
**Solution** :
- Modification du `last_scan` dans `/home/bitcoin/.4nk/default` pour éviter les scans trop longs
- Amélioration des healthchecks dans docker-compose.yml
- Ajout de variables d'environnement pour le timeout et le mode async
Si le service n'écoute pas sur `0.0.0.0:8090`, vérifiez :
## Healthcheck
```yaml
healthcheck:
test: ["CMD", "sh", "-c", "curl -f http://localhost:8091/ | grep -q '\"status\":\"ok\"'"]
interval: 15s
timeout: 10s
retries: 5
start_period: 60s
```
## Ports
- **8090** : WebSocket server
- **8091** : Health server
## Dépendances
- **blindbit-oracle** : Service oracle pour les données blockchain
- **bitcoin-signet** : Nœud Bitcoin Signet
## Historique des Modifications
- 20/09/2025 : Correction du build CI avec clonage de sdk_common
- 20/09/2025 : Résolution du problème de scan bloquant
- 20/09/2025 : Amélioration des healthchecks et de la séquence de démarrage
1. La configuration `ws_url` dans le fichier de configuration
2. Les variables d'environnement Docker
3. Les logs du service pour les erreurs de binding

View File

@ -9,7 +9,7 @@ async fn ws_connects_on_localhost_8090() {
// Test conditionnel: désactivé par défaut pour éviter les échecs en l'absence de serveur WS local
return;
}
let url = std::env::var("SDK_RELAY_WS_URL").unwrap_or_else(|_| "ws://localhost:8090".to_string());
let url = std::env::var("SDK_RELAY_WS_URL").unwrap_or_else(|_| "ws://0.0.0.0:8090".to_string());
let connect_fut = connect_async(url);
let res = timeout(Duration::from_secs(3), connect_fut).await;
match res {