ihm_client/start-4nk-node.sh
Nicolas Cantu ea97ffa733
Some checks failed
CI/CD Pipeline / test (push) Failing after 56s
CI/CD Pipeline / security (push) Has been skipped
CI/CD Pipeline / integration-test (push) Has been skipped
feat: Configuration SSH automatique pour CI/CD et templates Gitea
- Ajout du workflow CI/CD avec configuration SSH automatique
- Création des templates pour issues et pull requests
- Script de configuration SSH automatique (scripts/setup-ssh-ci.sh)
- Documentation SSH complète (docs/SSH_SETUP.md)
- Mise à jour de la configuration d'intégration 4NK_node
- Amélioration du script de démarrage et de la config Nginx

La clé SSH est maintenant utilisée automatiquement dans tous les environnements :
- CI/CD Gitea Actions avec variable SSH_PRIVATE_KEY
- Environnement local avec détection automatique
- Configuration Git pour utiliser SSH au lieu de HTTPS
2025-08-25 16:52:56 +02:00

125 lines
3.7 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..."
# Attendre sdk_relay HTTP (critique)
if ! wait_for_service "sdk_relay HTTP" "$SDK_RELAY_HTTP_URL/health"; then
echo "❌ Service sdk_relay HTTP critique non disponible"
exit 1
fi
# Vérifier sdk_relay WebSocket (optionnel)
check_websocket "sdk_relay WebSocket" "$SDK_RELAY_WS_URL"
# Vérifier Bitcoin Core (optionnel)
if ! wait_for_service "Bitcoin Core" "$BITCOIN_RPC_URL" 2>/dev/null; then
echo "⚠️ Bitcoin Core non disponible (optionnel)"
fi
# Vérifier Blindbit (optionnel)
if ! wait_for_service "Blindbit" "$BLINDBIT_URL" 2>/dev/null; then
echo "⚠️ Blindbit non disponible (optionnel)"
fi
# 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
cat > /usr/share/nginx/html/config.js << EOF
window.ENV_CONFIG = {
SDK_RELAY_WS_URL: '$SDK_RELAY_WS_URL',
SDK_RELAY_HTTP_URL: '$SDK_RELAY_HTTP_URL',
BITCOIN_RPC_URL: '$BITCOIN_RPC_URL',
BLINDBIT_URL: '$BLINDBIT_URL',
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
done