Default configuration serveur Build NG RED

This commit is contained in:
2026-02-03 23:09:01 +01:00
commit 53d0c557d0
129 changed files with 21501 additions and 0 deletions

386
install-prod.sh Executable file
View File

@@ -0,0 +1,386 @@
#!/bin/bash
# Script d'installation automatique pour serveur de production
# Usage: curl -fsSL https://raw.githubusercontent.com/.../install.sh | sudo bash
# Ou: sudo bash install.sh
set -e
echo "╔══════════════════════════════════════════════════════════════════╗"
echo "║ 🎮 Installation automatique - Serveur NationsGlory Docker ║"
echo "╚══════════════════════════════════════════════════════════════════╝"
echo ""
# Configuration
INSTALL_DIR="/srv/minecraft/moddé"
BACKUP_DIR="/srv/minecraft/backups"
# Couleurs
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Fonctions
log_info() {
echo -e "${BLUE}${NC} $1"
}
log_success() {
echo -e "${GREEN}${NC} $1"
}
log_warning() {
echo -e "${YELLOW}⚠️${NC} $1"
}
log_error() {
echo -e "${RED}${NC} $1"
}
# Vérification root
if [ "$EUID" -ne 0 ]; then
log_error "Ce script nécessite les droits root"
echo "Relancer avec: sudo $0"
exit 1
fi
echo "📋 Vérification du système..."
echo ""
# Vérifier l'OS
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$NAME
VER=$VERSION_ID
log_info "Système détecté: $OS $VER"
else
log_warning "Système non identifié, continuation..."
fi
# Installation Docker
echo ""
log_info "Vérification de Docker..."
if ! command -v docker &> /dev/null; then
log_warning "Docker n'est pas installé"
read -p "Installer Docker? [Y/n] " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
log_info "Installation de Docker..."
curl -fsSL https://get.docker.com | sh
systemctl enable docker
systemctl start docker
log_success "Docker installé"
else
log_error "Docker est requis. Installation annulée."
exit 1
fi
else
log_success "Docker déjà installé ($(docker --version))"
fi
# Installation Docker Compose
echo ""
log_info "Vérification de Docker Compose..."
if ! command -v docker-compose &> /dev/null; then
log_warning "Docker Compose n'est pas installé"
log_info "Installation de Docker Compose..."
if [ -f /etc/debian_version ]; then
apt-get update -qq
apt-get install -y -qq docker-compose
elif [ -f /etc/redhat-release ]; then
yum install -y docker-compose
else
# Installation via pip
apt-get update -qq
apt-get install -y -qq python3-pip
pip3 install docker-compose
fi
log_success "Docker Compose installé"
else
log_success "Docker Compose déjà installé ($(docker-compose --version))"
fi
# Création de la structure
echo ""
log_info "Création de la structure /srv/minecraft..."
mkdir -p /srv/minecraft/{moddé,proxy,survie,backups}
mkdir -p "$INSTALL_DIR"/{data,mods,plugins,config,libraries,backups}
log_success "Structure créée"
# Configuration du firewall (si UFW installé)
echo ""
if command -v ufw &> /dev/null; then
log_info "Configuration du firewall..."
ufw allow 25565/tcp comment "Minecraft NationsGlory" >/dev/null 2>&1 || true
log_success "Port 25565 ouvert"
else
log_warning "UFW non installé, configuration firewall manuelle requise"
fi
# Création des fichiers de configuration
echo ""
log_info "Création des fichiers de configuration..."
# .env
cat > "$INSTALL_DIR/.env" << 'EOF'
# Configuration NationsGlory
MEMORY=2G
INIT_MEMORY=1G
MINECRAFT_PORT=25565
MAX_PLAYERS=20
VIEW_DISTANCE=10
DIFFICULTY=peaceful
GAMEMODE=creative
LEVEL_TYPE=FLAT
SERVER_NAME=NationsGlory Moddé
MOTD=§6NationsGlory §8- §7Serveur Moddé 1.6.4
DEBUG=false
TZ=Europe/Paris
EOF
log_success "Fichier .env créé"
# docker-compose.yml
cat > "$INSTALL_DIR/docker-compose.yml" << 'EOF'
version: '3.8'
services:
nationsglory-modded:
image: itzg/minecraft-server:java8
container_name: mc-nationsglory
restart: unless-stopped
environment:
TYPE: "CUSTOM"
CUSTOM_SERVER: "/data/mcpc.jar"
MEMORY: "${MEMORY:-2G}"
INIT_MEMORY: "${INIT_MEMORY:-1G}"
JVM_OPTS: "-XX:+UseG1GC"
EULA: "TRUE"
ONLINE_MODE: "FALSE"
DIFFICULTY: "${DIFFICULTY:-peaceful}"
MODE: "${GAMEMODE:-creative}"
LEVEL_TYPE: "${LEVEL_TYPE:-FLAT}"
PVP: "FALSE"
SPAWN_MONSTERS: "FALSE"
SPAWN_NPCS: "TRUE"
SPAWN_ANIMALS: "TRUE"
ALLOW_FLIGHT: "TRUE"
MAX_PLAYERS: "${MAX_PLAYERS:-20}"
VIEW_DISTANCE: "${VIEW_DISTANCE:-10}"
SERVER_NAME: "${SERVER_NAME:-NationsGlory}"
MOTD: "${MOTD:-NationsGlory Serveur}"
USE_AIKAR_FLAGS: "FALSE"
DEBUG: "${DEBUG:-FALSE}"
TZ: "${TZ:-Europe/Paris}"
ports:
- "${MINECRAFT_PORT:-25565}:25565"
volumes:
- ./data:/data
- ./mods:/data/mods
- ./plugins:/data/plugins
- ./config:/data/config
- ./world:/data/world
- ./libraries:/data/libraries
deploy:
resources:
limits:
memory: 3G
reservations:
memory: 1G
ulimits:
nofile:
soft: 65535
hard: 65535
networks:
- minecraft-network
networks:
minecraft-network:
driver: bridge
EOF
log_success "Fichier docker-compose.yml créé"
# Makefile
cat > "$INSTALL_DIR/Makefile" << 'EOF'
.PHONY: start stop restart logs status backup
start:
@docker-compose up -d
@echo "✅ Serveur démarré"
stop:
@docker-compose down
@echo "✅ Serveur arrêté"
restart:
@docker-compose restart
@echo "✅ Serveur redémarré"
logs:
@docker-compose logs -f --tail=100
status:
@docker-compose ps
@docker stats --no-stream mc-nationsglory 2>/dev/null || true
backup:
@mkdir -p backups
@docker-compose exec -T nationsglory-modded rcon-cli save-all flush || true
@sleep 3
@tar -czf backups/world-$(shell date +%Y%m%d-%H%M).tar.gz data/world/
@echo "✅ Backup créé"
console:
@docker-compose exec nationsglory-modded rcon-cli
EOF
log_success "Makefile créé"
# README rapide
cat > "$INSTALL_DIR/README.txt" << 'EOF'
╔══════════════════════════════════════════════════════════════════╗
║ 🎮 Serveur NationsGlory - Docker ║
╚══════════════════════════════════════════════════════════════════╝
⚠️ AVANT DE DÉMARRER:
1. Copier mcpc.jar dans data/
2. Copier les mods dans mods/
3. Copier les plugins dans plugins/
4. Copier les configs dans config/
5. Copier les libraries dans libraries/
🚀 DÉMARRER:
make start
ou: docker-compose up -d
📊 VOIR LES LOGS:
make logs
ou: docker-compose logs -f
🛑 ARRÊTER:
make stop
ou: docker-compose down
📚 Documentation complète:
https://github.com/votre-repo/DEPLOYMENT.md
EOF
log_success "README créé"
# Permissions
echo ""
log_info "Configuration des permissions..."
chown -R 1000:1000 "$INSTALL_DIR"
chmod -R 755 "$INSTALL_DIR"
log_success "Permissions configurées"
# Script de backup automatique
echo ""
log_info "Création du script de backup automatique..."
cat > /usr/local/bin/minecraft-backup.sh << 'EOF'
#!/bin/bash
cd /srv/minecraft/moddé
docker-compose exec -T nationsglory-modded rcon-cli save-all flush 2>/dev/null
sleep 5
tar -czf /srv/minecraft/backups/auto-$(date +%Y%m%d-%H%M).tar.gz data/world/
find /srv/minecraft/backups/ -name "auto-*.tar.gz" -mtime +7 -delete
echo "Backup terminé: $(date)" >> /var/log/minecraft-backup.log
EOF
chmod +x /usr/local/bin/minecraft-backup.sh
log_success "Script de backup créé: /usr/local/bin/minecraft-backup.sh"
# Cron pour backups automatiques
echo ""
read -p "Configurer des backups automatiques quotidiens à 3h? [Y/n] " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/minecraft-backup.sh") | crontab -
log_success "Backups automatiques configurés (3h du matin)"
fi
# Service systemd (optionnel)
echo ""
read -p "Créer un service systemd pour démarrage automatique? [Y/n] " -n 1 -r
echo ""
if [[ ! $REPLY =~ ^[Nn]$ ]]; then
cat > /etc/systemd/system/minecraft-nationsglory.service << EOF
[Unit]
Description=NationsGlory Minecraft Server
Requires=docker.service
After=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=$INSTALL_DIR
ExecStart=/usr/bin/docker-compose up -d
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable minecraft-nationsglory.service
log_success "Service systemd créé et activé"
fi
# Résumé final
echo ""
echo "╔══════════════════════════════════════════════════════════════════╗"
echo "║ ✅ INSTALLATION TERMINÉE ! ║"
echo "╚══════════════════════════════════════════════════════════════════╝"
echo ""
log_info "Emplacement: $INSTALL_DIR"
log_info "Backups: $BACKUP_DIR"
echo ""
echo "📋 PROCHAINES ÉTAPES:"
echo ""
echo "1. Copier les fichiers du serveur:"
echo " cd $INSTALL_DIR"
echo " # Copier mcpc.jar, mods, plugins, config, libraries"
echo ""
echo "2. Démarrer le serveur:"
echo " cd $INSTALL_DIR"
echo " make start"
echo ""
echo "3. Voir les logs:"
echo " make logs"
echo ""
echo "4. Se connecter:"
echo " IP: $(hostname -I | awk '{print $1}'):25565"
echo " Version: Minecraft 1.6.4"
echo ""
echo "📚 Aide:"
echo " cd $INSTALL_DIR"
echo " make help"
echo " cat README.txt"
echo ""
log_success "Installation réussie !"
echo ""