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]
|
## [Unreleased]
|
||||||
### Ajouts
|
### 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
|
- Documentation: README modernisé, `docs/ANALYSE.md` et `docs/VALIDATION.md` vérifiés
|
||||||
- Open source: LICENSE (MIT), CONTRIBUTING, Code of Conduct
|
- Open source: LICENSE (MIT), CONTRIBUTING, Code of Conduct
|
||||||
- Tests: script `tests/health_check.sh`, test WS conservé
|
- Tests: script `tests/health_check.sh`, test WS conservé
|
||||||
|
@ -1,63 +1,67 @@
|
|||||||
# Configuration SDK Relay
|
# Configuration SDK Relay
|
||||||
|
|
||||||
## Vue d'ensemble
|
## Variables d'environnement
|
||||||
Le SDK Relay est un service qui fait le pont entre les clients et les services blockchain, notamment blindbit-oracle.
|
|
||||||
|
|
||||||
## Configuration Actuelle
|
Le service `sdk_relay` peut être configuré via les variables d'environnement suivantes :
|
||||||
|
|
||||||
### Fichier de Configuration
|
### Variables principales
|
||||||
- **Fichier** : `sdk_relay.conf`
|
|
||||||
- **Localisation** : `/home/debian/lecoffre_node/relay/sdk_relay.conf`
|
- **`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
|
```ini
|
||||||
|
core_url="http://bitcoin:38332"
|
||||||
|
ws_url="0.0.0.0:8090"
|
||||||
|
wallet_name="default"
|
||||||
|
network="signet"
|
||||||
blindbit_url="http://blindbit-oracle:8000"
|
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
|
```yaml
|
||||||
environment:
|
environment:
|
||||||
- SDK_RELAY_SCAN_TIMEOUT=300
|
- SDK_RELAY_WS_URL=ws://0.0.0.0:8090
|
||||||
- SDK_RELAY_STARTUP_MODE=async
|
- RUST_LOG=INFO
|
||||||
|
volumes:
|
||||||
|
- ./relay/sdk_relay.conf:/home/bitcoin/.conf:ro
|
||||||
```
|
```
|
||||||
|
|
||||||
## Problèmes Résolus
|
## Endpoints
|
||||||
|
|
||||||
### 1. Problème de Build CI
|
- **WebSocket** : `0.0.0.0:8090` - Communication WebSocket
|
||||||
**Problème** : Le CI échouait car sdk_common n'était pas trouvé dans le contexte de build.
|
- **Health** : `0.0.0.0:8091` - Vérification de santé
|
||||||
|
|
||||||
**Solution** : Modification du Dockerfile pour cloner sdk_common depuis la branche dev :
|
## Dépannage
|
||||||
```dockerfile
|
|
||||||
RUN --mount=type=ssh git clone -b dev ssh://git@git.4nkweb.com/4nk/sdk_common.git /sdk_common
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Problème de Scan Bloquant
|
### Problème de connexion WebSocket
|
||||||
**Problème** : Le service sdk_relay se bloquait pendant le scan des blocs, empêchant le démarrage des serveurs WebSocket et de santé.
|
|
||||||
|
|
||||||
**Solution** :
|
Si le service n'écoute pas sur `0.0.0.0:8090`, vérifiez :
|
||||||
- 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
|
|
||||||
|
|
||||||
## Healthcheck
|
1. La configuration `ws_url` dans le fichier de configuration
|
||||||
```yaml
|
2. Les variables d'environnement Docker
|
||||||
healthcheck:
|
3. Les logs du service pour les erreurs de binding
|
||||||
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
|
|
@ -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
|
// Test conditionnel: désactivé par défaut pour éviter les échecs en l'absence de serveur WS local
|
||||||
return;
|
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 connect_fut = connect_async(url);
|
||||||
let res = timeout(Duration::from_secs(3), connect_fut).await;
|
let res = timeout(Duration::from_secs(3), connect_fut).await;
|
||||||
match res {
|
match res {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user