Files
Serveur-NationGlory/check-config.sh
innotex c58d85d751 Configuration de déploiement unifié NationsGlory
- Scripts de déploiement (deploy.sh, stop.sh, check-config.sh)
- Documentation complète (README, QUICKSTART, etc.)
- Configuration portable avec chemins relatifs
2026-02-05 18:29:25 +01:00

224 lines
7.2 KiB
Bash
Executable File

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