lecoffre_node/scripts/startup.sh

122 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
echo "🚀 DÉMARRAGE AUTONOME LECOFFRE NODE"
echo "=================================="
# Fonction de logging
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
# Chargement des variables d'environnement
if [ -f /app/env.master ]; then
log "Chargement des variables d'environnement..."
export $(cat /app/env.master | grep -v '^#' | xargs)
fi
# Vérification des prérequis
log "Vérification des prérequis..."
# Vérifier que Docker est disponible
if ! command -v docker &> /dev/null; then
log "❌ Docker non disponible"
exit 1
fi
# Vérifier que docker-compose est disponible
if ! command -v docker-compose &> /dev/null; then
log "❌ Docker Compose non disponible"
exit 1
fi
log "✅ Prérequis validés"
# Initialisation des répertoires
log "Initialisation des répertoires..."
mkdir -p /app/data /app/logs /app/backup /var/www/lecoffre/status /var/www/lecoffre/assets
chown -R appuser:appuser /app/data /app/logs /app/backup
# Création du réseau Docker
log "Création du réseau Docker..."
docker network create ${DOCKER_NETWORK_NAME:-lecoffre_network} 2>/dev/null || true
# Configuration des volumes Docker
log "Configuration des volumes Docker..."
docker volume create lecoffre_bitcoin_data 2>/dev/null || true
docker volume create lecoffre_blindbit_data 2>/dev/null || true
docker volume create lecoffre_sdk_data 2>/dev/null || true
docker volume create lecoffre_grafana_data 2>/dev/null || true
docker volume create lecoffre_loki_data 2>/dev/null || true
# Démarrage des services
log "Démarrage des services Docker Compose..."
cd /app
# Export des variables pour docker-compose
export COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-lecoffre}
export COMPOSE_FILE=${COMPOSE_FILE:-docker-compose.yml}
# Démarrage en mode détaché
docker-compose up -d
# Attente du démarrage des services
log "Attente du démarrage des services..."
sleep 30
# Vérification de l'état des services
log "Vérification de l'état des services..."
docker-compose ps
# Vérification de la santé des services
log "Vérification de la santé des services..."
for service in bitcoin-signet blindbit-oracle sdk_relay lecoffre-back ihm_client; do
if docker-compose ps $service | grep -q "healthy\|Up"; then
log "$service: OK"
else
log "⚠️ $service: Problème détecté"
fi
done
# Test de connectivité
log "Test de connectivité..."
if curl -f -s http://localhost:8091/ > /dev/null; then
log "✅ SDK Relay: Accessible"
else
log "❌ SDK Relay: Inaccessible"
fi
if curl -f -s http://localhost:8080/api/v1/health > /dev/null; then
log "✅ LeCoffre Back: Accessible"
else
log "❌ LeCoffre Back: Inaccessible"
fi
if curl -f -s http://localhost:3003/ > /dev/null; then
log "✅ IHM Client: Accessible"
else
log "❌ IHM Client: Inaccessible"
fi
log "✅ Démarrage autonome LeCoffre Node terminé"
log "📊 Services disponibles:"
log " - Nginx: http://localhost"
log " - Status: http://localhost/status/"
log " - Grafana: http://localhost/grafana/"
log " - LeCoffre Front: http://localhost/lecoffre/"
log " - IHM Client: http://localhost/"
# Boucle de surveillance
log "Démarrage de la surveillance des services..."
while true; do
sleep 60
# Vérification périodique des services
for service in bitcoin-signet sdk_relay lecoffre-back; do
if ! docker-compose ps $service | grep -q "healthy\|Up"; then
log "⚠️ Service $service en problème, redémarrage..."
docker-compose restart $service
fi
done
done