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:
|
||||
blindbit:
|
||||
condition: service_healthy
|
||||
bitcoin:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- ./relay/sdk_relay.conf:/home/bitcoin/.conf:ro
|
||||
- sdk_data:/home/bitcoin/.4nk
|
||||
@ -83,23 +81,19 @@ services:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
environment:
|
||||
- NODE_OPTIONS=--max-old-space-size=2048
|
||||
- NODE_OPTIONS=--max-old-space-size=2048
|
||||
- HOME=/home/bitcoin
|
||||
- RUST_LOG=DEBUG
|
||||
- RUST_BACKTRACE=1
|
||||
- SDK_RELAY_SCAN_TIMEOUT=300
|
||||
- SDK_RELAY_STARTUP_MODE=async
|
||||
entrypoint: >
|
||||
/bin/sh -lc '
|
||||
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
|
||||
'
|
||||
healthcheck:
|
||||
test: ["CMD", "sh", "-c", "curl -f http://localhost:8091/ | grep -q '\"status\":\"ok\"'"]
|
||||
interval: 15s
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8091/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 60s
|
||||
retries: 3
|
||||
restart: unless-stopped
|
||||
|
||||
lecoffre-back:
|
||||
@ -117,11 +111,11 @@ services:
|
||||
sdk_relay:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
||||
test: ["CMD", "sh", "-c", "curl -f http://localhost:8080/ || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 30s
|
||||
retries: 5
|
||||
start_period: 60s
|
||||
labels:
|
||||
- "com.centurylinklabs.watchtower.enable=true"
|
||||
restart: unless-stopped
|
||||
@ -141,7 +135,7 @@ services:
|
||||
lecoffre-back:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3000/"]
|
||||
test: ["CMD", "sh", "-c", "curl -f http://localhost:3000/ || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
@ -157,7 +151,6 @@ services:
|
||||
- .env
|
||||
environment:
|
||||
- VITE_BOOTSTRAPURL=wss://dev4.4nkweb.com/ws/
|
||||
- SDK_RELAY_SCAN_TIMEOUT=300
|
||||
ports:
|
||||
- "127.0.0.1:3003:3003"
|
||||
networks:
|
||||
@ -168,7 +161,7 @@ services:
|
||||
sdk_relay:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "curl", "-f", "http://localhost:3003/"]
|
||||
test: ["CMD", "sh", "-c", "curl -f http://localhost:3003/ || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
@ -191,7 +184,7 @@ services:
|
||||
restart: unless-stopped
|
||||
|
||||
sdk_storage:
|
||||
image: git.4nkweb.com/4nk/sdk_storage:ext
|
||||
image: git.4nkweb.com/4nk/sdk_storage:latest
|
||||
container_name: sdk_storage
|
||||
ports:
|
||||
- "127.0.0.1:8081:8081"
|
||||
@ -221,7 +214,7 @@ services:
|
||||
bitcoin:
|
||||
condition: service_healthy
|
||||
env_file:
|
||||
- ./miner/miner.env
|
||||
- ./miner/.env
|
||||
volumes:
|
||||
- bitcoin_data:/bitcoin:ro
|
||||
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
|
||||
# Utilise les healthchecks du docker-compose.yml pour une séquence optimisée
|
||||
# Intègre la validation des dépendances externes
|
||||
|
||||
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
|
||||
wait_for_service() {
|
||||
@ -48,68 +109,139 @@ check_scan_status() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Démarrage simplifié utilisant les healthchecks du docker-compose.yml
|
||||
echo "📦 Démarrage de tous les services avec healthchecks..."
|
||||
docker compose up -d
|
||||
# Fonction principale de démarrage
|
||||
start_services() {
|
||||
log "🚀 Démarrage de lecoffre_node avec séquence optimisée"
|
||||
|
||||
echo "⏳ Attente que tous les services soient prêts (utilise les healthchecks)..."
|
||||
echo " - sdk_relay: 60s start_period + healthcheck"
|
||||
echo " - ihm_client: 30s start_period + healthcheck"
|
||||
echo " - lecoffre-back: 30s start_period + healthcheck"
|
||||
echo " - lecoffre-front: 30s start_period + healthcheck"
|
||||
|
||||
# Attendre que tous les services soient healthy
|
||||
echo "🔍 Vérification de l'état des services..."
|
||||
sleep 10
|
||||
|
||||
# Vérifier l'état du scan de sdk_relay
|
||||
check_scan_status
|
||||
|
||||
# Étape 5: Vérification finale
|
||||
echo "🔍 Vérification finale de tous les services..."
|
||||
|
||||
services=(
|
||||
"tor:9050"
|
||||
"bitcoin:8332"
|
||||
"blindbit:8000"
|
||||
"sdk_storage:8081"
|
||||
"sdk_relay:8091"
|
||||
"sdk_signer:8092"
|
||||
"ihm_client:3003"
|
||||
"lecoffre-back:8080"
|
||||
"lecoffre-front:3004"
|
||||
)
|
||||
|
||||
all_ready=true
|
||||
for service in "${services[@]}"; do
|
||||
name=$(echo $service | cut -d: -f1)
|
||||
port=$(echo $service | cut -d: -f2)
|
||||
|
||||
if curl -f -s "http://127.0.0.1:$port" > /dev/null 2>&1; then
|
||||
echo "✅ $name est accessible"
|
||||
else
|
||||
echo "❌ $name n'est pas accessible"
|
||||
all_ready=false
|
||||
# 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
|
||||
done
|
||||
|
||||
if [ "$all_ready" = true ]; then
|
||||
echo "🎉 Tous les services sont prêts !"
|
||||
echo "📊 État des services:"
|
||||
docker compose ps
|
||||
else
|
||||
echo "⚠️ Certains services ne sont pas prêts"
|
||||
echo "📋 Logs des services problématiques:"
|
||||
docker compose logs --tail=20
|
||||
exit 1
|
||||
fi
|
||||
# Démarrage simplifié utilisant les healthchecks du docker-compose.yml
|
||||
log "📦 Démarrage de tous les services avec healthchecks..."
|
||||
docker compose up -d
|
||||
|
||||
# Étape 6: Monitoring continu (optionnel)
|
||||
if [ "$1" = "--monitor" ]; then
|
||||
echo "📊 Démarrage du monitoring continu..."
|
||||
while true; do
|
||||
sleep 60
|
||||
echo "🔄 Vérification périodique..."
|
||||
check_scan_status
|
||||
log "⏳ Attente que tous les services soient prêts (utilise les healthchecks)..."
|
||||
log " - sdk_relay: 60s start_period + healthcheck"
|
||||
log " - ihm_client: 30s start_period + healthcheck"
|
||||
log " - lecoffre-back: 30s start_period + healthcheck"
|
||||
log " - lecoffre-front: 30s start_period + healthcheck"
|
||||
|
||||
# Attendre que tous les services soient healthy
|
||||
log "🔍 Vérification de l'état des services..."
|
||||
sleep 10
|
||||
|
||||
# Vérifier l'état du scan de sdk_relay
|
||||
check_scan_status
|
||||
|
||||
# Étape 5: Vérification finale
|
||||
log "🔍 Vérification finale de tous les services..."
|
||||
|
||||
services=(
|
||||
"tor:9050"
|
||||
"bitcoin:8332"
|
||||
"blindbit:8000"
|
||||
"sdk_storage:8081"
|
||||
"sdk_relay:8091"
|
||||
"sdk_signer:8092"
|
||||
"ihm_client:3003"
|
||||
"lecoffre-back:8080"
|
||||
"lecoffre-front:3004"
|
||||
)
|
||||
|
||||
all_ready=true
|
||||
for service in "${services[@]}"; do
|
||||
name=$(echo $service | cut -d: -f1)
|
||||
port=$(echo $service | cut -d: -f2)
|
||||
|
||||
if curl -f -s "http://127.0.0.1:$port" > /dev/null 2>&1; then
|
||||
log_success "$name est accessible"
|
||||
else
|
||||
log_warning "$name n'est pas accessible"
|
||||
all_ready=false
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$all_ready" = true ]; then
|
||||
log_success "Tous les services sont prêts !"
|
||||
log "📊 État des services:"
|
||||
docker compose ps
|
||||
else
|
||||
log_warning "Certains services ne sont pas prêts"
|
||||
log "📋 Logs des services problématiques:"
|
||||
docker compose logs --tail=20
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Fonction de redémarrage intelligent
|
||||
restart_services() {
|
||||
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
|
||||
sleep 60
|
||||
log "🔄 Vérification périodique..."
|
||||
check_scan_status
|
||||
done
|
||||
;;
|
||||
*)
|
||||
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