- Scripts de déploiement (deploy.sh, stop.sh, check-config.sh) - Documentation complète (README, QUICKSTART, etc.) - Configuration portable avec chemins relatifs
207 lines
6.8 KiB
Bash
Executable File
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 "═══════════════════════════════════════════════════════"
|