#!/bin/bash ####################################### # Script de déploiement NationsGlory # Démarre le serveur Minecraft et l'application web admin ####################################### set -e # Couleurs pour les logs RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Fonction pour afficher des messages log_info() { echo -e "${BLUE}[INFO]${NC} $1" } log_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } log_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } log_error() { echo -e "${RED}[ERROR]${NC} $1" } # Récupérer le chemin absolu du script SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # Chemins des projets (relatifs au script) MC_SERVER_DIR="${SCRIPT_DIR}/NationsGlory_ServeurBuild_Red" WEB_ADMIN_DIR="${SCRIPT_DIR}/WebNationsGlory_ServeurBuild_Red" log_info "═══════════════════════════════════════════════════════" log_info " Déploiement NationsGlory - Serveur & Web Admin" log_info "═══════════════════════════════════════════════════════" echo "" # Vérification de Docker if ! command -v docker &> /dev/null; then log_error "Docker n'est pas installé. Veuillez installer Docker." exit 1 fi if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then log_error "Docker Compose n'est pas installé." exit 1 fi # Détecter la commande docker compose if docker compose version &> /dev/null; then DOCKER_COMPOSE="docker compose" else DOCKER_COMPOSE="docker-compose" fi log_success "Docker détecté: $(docker --version)" log_success "Docker Compose détecté" echo "" # Vérification des dossiers log_info "Vérification des dossiers..." if [ ! -d "$MC_SERVER_DIR" ]; then log_error "Dossier serveur Minecraft introuvable: $MC_SERVER_DIR" exit 1 fi if [ ! -d "$WEB_ADMIN_DIR" ]; then log_error "Dossier application web introuvable: $WEB_ADMIN_DIR" exit 1 fi log_success "Dossiers trouvés" log_info " - Serveur MC: $MC_SERVER_DIR" log_info " - Web Admin: $WEB_ADMIN_DIR" echo "" # Configuration de l'application web log_info "Configuration de l'application web..." cd "$WEB_ADMIN_DIR" if [ ! -f ".env" ]; then log_warning "Fichier .env introuvable. Création depuis .env.example..." if [ -f ".env.example" ]; then cp .env.example .env log_warning "⚠️ IMPORTANT: Éditez le fichier .env et configurez:" log_warning " - SESSION_SECRET (utilisez: openssl rand -base64 32)" log_warning " - RCON_PASSWORD (doit correspondre au serveur MC)" echo "" read -p "Appuyez sur Entrée pour continuer après avoir configuré .env..." else log_error "Fichier .env.example introuvable" exit 1 fi else log_success "Fichier .env trouvé" fi # Charger les variables d'environnement if [ -f ".env" ]; then export $(cat .env | grep -v '^#' | xargs) fi # Calculer le chemin relatif du serveur MC depuis l'application web MC_RELATIVE_PATH=$(realpath --relative-to="$WEB_ADMIN_DIR" "$MC_SERVER_DIR") log_info "Chemin relatif calculé: $MC_RELATIVE_PATH" # Mettre à jour MC_SERVER_PATH dans .env si nécessaire if ! grep -q "^MC_SERVER_PATH=" .env 2>/dev/null; then echo "MC_SERVER_PATH=$MC_RELATIVE_PATH" >> .env log_info "MC_SERVER_PATH ajouté au fichier .env" fi echo "" # Démarrage du serveur Minecraft log_info "═══════════════════════════════════════════════════════" log_info "Démarrage du serveur Minecraft..." log_info "═══════════════════════════════════════════════════════" cd "$MC_SERVER_DIR" if [ ! -f "docker-compose.yml" ]; then log_error "docker-compose.yml introuvable dans le dossier serveur MC" exit 1 fi log_info "Arrêt des conteneurs existants (si présents)..." $DOCKER_COMPOSE down 2>/dev/null || true log_info "Démarrage du serveur Minecraft..." $DOCKER_COMPOSE up -d if [ $? -eq 0 ]; then log_success "✓ Serveur Minecraft démarré" else log_error "Erreur lors du démarrage du serveur Minecraft" exit 1 fi echo "" # Démarrage de l'application web log_info "═══════════════════════════════════════════════════════" log_info "Démarrage de l'application web admin..." log_info "═══════════════════════════════════════════════════════" cd "$WEB_ADMIN_DIR" log_info "Arrêt des conteneurs existants (si présents)..." $DOCKER_COMPOSE down 2>/dev/null || true log_info "Construction et démarrage de l'application web..." $DOCKER_COMPOSE up -d --build if [ $? -eq 0 ]; then log_success "✓ Application web admin démarrée" else log_error "Erreur lors du démarrage de l'application web" exit 1 fi echo "" # Récupérer l'IP locale LOCAL_IP=$(hostname -I | awk '{print $1}') # Affichage des informations log_info "═══════════════════════════════════════════════════════" log_success "🎉 Déploiement terminé avec succès!" log_info "═══════════════════════════════════════════════════════" echo "" log_info "📋 Informations de connexion:" echo "" log_info "Serveur Minecraft:" log_info " - Port: ${SERVER_PORT:-25565}" log_info " - RCON: ${RCON_PORT:-25575}" if [ -n "$LOCAL_IP" ]; then log_info " - IP locale: $LOCAL_IP:${SERVER_PORT:-25565}" fi echo "" log_info "Application Web Admin:" log_info " - Port: ${PORT:-4001}" log_info " - Accès local: http://localhost:${PORT:-4001}" if [ -n "$LOCAL_IP" ]; then log_info " - Accès réseau: http://$LOCAL_IP:${PORT:-4001}" fi echo "" log_info "═══════════════════════════════════════════════════════" log_info "Commandes utiles:" echo "" log_info "Voir les logs du serveur MC:" log_info " cd $MC_SERVER_DIR && $DOCKER_COMPOSE logs -f" echo "" log_info "Voir les logs de l'application web:" log_info " cd $WEB_ADMIN_DIR && $DOCKER_COMPOSE logs -f" echo "" log_info "Arrêter tous les services:" log_info " $0 stop" echo "" log_info "═══════════════════════════════════════════════════════"