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
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:
parent
73f3dec22c
commit
9fc4ae99c9
@ -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é
|
||||
|
@ -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
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user