Files
Serveur-NationGlory/deploy.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

207 lines
6.8 KiB
Bash
Executable File

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