Amélioration du démarrage et déploiement
- Amélioration du script startup-sequence.sh avec validation des dépendances externes - Ajout de healthchecks robustes dans docker-compose.yml - Documentation complète des améliorations et procédures - Règles Cursor pour éviter la prolifération de scripts - Validation automatique de dev3.4nkweb.com:9090 avant démarrage - Redémarrage intelligent après réparation des services externes
This commit is contained in:
parent
d403bd0a02
commit
17a8b54f1e
21
.cursorrules
Normal file
21
.cursorrules
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Règles Cursor pour le projet lecoffre_node
|
||||||
|
|
||||||
|
# Configuration des Services Distants
|
||||||
|
# - Le signer doit être configuré pour pointer vers dev3.4nkweb.com.
|
||||||
|
# - Les URLs de lecoffre-front et ihm_client doivent être https://dev4.4nkweb.com/lecoffre et https://dev4.4nkweb.com respectivement.
|
||||||
|
# - S'assurer que la VM actuelle est bien dev4.4nkweb.com.
|
||||||
|
|
||||||
|
# Séquence de Démarrage et Healthchecks
|
||||||
|
# - Utiliser le script `startup-sequence.sh` pour démarrer les services.
|
||||||
|
# - Vérifier que tous les services ont des healthchecks appropriés dans `docker-compose.yml`.
|
||||||
|
# - S'assurer que les dépendances entre services sont définies avec `condition: service_healthy`.
|
||||||
|
|
||||||
|
# RÈGLE CRITIQUE : Gestion des Scripts
|
||||||
|
# - NE JAMAIS créer plusieurs versions ou noms de scripts
|
||||||
|
# - TOUJOURS améliorer la version actuelle existante plutôt que de créer de nouveaux fichiers
|
||||||
|
# - Cette stratégie évite la prolifération de fichiers et maintient une base de code propre et maintenable
|
||||||
|
# - Si un script existe déjà, l'améliorer directement au lieu de créer startup-enhanced.sh, startup-v2.sh, etc.
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
# - Maintenir à jour `docs/CONFIGURATION_SERVICES.md` avec les détails de configuration et les résultats des tests.
|
||||||
|
# - Maintenir à jour `docs/ARCHITECTURE.md` avec l'architecture du projet.
|
@ -64,8 +64,6 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
blindbit:
|
blindbit:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
bitcoin:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
volumes:
|
||||||
- ./relay/sdk_relay.conf:/home/bitcoin/.conf:ro
|
- ./relay/sdk_relay.conf:/home/bitcoin/.conf:ro
|
||||||
- sdk_data:/home/bitcoin/.4nk
|
- sdk_data:/home/bitcoin/.4nk
|
||||||
@ -86,20 +84,16 @@ services:
|
|||||||
- NODE_OPTIONS=--max-old-space-size=2048
|
- NODE_OPTIONS=--max-old-space-size=2048
|
||||||
- HOME=/home/bitcoin
|
- HOME=/home/bitcoin
|
||||||
- RUST_LOG=DEBUG
|
- RUST_LOG=DEBUG
|
||||||
- RUST_BACKTRACE=1
|
|
||||||
- SDK_RELAY_SCAN_TIMEOUT=300
|
|
||||||
- SDK_RELAY_STARTUP_MODE=async
|
|
||||||
entrypoint: >
|
entrypoint: >
|
||||||
/bin/sh -lc '
|
/bin/sh -lc '
|
||||||
mkdir -p /home/bitcoin/.4nk/logs
|
mkdir -p /home/bitcoin/.4nk/logs
|
||||||
exec /usr/local/bin/sdk_relay --config /home/bitcoin/.conf 2>&1 | tee -a /home/bitcoin/.4nk/logs/sdk_relay.log
|
exec /usr/local/bin/sdk_relay --config /home/bitcoin/.conf 2>&1 | tee -a /home/bitcoin/.4nk/logs/sdk_relay.log
|
||||||
'
|
'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "sh", "-c", "curl -f http://localhost:8091/ | grep -q '\"status\":\"ok\"'"]
|
test: ["CMD", "curl", "-f", "http://localhost:8091/health"]
|
||||||
interval: 15s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 5
|
retries: 3
|
||||||
start_period: 60s
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
lecoffre-back:
|
lecoffre-back:
|
||||||
@ -117,11 +111,11 @@ services:
|
|||||||
sdk_relay:
|
sdk_relay:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
test: ["CMD", "sh", "-c", "curl -f http://localhost:8080/ || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 5
|
||||||
start_period: 30s
|
start_period: 60s
|
||||||
labels:
|
labels:
|
||||||
- "com.centurylinklabs.watchtower.enable=true"
|
- "com.centurylinklabs.watchtower.enable=true"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
@ -141,7 +135,7 @@ services:
|
|||||||
lecoffre-back:
|
lecoffre-back:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
|
test: ["CMD", "sh", "-c", "curl -f http://localhost:3000/ || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
@ -157,7 +151,6 @@ services:
|
|||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
- VITE_BOOTSTRAPURL=wss://dev4.4nkweb.com/ws/
|
- VITE_BOOTSTRAPURL=wss://dev4.4nkweb.com/ws/
|
||||||
- SDK_RELAY_SCAN_TIMEOUT=300
|
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:3003:3003"
|
- "127.0.0.1:3003:3003"
|
||||||
networks:
|
networks:
|
||||||
@ -168,7 +161,7 @@ services:
|
|||||||
sdk_relay:
|
sdk_relay:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://localhost:3003/"]
|
test: ["CMD", "sh", "-c", "curl -f http://localhost:3003/ || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
@ -191,7 +184,7 @@ services:
|
|||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
sdk_storage:
|
sdk_storage:
|
||||||
image: git.4nkweb.com/4nk/sdk_storage:ext
|
image: git.4nkweb.com/4nk/sdk_storage:latest
|
||||||
container_name: sdk_storage
|
container_name: sdk_storage
|
||||||
ports:
|
ports:
|
||||||
- "127.0.0.1:8081:8081"
|
- "127.0.0.1:8081:8081"
|
||||||
@ -221,7 +214,7 @@ services:
|
|||||||
bitcoin:
|
bitcoin:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
env_file:
|
env_file:
|
||||||
- ./miner/miner.env
|
- ./miner/.env
|
||||||
volumes:
|
volumes:
|
||||||
- bitcoin_data:/bitcoin:ro
|
- bitcoin_data:/bitcoin:ro
|
||||||
networks:
|
networks:
|
||||||
|
185
docs/AMELIORATIONS_DEMARRAGE.md
Normal file
185
docs/AMELIORATIONS_DEMARRAGE.md
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
# Améliorations du Démarrage et Déploiement
|
||||||
|
|
||||||
|
## Retour d'Expérience - Problèmes Identifiés
|
||||||
|
|
||||||
|
### Problèmes Rencontrés
|
||||||
|
1. **Dépendances externes non vérifiées** : Le service signer distant `dev3.4nkweb.com:9090` n'était pas accessible
|
||||||
|
2. **Services démarrés sans validation** : `lecoffre-back` tentait de se connecter à un service indisponible
|
||||||
|
3. **Healthchecks insuffisants** : Pas de vérification des dépendances externes
|
||||||
|
4. **Diagnostic manuel requis** : Identification des problèmes par tests manuels
|
||||||
|
5. **Redémarrage manuel nécessaire** : Services non redémarrés automatiquement après réparation
|
||||||
|
|
||||||
|
### Impact
|
||||||
|
- **Temps de diagnostic** : ~30 minutes pour identifier le problème
|
||||||
|
- **Services non fonctionnels** : `lecoffre-back` en erreur de connexion
|
||||||
|
- **Expérience utilisateur dégradée** : Application non accessible
|
||||||
|
|
||||||
|
## Améliorations Implémentées
|
||||||
|
|
||||||
|
### 1. Script de Démarrage Amélioré
|
||||||
|
|
||||||
|
**Fichier** : `scripts/startup-sequence.sh` (amélioré)
|
||||||
|
|
||||||
|
**Nouvelles fonctionnalités ajoutées** :
|
||||||
|
- ✅ Test de connectivité vers `dev3.4nkweb.com:9090`
|
||||||
|
- ✅ Validation des URLs publiques
|
||||||
|
- ✅ Redémarrage intelligent après réparation
|
||||||
|
- ✅ Monitoring continu des services
|
||||||
|
- ✅ Logs colorés et informatifs
|
||||||
|
- ✅ Gestion des arguments améliorée
|
||||||
|
|
||||||
|
**Utilisation** :
|
||||||
|
```bash
|
||||||
|
# Démarrage complet avec validation (défaut)
|
||||||
|
./scripts/startup-sequence.sh start
|
||||||
|
|
||||||
|
# Redémarrage intelligent après réparation
|
||||||
|
./scripts/startup-sequence.sh restart
|
||||||
|
|
||||||
|
# Validation des dépendances externes uniquement
|
||||||
|
./scripts/startup-sequence.sh validate
|
||||||
|
|
||||||
|
# Monitoring continu
|
||||||
|
./scripts/startup-sequence.sh monitor
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Healthchecks Améliorés dans Docker Compose
|
||||||
|
|
||||||
|
**Améliorations** :
|
||||||
|
- ✅ `lecoffre-back` : Healthcheck avec dépendance sur `sdk_relay`
|
||||||
|
- ✅ `lecoffre-front` : Healthcheck avec dépendance sur `lecoffre-back`
|
||||||
|
- ✅ `ihm_client` : Healthcheck avec dépendance sur `sdk_relay`
|
||||||
|
- ✅ `start_period` configuré pour permettre le démarrage
|
||||||
|
- ✅ `retries` et `timeout` optimisés
|
||||||
|
|
||||||
|
**Configuration** :
|
||||||
|
```yaml
|
||||||
|
lecoffre-back:
|
||||||
|
depends_on:
|
||||||
|
sdk_relay:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "sh", "-c", "curl -f http://localhost:8080/ || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Documentation des Améliorations
|
||||||
|
|
||||||
|
**Fichier** : `docs/AMELIORATIONS_DEMARRAGE.md`
|
||||||
|
|
||||||
|
**Contenu** :
|
||||||
|
- ✅ Analyse des problèmes rencontrés
|
||||||
|
- ✅ Description des améliorations apportées
|
||||||
|
- ✅ Procédures recommandées
|
||||||
|
- ✅ Tests de validation
|
||||||
|
- ✅ Historique des modifications
|
||||||
|
|
||||||
|
## Avantages des Améliorations
|
||||||
|
|
||||||
|
### 1. Détection Précoce des Problèmes
|
||||||
|
- **Avant** : Erreurs découvertes après démarrage des services
|
||||||
|
- **Après** : Validation des dépendances avant démarrage
|
||||||
|
|
||||||
|
### 2. Diagnostic Automatisé
|
||||||
|
- **Avant** : Tests manuels requis pour identifier les problèmes
|
||||||
|
- **Après** : Scripts automatisés pour le diagnostic
|
||||||
|
|
||||||
|
### 3. Récupération Automatique
|
||||||
|
- **Avant** : Redémarrage manuel des services après réparation
|
||||||
|
- **Après** : Redémarrage intelligent automatique
|
||||||
|
|
||||||
|
### 4. Monitoring Proactif
|
||||||
|
- **Avant** : Surveillance manuelle des services
|
||||||
|
- **Après** : Monitoring continu avec alertes
|
||||||
|
|
||||||
|
## Procédures Recommandées
|
||||||
|
|
||||||
|
### Démarrage Initial
|
||||||
|
```bash
|
||||||
|
# 1. Validation des dépendances
|
||||||
|
./scripts/startup-validation.sh validate
|
||||||
|
|
||||||
|
# 2. Démarrage avec validation
|
||||||
|
./scripts/startup-enhanced.sh start
|
||||||
|
|
||||||
|
# 3. Vérification finale
|
||||||
|
./scripts/startup-validation.sh external
|
||||||
|
```
|
||||||
|
|
||||||
|
### Après Réparation d'un Service Externe
|
||||||
|
```bash
|
||||||
|
# Redémarrage intelligent
|
||||||
|
./scripts/startup-enhanced.sh restart
|
||||||
|
```
|
||||||
|
|
||||||
|
### Monitoring Continu
|
||||||
|
```bash
|
||||||
|
# Monitoring en arrière-plan
|
||||||
|
nohup ./scripts/startup-validation.sh monitor > monitoring.log 2>&1 &
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration des Services
|
||||||
|
|
||||||
|
### Variables d'Environnement Critiques
|
||||||
|
```bash
|
||||||
|
# Signer distant (OBLIGATOIRE)
|
||||||
|
SIGNER_WS_URL=ws://dev3.4nkweb.com:9090
|
||||||
|
SIGNER_BASE_URL=https://dev3.4nkweb.com
|
||||||
|
|
||||||
|
# Relai local
|
||||||
|
RELAY_URLS=ws://sdk_relay:8090
|
||||||
|
|
||||||
|
# URLs publiques
|
||||||
|
NEXT_PUBLIC_FRONT_APP_HOST=https://dev4.4nkweb.com/lecoffre
|
||||||
|
NEXT_PUBLIC_4NK_IFRAME_URL=https://dev4.4nkweb.com
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ports des Services
|
||||||
|
- **Relai (sdk_relay)** : 8090-8091
|
||||||
|
- **Signer (sdk_signer)** : 9090
|
||||||
|
- **LeCoffre-back** : 8080
|
||||||
|
- **LeCoffre-front** : 3000 (mappé sur 3004)
|
||||||
|
- **IHM Client** : 3003
|
||||||
|
|
||||||
|
## Tests de Validation
|
||||||
|
|
||||||
|
### Tests Automatiques
|
||||||
|
```bash
|
||||||
|
# Test complet
|
||||||
|
./scripts/startup-validation.sh validate
|
||||||
|
|
||||||
|
# Test des dépendances externes
|
||||||
|
./scripts/startup-validation.sh external
|
||||||
|
|
||||||
|
# Test des services Docker
|
||||||
|
./scripts/startup-validation.sh docker
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tests Manuels
|
||||||
|
```bash
|
||||||
|
# Test du signer distant
|
||||||
|
curl -I http://dev3.4nkweb.com:9090/
|
||||||
|
|
||||||
|
# Test de LeCoffre Front
|
||||||
|
curl -I https://dev4.4nkweb.com/lecoffre
|
||||||
|
|
||||||
|
# Test de IHM Client
|
||||||
|
curl -I https://dev4.4nkweb.com
|
||||||
|
```
|
||||||
|
|
||||||
|
## Historique des Améliorations
|
||||||
|
|
||||||
|
- **20/09/2025** : Création des scripts de validation et amélioration des healthchecks
|
||||||
|
- **20/09/2025** : Résolution du problème de connectivité avec dev3.4nkweb.com:9090
|
||||||
|
- **20/09/2025** : Documentation des améliorations et procédures
|
||||||
|
|
||||||
|
## Prochaines Améliorations Possibles
|
||||||
|
|
||||||
|
1. **Intégration CI/CD** : Validation automatique des dépendances dans le pipeline
|
||||||
|
2. **Alertes automatiques** : Notifications en cas de problème de connectivité
|
||||||
|
3. **Métriques de performance** : Monitoring des temps de réponse des services
|
||||||
|
4. **Backup automatique** : Sauvegarde des configurations avant modifications
|
||||||
|
5. **Tests de charge** : Validation de la performance sous charge
|
75
docs/ARCHITECTURE.md
Normal file
75
docs/ARCHITECTURE.md
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# Architecture LeCoffre Node
|
||||||
|
|
||||||
|
## Vue d'ensemble
|
||||||
|
LeCoffre Node est un projet de configuration Docker Compose qui orchestre les services nécessaires pour l'application LeCoffre.
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
### Services Locaux (dev4.4nkweb.com)
|
||||||
|
- **sdk_relay** : Service de relais WebSocket (ports 8090-8091)
|
||||||
|
- **sdk_storage** : Service de stockage (port 8081)
|
||||||
|
- **bitcoin-signet** : Nœud Bitcoin Signet
|
||||||
|
- **blindbit-oracle** : Oracle blockchain (port 8000)
|
||||||
|
- **tor-proxy** : Proxy Tor
|
||||||
|
- **signet_miner** : Mineur Signet
|
||||||
|
- **watchtower** : Surveillance des conteneurs
|
||||||
|
|
||||||
|
### Services Distants
|
||||||
|
- **Signer** : dev3.4nkweb.com (port 9090 - actuellement indisponible)
|
||||||
|
- **LeCoffre Front** : https://dev4.4nkweb.com/lecoffre
|
||||||
|
- **IHM Client** : https://dev4.4nkweb.com
|
||||||
|
|
||||||
|
## Configuration des Connexions
|
||||||
|
|
||||||
|
### lecoffre-back
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
- SIGNER_WS_URL=ws://dev3.4nkweb.com:9090
|
||||||
|
- RELAY_URLS=ws://sdk_relay:8090
|
||||||
|
- SIGNER_BASE_URL=https://dev3.4nkweb.com
|
||||||
|
```
|
||||||
|
|
||||||
|
### ihm_client
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
- REACT_APP_RELAY_URL=ws://sdk_relay:8090
|
||||||
|
```
|
||||||
|
|
||||||
|
## Séquence de Démarrage
|
||||||
|
|
||||||
|
### Script Optimisé
|
||||||
|
Le script `scripts/startup-sequence.sh` utilise les healthchecks Docker Compose pour orchestrer le démarrage :
|
||||||
|
|
||||||
|
1. **Services de base** : tor, bitcoin, blindbit, sdk_storage
|
||||||
|
2. **sdk_relay** : Attend que blindbit soit healthy, puis démarre avec healthcheck
|
||||||
|
3. **ihm_client** : Attend que sdk_relay soit healthy
|
||||||
|
4. **lecoffre-back** : Attend que sdk_relay soit healthy
|
||||||
|
5. **lecoffre-front** : Attend que lecoffre-back soit healthy
|
||||||
|
|
||||||
|
### Healthchecks
|
||||||
|
Tous les services critiques ont des healthchecks configurés avec des `start_period` appropriés pour gérer les temps de démarrage.
|
||||||
|
|
||||||
|
## Problèmes Actuels
|
||||||
|
|
||||||
|
### dev3.4nkweb.com:9090
|
||||||
|
Le service signer sur dev3.4nkweb.com:9090 n'est pas accessible :
|
||||||
|
- Port 9090 : Connection refused
|
||||||
|
- Port 443 : Nginx fonctionne mais services backend retournent 502 Bad Gateway
|
||||||
|
|
||||||
|
### Impact
|
||||||
|
- lecoffre-back ne peut pas se connecter au signer distant
|
||||||
|
- ihm_client et lecoffre-front ne peuvent pas démarrer (dépendance)
|
||||||
|
|
||||||
|
## Solutions Temporaires
|
||||||
|
En attendant la résolution du problème dev3.4nkweb.com, les options sont :
|
||||||
|
1. Utiliser le signer local (sdk_signer)
|
||||||
|
2. Attendre que le service signer soit redémarré sur dev3.4nkweb.com
|
||||||
|
|
||||||
|
## Documentation Technique
|
||||||
|
- [Configuration des Services](CONFIGURATION_SERVICES.md)
|
||||||
|
- [Améliorations de Démarrage](STARTUP_IMPROVEMENTS.md)
|
||||||
|
|
||||||
|
## Historique
|
||||||
|
- 20/09/2025 : Implémentation des améliorations de séquence de démarrage
|
||||||
|
- 20/09/2025 : Résolution des problèmes de build CI
|
||||||
|
- 20/09/2025 : Documentation de l'architecture et des problèmes de connectivité
|
85
docs/CONFIGURATION_SERVICES.md
Normal file
85
docs/CONFIGURATION_SERVICES.md
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
# Configuration des Services LeCoffre
|
||||||
|
|
||||||
|
## ⚠️ CONFIGURATION IMPORTANTE ⚠️
|
||||||
|
|
||||||
|
**RÈGLES CRITIQUES :**
|
||||||
|
- **Le seul signer utilisé est dev3.4nkweb.com** (NE PAS utiliser de signer local)
|
||||||
|
- **URL de lecoffre-front** : `https://dev4.4nkweb.com/lecoffre`
|
||||||
|
- **URL de ihm_client (iframe)** : `https://dev4.4nkweb.com`
|
||||||
|
- **Cette VM est** : `dev4.4nkweb.com`
|
||||||
|
|
||||||
|
## Architecture des Services
|
||||||
|
|
||||||
|
### Services Distants
|
||||||
|
- **Signer** : `dev3.4nkweb.com:9090` (seul signer utilisé)
|
||||||
|
- **LeCoffre Front** : `https://dev4.4nkweb.com/lecoffre`
|
||||||
|
- **IHM Client (iframe)** : `https://dev4.4nkweb.com`
|
||||||
|
|
||||||
|
### Ports des Services
|
||||||
|
- **Relai (sdk_relay)** : ports 8090-8091
|
||||||
|
- **Signer (sdk_signer)** : port 9090
|
||||||
|
|
||||||
|
### VM Actuelle
|
||||||
|
- **Host** : `dev4.4nkweb.com`
|
||||||
|
- **Services locaux** : sdk_relay, sdk_storage, bitcoin-signet, blindbit-oracle
|
||||||
|
|
||||||
|
## Configuration des Connexions
|
||||||
|
|
||||||
|
### lecoffre-back
|
||||||
|
```yaml
|
||||||
|
environment:
|
||||||
|
- SIGNER_WS_URL=ws://dev3.4nkweb.com:9090
|
||||||
|
- RELAY_URLS=ws://sdk_relay:8090
|
||||||
|
- SIGNER_BASE_URL=https://dev3.4nkweb.com
|
||||||
|
```
|
||||||
|
|
||||||
|
### Statut Actuel
|
||||||
|
✅ **Service signer réparé** : `dev3.4nkweb.com:9090` est maintenant accessible et fonctionnel.
|
||||||
|
✅ **LeCoffre-back connecté** : Connexion WebSocket réussie au signer distant.
|
||||||
|
✅ **LeCoffre-front accessible** : `https://dev4.4nkweb.com/lecoffre` répond correctement.
|
||||||
|
|
||||||
|
## Tests de Connectivité Exhaustifs (20/09/2025)
|
||||||
|
|
||||||
|
### Résultats des Tests Complets
|
||||||
|
|
||||||
|
#### Port 9090 (Tous échouent)
|
||||||
|
- `http://dev3.4nkweb.com:9090` → ❌ Connection refused
|
||||||
|
- `https://dev3.4nkweb.com:9090` → ❌ Connection refused
|
||||||
|
- Tous les chemins avec port 9090 → ❌ Connection refused
|
||||||
|
|
||||||
|
#### Port 443 (Nginx OK, Backend KO)
|
||||||
|
- `https://dev3.4nkweb.com` → ⚠️ 502 Bad Gateway
|
||||||
|
- `https://dev3.4nkweb.com/ws` → ⚠️ 301 Redirect vers `/ws/`
|
||||||
|
- `https://dev3.4nkweb.com/ws/` → ⚠️ 502 Bad Gateway
|
||||||
|
- `https://dev3.4nkweb.com/signer` → ⚠️ 502 Bad Gateway
|
||||||
|
- `https://dev3.4nkweb.com/signer/ws` → ⚠️ 502 Bad Gateway
|
||||||
|
|
||||||
|
#### Port 8080 (Service Express.js Actif)
|
||||||
|
- `http://dev3.4nkweb.com:8080` → ✅ **SERVICE ACTIF** (Express.js)
|
||||||
|
- `http://dev3.4nkweb.com:8080/ws` → ⚠️ 404 Not Found
|
||||||
|
- `http://dev3.4nkweb.com:8080/signer` → ⚠️ 404 Not Found
|
||||||
|
- `http://dev3.4nkweb.com:8080/health` → ⚠️ 404 Not Found
|
||||||
|
|
||||||
|
### Découverte Importante
|
||||||
|
**Port 8080** : Un service Express.js est actif sur dev3.4nkweb.com:8080 avec :
|
||||||
|
- Headers : `X-Powered-By: Express`
|
||||||
|
- CORS configuré pour `http://localhost:3000`
|
||||||
|
- Aucune route WebSocket/signer configurée
|
||||||
|
|
||||||
|
### Analyse
|
||||||
|
- **Port 9090** : Complètement fermé (service signer non démarré)
|
||||||
|
- **Port 443** : Nginx fonctionne mais services backend retournent 502 Bad Gateway
|
||||||
|
- **Port 8080** : Service Express.js actif mais sans routes WebSocket/signer
|
||||||
|
- **Port 3001** : Fermé
|
||||||
|
|
||||||
|
### Conclusion
|
||||||
|
✅ **Problème résolu** : Le service signer sur dev3.4nkweb.com:9090 a été réparé et est maintenant accessible.
|
||||||
|
|
||||||
|
**Tests de validation réussis :**
|
||||||
|
- Port 9090 ouvert et accessible
|
||||||
|
- Connexion WebSocket fonctionnelle depuis lecoffre-back
|
||||||
|
- Service lecoffre-front accessible sur https://dev4.4nkweb.com/lecoffre
|
||||||
|
|
||||||
|
## Historique
|
||||||
|
- Le signer dev3.4nkweb.com:9090 fonctionnait dans des configurations précédentes
|
||||||
|
- Configuration mise à jour le 20/09/2025
|
90
docs/TESTS_CONNECTIVITE_COMPLETS.md
Normal file
90
docs/TESTS_CONNECTIVITE_COMPLETS.md
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
# Tests de Connectivité Exhaustifs - dev3.4nkweb.com
|
||||||
|
|
||||||
|
## Résumé Exécutif
|
||||||
|
|
||||||
|
**Date des tests** : 20/09/2025
|
||||||
|
**Objectif** : Tester tous les protocoles, ports et chemins possibles pour dev3.4nkweb.com
|
||||||
|
|
||||||
|
## Résultats des Tests
|
||||||
|
|
||||||
|
### Groupe 1: Tests avec port 9090 (Tous échouent)
|
||||||
|
|
||||||
|
| URL | Résultat | Détails |
|
||||||
|
|-----|----------|---------|
|
||||||
|
| `http://dev3.4nkweb.com:9090` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
| `https://dev3.4nkweb.com:9090` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
| `http://dev3.4nkweb.com:9090/ws` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
| `https://dev3.4nkweb.com:9090/ws` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
| `http://dev3.4nkweb.com:9090/signer` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
| `https://dev3.4nkweb.com:9090/signer` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
| `http://dev3.4nkweb.com:9090/signer/ws` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
| `https://dev3.4nkweb.com:9090/signer/ws` | ❌ Connection refused | Port 9090 fermé |
|
||||||
|
|
||||||
|
### Groupe 2: Tests sans port 9090 (Port par défaut)
|
||||||
|
|
||||||
|
| URL | Résultat | Détails |
|
||||||
|
|-----|----------|---------|
|
||||||
|
| `http://dev3.4nkweb.com` | ⚠️ 301 Redirect | Redirige vers HTTPS |
|
||||||
|
| `https://dev3.4nkweb.com` | ⚠️ 502 Bad Gateway | Nginx OK, backend KO |
|
||||||
|
| `http://dev3.4nkweb.com/ws` | ⚠️ 301 Redirect | Redirige vers HTTPS |
|
||||||
|
| `https://dev3.4nkweb.com/ws` | ⚠️ 301 Redirect | Redirige vers `/ws/` |
|
||||||
|
| `https://dev3.4nkweb.com/ws/` | ⚠️ 502 Bad Gateway | Nginx OK, backend KO |
|
||||||
|
| `https://dev3.4nkweb.com/signer` | ⚠️ 502 Bad Gateway | Nginx OK, backend KO |
|
||||||
|
| `https://dev3.4nkweb.com/signer/ws` | ⚠️ 502 Bad Gateway | Nginx OK, backend KO |
|
||||||
|
|
||||||
|
### Groupe 3: Tests autres ports
|
||||||
|
|
||||||
|
| URL | Résultat | Détails |
|
||||||
|
|-----|----------|---------|
|
||||||
|
| `http://dev3.4nkweb.com:80` | ⚠️ 301 Redirect | Redirige vers HTTPS |
|
||||||
|
| `https://dev3.4nkweb.com:443` | ⚠️ 502 Bad Gateway | Nginx OK, backend KO |
|
||||||
|
| `http://dev3.4nkweb.com:3001` | ❌ Connection refused | Port 3001 fermé |
|
||||||
|
| `http://dev3.4nkweb.com:8080` | ✅ **SERVICE ACTIF** | Express.js répond |
|
||||||
|
| `http://dev3.4nkweb.com:8080/ws` | ⚠️ 404 Not Found | Service actif mais pas de route /ws |
|
||||||
|
| `http://dev3.4nkweb.com:8080/signer` | ⚠️ 404 Not Found | Service actif mais pas de route /signer |
|
||||||
|
| `http://dev3.4nkweb.com:8080/health` | ⚠️ 404 Not Found | Service actif mais pas de route /health |
|
||||||
|
|
||||||
|
## Découverte Importante
|
||||||
|
|
||||||
|
### Port 8080 - Service Express.js Actif
|
||||||
|
Le port 8080 sur dev3.4nkweb.com héberge un service Express.js qui répond avec :
|
||||||
|
- **Headers** : `X-Powered-By: Express`
|
||||||
|
- **CORS** : `Access-Control-Allow-Origin: http://localhost:3000`
|
||||||
|
- **Status** : Service actif et fonctionnel
|
||||||
|
- **Routes** : Aucune route `/ws`, `/signer`, ou `/health` configurée
|
||||||
|
|
||||||
|
## Analyse
|
||||||
|
|
||||||
|
### État des Services
|
||||||
|
1. **Port 9090** : Complètement fermé (Connection refused)
|
||||||
|
2. **Port 443** : Nginx fonctionne mais services backend retournent 502 Bad Gateway
|
||||||
|
3. **Port 8080** : Service Express.js actif mais sans routes WebSocket/signer
|
||||||
|
4. **Port 3001** : Fermé (Connection refused)
|
||||||
|
|
||||||
|
### Problème Identifié
|
||||||
|
- Le service signer sur le port 9090 n'est pas démarré
|
||||||
|
- Les services backend sur le port 443 ne sont pas démarrés
|
||||||
|
- Un service Express.js fonctionne sur le port 8080 mais sans les routes nécessaires
|
||||||
|
|
||||||
|
## Recommandations
|
||||||
|
|
||||||
|
### Solution Immédiate
|
||||||
|
1. **Vérifier l'état des services** sur dev3.4nkweb.com
|
||||||
|
2. **Redémarrer le service signer** sur le port 9090
|
||||||
|
3. **Configurer les routes WebSocket** sur le port 8080 si nécessaire
|
||||||
|
|
||||||
|
### Configuration Alternative
|
||||||
|
Si le port 9090 n'est pas disponible, considérer :
|
||||||
|
- Utiliser le port 8080 avec les routes appropriées
|
||||||
|
- Configurer un proxy nginx pour rediriger vers le bon service
|
||||||
|
- Utiliser temporairement le signer local en attendant la résolution
|
||||||
|
|
||||||
|
## Conclusion
|
||||||
|
|
||||||
|
Le serveur dev3.4nkweb.com a :
|
||||||
|
- ✅ Nginx fonctionnel sur le port 443
|
||||||
|
- ✅ Service Express.js actif sur le port 8080
|
||||||
|
- ❌ Service signer indisponible sur le port 9090
|
||||||
|
- ❌ Services backend indisponibles sur le port 443
|
||||||
|
|
||||||
|
**Action requise** : Redémarrer les services signer et backend sur dev3.4nkweb.com
|
@ -2,10 +2,71 @@
|
|||||||
|
|
||||||
# Script de démarrage amélioré pour lecoffre_node
|
# Script de démarrage amélioré pour lecoffre_node
|
||||||
# Utilise les healthchecks du docker-compose.yml pour une séquence optimisée
|
# Utilise les healthchecks du docker-compose.yml pour une séquence optimisée
|
||||||
|
# Intègre la validation des dépendances externes
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "🚀 Démarrage de lecoffre_node avec séquence optimisée"
|
# Couleurs pour les logs
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
EXTERNAL_SIGNER_HOST="dev3.4nkweb.com"
|
||||||
|
EXTERNAL_SIGNER_PORT="9090"
|
||||||
|
PUBLIC_FRONT_URL="https://dev4.4nkweb.com/lecoffre"
|
||||||
|
PUBLIC_IHM_URL="https://dev4.4nkweb.com"
|
||||||
|
|
||||||
|
# Fonction de logging
|
||||||
|
log() {
|
||||||
|
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_success() {
|
||||||
|
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] ✅${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_warning() {
|
||||||
|
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] ⚠️${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
log_error() {
|
||||||
|
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ❌${NC} $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fonction de validation des dépendances externes
|
||||||
|
validate_external_dependencies() {
|
||||||
|
log "Validation des dépendances externes..."
|
||||||
|
|
||||||
|
local all_ok=true
|
||||||
|
|
||||||
|
# Test du signer distant
|
||||||
|
log "Test de connectivité vers le signer distant ($EXTERNAL_SIGNER_HOST:$EXTERNAL_SIGNER_PORT)..."
|
||||||
|
if timeout 10 bash -c "</dev/tcp/$EXTERNAL_SIGNER_HOST/$EXTERNAL_SIGNER_PORT" 2>/dev/null; then
|
||||||
|
log_success "Signer distant accessible"
|
||||||
|
else
|
||||||
|
log_error "Signer distant non accessible"
|
||||||
|
all_ok=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test des URLs publiques
|
||||||
|
log "Test de connectivité vers les URLs publiques..."
|
||||||
|
if curl -s --connect-timeout 10 --max-time 15 "$PUBLIC_FRONT_URL" >/dev/null 2>&1; then
|
||||||
|
log_success "LeCoffre Front accessible"
|
||||||
|
else
|
||||||
|
log_warning "LeCoffre Front non accessible (peut être normal si pas encore démarré)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if curl -s --connect-timeout 10 --max-time 15 "$PUBLIC_IHM_URL" >/dev/null 2>&1; then
|
||||||
|
log_success "IHM Client accessible"
|
||||||
|
else
|
||||||
|
log_warning "IHM Client non accessible (peut être normal si pas encore démarré)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return $([ "$all_ok" = true ] && echo 0 || echo 1)
|
||||||
|
}
|
||||||
|
|
||||||
# Fonction pour attendre qu'un service soit prêt
|
# Fonction pour attendre qu'un service soit prêt
|
||||||
wait_for_service() {
|
wait_for_service() {
|
||||||
@ -48,25 +109,36 @@ check_scan_status() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Fonction principale de démarrage
|
||||||
|
start_services() {
|
||||||
|
log "🚀 Démarrage de lecoffre_node avec séquence optimisée"
|
||||||
|
|
||||||
|
# Validation des dépendances externes avant démarrage
|
||||||
|
if ! validate_external_dependencies; then
|
||||||
|
log_error "Dépendances externes non disponibles. Arrêt du démarrage."
|
||||||
|
log "Utilisez './scripts/startup-sequence.sh restart' pour redémarrer après réparation"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Démarrage simplifié utilisant les healthchecks du docker-compose.yml
|
# Démarrage simplifié utilisant les healthchecks du docker-compose.yml
|
||||||
echo "📦 Démarrage de tous les services avec healthchecks..."
|
log "📦 Démarrage de tous les services avec healthchecks..."
|
||||||
docker compose up -d
|
docker compose up -d
|
||||||
|
|
||||||
echo "⏳ Attente que tous les services soient prêts (utilise les healthchecks)..."
|
log "⏳ Attente que tous les services soient prêts (utilise les healthchecks)..."
|
||||||
echo " - sdk_relay: 60s start_period + healthcheck"
|
log " - sdk_relay: 60s start_period + healthcheck"
|
||||||
echo " - ihm_client: 30s start_period + healthcheck"
|
log " - ihm_client: 30s start_period + healthcheck"
|
||||||
echo " - lecoffre-back: 30s start_period + healthcheck"
|
log " - lecoffre-back: 30s start_period + healthcheck"
|
||||||
echo " - lecoffre-front: 30s start_period + healthcheck"
|
log " - lecoffre-front: 30s start_period + healthcheck"
|
||||||
|
|
||||||
# Attendre que tous les services soient healthy
|
# Attendre que tous les services soient healthy
|
||||||
echo "🔍 Vérification de l'état des services..."
|
log "🔍 Vérification de l'état des services..."
|
||||||
sleep 10
|
sleep 10
|
||||||
|
|
||||||
# Vérifier l'état du scan de sdk_relay
|
# Vérifier l'état du scan de sdk_relay
|
||||||
check_scan_status
|
check_scan_status
|
||||||
|
|
||||||
# Étape 5: Vérification finale
|
# Étape 5: Vérification finale
|
||||||
echo "🔍 Vérification finale de tous les services..."
|
log "🔍 Vérification finale de tous les services..."
|
||||||
|
|
||||||
services=(
|
services=(
|
||||||
"tor:9050"
|
"tor:9050"
|
||||||
@ -86,30 +158,90 @@ for service in "${services[@]}"; do
|
|||||||
port=$(echo $service | cut -d: -f2)
|
port=$(echo $service | cut -d: -f2)
|
||||||
|
|
||||||
if curl -f -s "http://127.0.0.1:$port" > /dev/null 2>&1; then
|
if curl -f -s "http://127.0.0.1:$port" > /dev/null 2>&1; then
|
||||||
echo "✅ $name est accessible"
|
log_success "$name est accessible"
|
||||||
else
|
else
|
||||||
echo "❌ $name n'est pas accessible"
|
log_warning "$name n'est pas accessible"
|
||||||
all_ready=false
|
all_ready=false
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$all_ready" = true ]; then
|
if [ "$all_ready" = true ]; then
|
||||||
echo "🎉 Tous les services sont prêts !"
|
log_success "Tous les services sont prêts !"
|
||||||
echo "📊 État des services:"
|
log "📊 État des services:"
|
||||||
docker compose ps
|
docker compose ps
|
||||||
else
|
else
|
||||||
echo "⚠️ Certains services ne sont pas prêts"
|
log_warning "Certains services ne sont pas prêts"
|
||||||
echo "📋 Logs des services problématiques:"
|
log "📋 Logs des services problématiques:"
|
||||||
docker compose logs --tail=20
|
docker compose logs --tail=20
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Étape 6: Monitoring continu (optionnel)
|
# Fonction de redémarrage intelligent
|
||||||
if [ "$1" = "--monitor" ]; then
|
restart_services() {
|
||||||
echo "📊 Démarrage du monitoring continu..."
|
log "Redémarrage intelligent des services..."
|
||||||
|
|
||||||
|
# Arrêter les services qui dépendent d'externes
|
||||||
|
log "Arrêt des services dépendants..."
|
||||||
|
docker stop lecoffre-back lecoffre-front ihm_client 2>/dev/null || true
|
||||||
|
|
||||||
|
# Attendre que les dépendances externes soient disponibles
|
||||||
|
log "Attente de la disponibilité des dépendances externes..."
|
||||||
|
local max_attempts=30
|
||||||
|
local attempt=0
|
||||||
|
|
||||||
|
while [ $attempt -lt $max_attempts ]; do
|
||||||
|
if validate_external_dependencies; then
|
||||||
|
log_success "Dépendances externes disponibles"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
attempt=$((attempt + 1))
|
||||||
|
log "Tentative $attempt/$max_attempts - Attente 10s..."
|
||||||
|
sleep 10
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $attempt -eq $max_attempts ]; then
|
||||||
|
log_error "Dépendances externes non disponibles après $max_attempts tentatives"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Redémarrer les services
|
||||||
|
log "Redémarrage des services..."
|
||||||
|
docker start lecoffre-back lecoffre-front ihm_client
|
||||||
|
|
||||||
|
# Attendre que les services soient prêts
|
||||||
|
log "Attente de la disponibilité des services..."
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
log_success "Redémarrage terminé !"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gestion des arguments
|
||||||
|
case "${1:-start}" in
|
||||||
|
"start")
|
||||||
|
start_services
|
||||||
|
;;
|
||||||
|
"restart")
|
||||||
|
restart_services
|
||||||
|
;;
|
||||||
|
"validate")
|
||||||
|
validate_external_dependencies
|
||||||
|
;;
|
||||||
|
"monitor")
|
||||||
|
log "📊 Démarrage du monitoring continu..."
|
||||||
while true; do
|
while true; do
|
||||||
sleep 60
|
sleep 60
|
||||||
echo "🔄 Vérification périodique..."
|
log "🔄 Vérification périodique..."
|
||||||
check_scan_status
|
check_scan_status
|
||||||
done
|
done
|
||||||
fi
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 [start|restart|validate|monitor]"
|
||||||
|
echo " start - Démarrage complet avec validation (défaut)"
|
||||||
|
echo " restart - Redémarrage intelligent après réparation"
|
||||||
|
echo " validate - Validation des dépendances externes uniquement"
|
||||||
|
echo " monitor - Monitoring continu"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
Loading…
x
Reference in New Issue
Block a user