#!/bin/bash ####################################### # Script de vérification de configuration # Vérifie que tout est prêt pour le déploiement ####################################### # Ne pas utiliser set -e car on veut continuer malgré les erreurs # set -e # Couleurs RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' ERRORS=0 WARNINGS=0 log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[✓]${NC} $1" } log_warning() { echo -e "${YELLOW}[⚠]${NC} $1" ((WARNINGS++)) } log_error() { echo -e "${RED}[✗]${NC} $1" ((ERRORS++)) } SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" MC_SERVER_DIR="${SCRIPT_DIR}/NationsGlory_ServeurBuild_Red" WEB_ADMIN_DIR="${SCRIPT_DIR}/WebNationsGlory_ServeurBuild_Red" echo "" log_info "═══════════════════════════════════════════════════════" log_info " Vérification de Configuration - NationsGlory" log_info "═══════════════════════════════════════════════════════" echo "" # Vérification Docker log_info "Vérification de Docker..." if command -v docker &> /dev/null; then log_success "Docker installé: $(docker --version | head -n1)" else log_error "Docker n'est pas installé" fi if docker compose version &> /dev/null 2>&1; then log_success "Docker Compose v2 installé" elif command -v docker-compose &> /dev/null; then log_success "Docker Compose v1 installé" else log_error "Docker Compose n'est pas installé" fi echo "" # Vérification des dossiers log_info "Vérification des dossiers..." if [ -d "$MC_SERVER_DIR" ]; then log_success "Dossier serveur MC trouvé" else log_error "Dossier serveur MC introuvable: $MC_SERVER_DIR" fi if [ -d "$WEB_ADMIN_DIR" ]; then log_success "Dossier application web trouvé" else log_error "Dossier application web introuvable: $WEB_ADMIN_DIR" fi echo "" # Vérification serveur Minecraft log_info "Vérification du serveur Minecraft..." if [ -f "$MC_SERVER_DIR/mcpc.jar" ]; then log_success "Fichier mcpc.jar trouvé" else log_error "Fichier mcpc.jar introuvable" fi if [ -f "$MC_SERVER_DIR/docker-compose.yml" ]; then log_success "docker-compose.yml trouvé" else log_error "docker-compose.yml introuvable dans le serveur MC" fi if [ -f "$MC_SERVER_DIR/.env" ]; then log_success "Fichier .env trouvé pour le serveur MC" # Vérifier RCON_PASSWORD if grep -q "^RCON_PASSWORD=minecraft$" "$MC_SERVER_DIR/.env" 2>/dev/null; then log_warning "RCON_PASSWORD utilise la valeur par défaut 'minecraft' - Changez-le pour la production!" else log_success "RCON_PASSWORD configuré" fi else log_warning "Fichier .env manquant pour le serveur MC (utilisera les valeurs par défaut)" if [ -f "$MC_SERVER_DIR/.env.example" ]; then log_info "Copiez .env.example vers .env et configurez-le" fi fi echo "" # Vérification application web log_info "Vérification de l'application web..." if [ -f "$WEB_ADMIN_DIR/docker-compose.yml" ]; then log_success "docker-compose.yml trouvé" else log_error "docker-compose.yml introuvable dans l'application web" fi if [ -f "$WEB_ADMIN_DIR/.env" ]; then log_success "Fichier .env trouvé pour l'application web" # Vérifier SESSION_SECRET if grep -q "^SESSION_SECRET=.*changez.*production" "$WEB_ADMIN_DIR/.env" 2>/dev/null; then log_error "SESSION_SECRET utilise la valeur par défaut - CHANGEZ-LE IMMÉDIATEMENT!" log_info "Générez un secret avec: openssl rand -base64 32" elif grep -q "^SESSION_SECRET=your-secret-key-change-in-production" "$WEB_ADMIN_DIR/.env" 2>/dev/null; then log_error "SESSION_SECRET utilise la valeur par défaut - CHANGEZ-LE IMMÉDIATEMENT!" log_info "Générez un secret avec: openssl rand -base64 32" else log_success "SESSION_SECRET configuré" fi # Vérifier RCON_PASSWORD WEB_RCON_PASS=$(grep "^RCON_PASSWORD=" "$WEB_ADMIN_DIR/.env" 2>/dev/null | cut -d'=' -f2) MC_RCON_PASS=$(grep "^RCON_PASSWORD=" "$MC_SERVER_DIR/.env" 2>/dev/null | cut -d'=' -f2) if [ -n "$WEB_RCON_PASS" ] && [ -n "$MC_RCON_PASS" ]; then if [ "$WEB_RCON_PASS" = "$MC_RCON_PASS" ]; then log_success "RCON_PASSWORD identique dans les deux configurations" else log_error "RCON_PASSWORD différent entre le serveur MC et l'application web!" log_info "Serveur MC: $MC_RCON_PASS" log_info "App Web: $WEB_RCON_PASS" fi fi # Vérifier MC_SERVER_PATH if grep -q "^MC_SERVER_PATH=" "$WEB_ADMIN_DIR/.env" 2>/dev/null; then MC_PATH=$(grep "^MC_SERVER_PATH=" "$WEB_ADMIN_DIR/.env" | cut -d'=' -f2) log_success "MC_SERVER_PATH configuré: $MC_PATH" else log_warning "MC_SERVER_PATH non défini (utilisera ../NationsGlory_ServeurBuild_Red par défaut)" fi else log_error "Fichier .env manquant pour l'application web" if [ -f "$WEB_ADMIN_DIR/.env.example" ]; then log_info "Copiez .env.example vers .env et configurez-le" fi fi if [ -d "$WEB_ADMIN_DIR/backend/node_modules" ]; then log_success "Dépendances Node.js installées" else log_warning "node_modules manquant - sera installé lors du build Docker" fi echo "" # Vérification des ports log_info "Vérification des ports..." check_port() { local port=$1 local service=$2 if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1 || ss -ltn | grep -q ":$port " 2>/dev/null; then log_warning "Port $port ($service) déjà utilisé" else log_success "Port $port ($service) disponible" fi } check_port 25565 "Minecraft" check_port 25575 "RCON" check_port 4001 "Web Admin" echo "" # Vérification des permissions log_info "Vérification des permissions..." if [ -x "$SCRIPT_DIR/deploy.sh" ]; then log_success "Script deploy.sh exécutable" else log_warning "Script deploy.sh non exécutable (chmod +x deploy.sh)" fi if [ -x "$SCRIPT_DIR/stop.sh" ]; then log_success "Script stop.sh exécutable" else log_warning "Script stop.sh non exécutable (chmod +x stop.sh)" fi echo "" # Résumé log_info "═══════════════════════════════════════════════════════" if [ $ERRORS -eq 0 ] && [ $WARNINGS -eq 0 ]; then log_success "✓ Toutes les vérifications sont passées!" log_info "Vous pouvez démarrer le déploiement avec: ./deploy.sh" elif [ $ERRORS -eq 0 ]; then log_success "Aucune erreur critique" log_warning "$WARNINGS avertissement(s) - Vérifiez les points ci-dessus" log_info "Vous pouvez démarrer le déploiement avec: ./deploy.sh" else log_error "$ERRORS erreur(s) trouvée(s)" log_warning "$WARNINGS avertissement(s)" log_info "Corrigez les erreurs avant de déployer" exit 1 fi log_info "═══════════════════════════════════════════════════════" echo ""