#!/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