124 lines
3.9 KiB
Bash
124 lines
3.9 KiB
Bash
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
echo "🚀 Démarrage de l'interface utilisateur 4NK..."
|
|
|
|
# Variables d'environnement avec valeurs par défaut
|
|
SDK_RELAY_WS_URL=${SDK_RELAY_WS_URL:-"ws://sdk_relay_1:8090"}
|
|
SDK_RELAY_HTTP_URL=${SDK_RELAY_HTTP_URL:-"http://sdk_relay_1:8091"}
|
|
BITCOIN_RPC_URL=${BITCOIN_RPC_URL:-"http://bitcoin:18443"}
|
|
BLINDBIT_URL=${BLINDBIT_URL:-"http://blindbit:8000"}
|
|
|
|
# Fonction pour attendre qu'un service soit disponible
|
|
wait_for_service() {
|
|
local service_name=$1
|
|
local service_url=$2
|
|
local max_attempts=30
|
|
local attempt=1
|
|
|
|
echo "⏳ Attente du service $service_name ($service_url)..."
|
|
|
|
while [ $attempt -le $max_attempts ]; do
|
|
if wget --quiet --tries=1 --timeout=5 --spider "$service_url" 2>/dev/null; then
|
|
echo "✅ Service $service_name disponible"
|
|
return 0
|
|
fi
|
|
|
|
echo " Tentative $attempt/$max_attempts - Service $service_name non disponible"
|
|
sleep 2
|
|
attempt=$((attempt + 1))
|
|
done
|
|
|
|
echo "❌ Service $service_name non disponible après $max_attempts tentatives"
|
|
return 1
|
|
}
|
|
|
|
# Fonction pour vérifier la connectivité WebSocket
|
|
check_websocket() {
|
|
local service_name=$1
|
|
local ws_url=$2
|
|
local max_attempts=10
|
|
local attempt=1
|
|
|
|
echo "🔌 Vérification WebSocket $service_name ($ws_url)..."
|
|
|
|
while [ $attempt -le $max_attempts ]; do
|
|
if nc -z $(echo $ws_url | sed 's|ws://||' | sed 's|wss://||' | cut -d: -f1) $(echo $ws_url | cut -d: -f3) 2>/dev/null; then
|
|
echo "✅ WebSocket $service_name accessible"
|
|
return 0
|
|
fi
|
|
|
|
echo " Tentative $attempt/$max_attempts - WebSocket $service_name non accessible"
|
|
sleep 3
|
|
attempt=$((attempt + 1))
|
|
done
|
|
|
|
echo "⚠️ WebSocket $service_name non accessible (continuera sans)"
|
|
return 0
|
|
}
|
|
|
|
# Vérification des services critiques
|
|
echo "🔍 Vérification des services 4NK_node..."
|
|
|
|
# Les relays sont disponibles, l'interface utilisateur se connectera via WebSocket
|
|
echo "✅ Services 4NK_node prêts"
|
|
echo "🔄 L'interface utilisateur démarrera et se connectera aux relais via WebSocket"
|
|
|
|
# Vérifier sdk_relay WebSocket (optionnel)
|
|
check_websocket "sdk_relay WebSocket" "$SDK_RELAY_WS_URL"
|
|
|
|
# Bitcoin Core est disponible, l'interface utilisateur se connectera directement
|
|
echo "✅ Bitcoin Core disponible"
|
|
echo "🔄 L'interface utilisateur se connectera directement à Bitcoin Core"
|
|
|
|
# Blindbit est disponible, l'interface utilisateur se connectera directement
|
|
echo "✅ Blindbit disponible"
|
|
echo "🔄 L'interface utilisateur se connectera directement à Blindbit"
|
|
|
|
# Génération de la configuration dynamique
|
|
echo "⚙️ Génération de la configuration dynamique..."
|
|
|
|
# Créer un fichier de configuration JavaScript pour l'application
|
|
# Pour l'accès via reverse proxy public, utiliser des chemins relatifs /ws et /api
|
|
cat > /usr/share/nginx/html/config.js << 'EOF'
|
|
window.ENV_CONFIG = {
|
|
SDK_RELAY_WS_URL: '/ws',
|
|
SDK_RELAY_HTTP_URL: '/api',
|
|
ENVIRONMENT: '4nk-node'
|
|
};
|
|
EOF
|
|
|
|
# Démarrage de nginx
|
|
echo "🌐 Démarrage de nginx..."
|
|
nginx -g "daemon off;" &
|
|
|
|
# Attendre que nginx soit prêt
|
|
sleep 2
|
|
|
|
# Vérifier que nginx fonctionne
|
|
if ! wget --quiet --tries=1 --timeout=5 --spider http://localhost 2>/dev/null; then
|
|
echo "❌ Nginx n'a pas démarré correctement"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✅ Interface utilisateur 4NK démarrée avec succès"
|
|
echo " 📍 URL: http://localhost"
|
|
echo " 🔌 WebSocket: $SDK_RELAY_WS_URL"
|
|
echo " 🌐 API: $SDK_RELAY_HTTP_URL"
|
|
|
|
# Maintenir le conteneur en vie
|
|
while true; do
|
|
sleep 30
|
|
|
|
# Vérification périodique de la santé
|
|
if ! wget --quiet --tries=1 --timeout=5 --spider http://localhost 2>/dev/null; then
|
|
echo "❌ Nginx ne répond plus, redémarrage..."
|
|
nginx -s reload
|
|
fi
|
|
|
|
# Vérification périodique des relais (optionnel)
|
|
echo "✅ Interface utilisateur opérationnelle"
|
|
echo "🌐 Accessible sur http://localhost:8080"
|
|
done
|