- 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
125 lines
3.7 KiB
Bash
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
|