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
This commit is contained in:
206
deploy.sh
Executable file
206
deploy.sh
Executable file
@@ -0,0 +1,206 @@
|
||||
#!/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 "═══════════════════════════════════════════════════════"
|
||||
Reference in New Issue
Block a user