Files
NationsGlory_ServeurBuild_Red/DEPLOYMENT.md

11 KiB

🚀 Guide de Déploiement - Serveur NationsGlory sur /srv/minecraft

Architecture de production

/srv/minecraft/
├── proxy/              # Velocity/BungeeCord (futur)
├── survie/             # Serveur survie vanilla (futur)
├── moddé/              # ← Serveur NationsGlory MCPC+ 1.6.4
│   ├── docker-compose.yml
│   ├── .env
│   ├── data/           # Données serveur
│   │   ├── mcpc.jar
│   │   ├── server.properties
│   │   ├── ops.txt
│   │   └── ...
│   ├── mods/           # 13 mods Forge
│   ├── plugins/        # WorldEdit + Essentials
│   ├── config/         # Configurations mods
│   ├── libraries/      # Dépendances Maven
│   └── world/          # Monde Minecraft
└── backups/            # Sauvegardes automatiques

📋 Prérequis

Sur la machine de production

  1. Docker & Docker Compose
# Installer Docker
curl -fsSL https://get.docker.com | sh

# Installer Docker Compose
sudo apt install docker-compose

# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
  1. Permissions sur /srv
sudo mkdir -p /srv/minecraft
sudo chown $USER:$USER /srv/minecraft
  1. Ports disponibles
  • Port 25565 (Minecraft)
  • Ou configurer un autre port dans docker-compose.yml

🚚 Migration du serveur

Méthode 1 : Script automatique (recommandé)

# Sur la machine de développement
cd "/home/innotex/Documents/Projet/Serveur NationsGlory"

# Rendre le script exécutable
chmod +x migrate-to-srv.sh

# Exécuter la migration (nécessite sudo)
sudo ./migrate-to-srv.sh

Le script va :

  • Créer la structure /srv/minecraft
  • Copier tous les fichiers nécessaires
  • Configurer les permissions
  • Créer un backup de sécurité
  • Installer docker-compose.yml

Méthode 2 : Migration manuelle

# 1. Créer la structure
sudo mkdir -p /srv/minecraft/moddé/{data,mods,plugins,config,libraries,backups}

# 2. Copier les fichiers
sudo cp -r server-final/mcpc.jar /srv/minecraft/moddé/data/
sudo cp -r server-final/mods/* /srv/minecraft/moddé/mods/
sudo cp -r server-final/plugins/* /srv/minecraft/moddé/plugins/
sudo cp -r server-final/config/* /srv/minecraft/moddé/config/
sudo cp -r server-final/libraries/* /srv/minecraft/moddé/libraries/
sudo cp server-final/server.properties /srv/minecraft/moddé/data/
sudo cp server-final/ops.txt /srv/minecraft/moddé/data/

# 3. Copier la configuration Docker
sudo cp docker-compose.yml /srv/minecraft/moddé/
sudo cp .env.example /srv/minecraft/moddé/.env

# 4. Permissions
sudo chown -R 1000:1000 /srv/minecraft/moddé
sudo chmod -R 755 /srv/minecraft/moddé

Méthode 3 : Transfert vers machine distante

# Créer une archive
cd "/home/innotex/Documents/Projet/Serveur NationsGlory"
tar -czf nationsglory-server.tar.gz server-final/ docker-compose.yml .env.example

# Transférer via SCP
scp nationsglory-server.tar.gz user@serveur-prod:/tmp/

# Sur le serveur de production
ssh user@serveur-prod
cd /srv/minecraft
sudo mkdir -p moddé
cd moddé
sudo tar -xzf /tmp/nationsglory-server.tar.gz
sudo mv server-final/* data/
sudo chown -R 1000:1000 .

🐳 Utilisation avec Docker

Démarrer le serveur

cd /srv/minecraft/moddé

# Premier démarrage (création du monde)
docker-compose up -d

# Voir les logs en temps réel
docker-compose logs -f

# Attendre le message "Done!" dans les logs

Commandes Docker Compose

# Démarrer
docker-compose up -d

# Arrêter proprement
docker-compose down

# Redémarrer
docker-compose restart

# Voir les logs
docker-compose logs -f

# Voir l'état
docker-compose ps

# Exécuter une commande dans le conteneur
docker-compose exec nationsglory-modded rcon-cli

# Entrer dans le conteneur
docker-compose exec nationsglory-modded bash

Commandes serveur via RCON

# Se connecter à la console serveur
docker-compose exec nationsglory-modded rcon-cli

# Puis taper vos commandes :
> op <pseudo>
> stop
> save-all
> list

⚙️ Configuration

Modifier les paramètres (.env)

cd /srv/minecraft/moddé
nano .env

Variables importantes :

MEMORY=2G              # RAM maximale
INIT_MEMORY=1G         # RAM initiale
MINECRAFT_PORT=25565   # Port d'écoute
MAX_PLAYERS=20         # Joueurs max
VIEW_DISTANCE=10       # Distance de vue
GAMEMODE=creative      # Mode par défaut
LEVEL_TYPE=FLAT        # Type de monde

Après modification :

docker-compose down
docker-compose up -d

Modifier server.properties

cd /srv/minecraft/moddé
nano data/server.properties

Puis redémarrer :

docker-compose restart

📊 Monitoring et logs

Logs en temps réel

# Tous les logs
docker-compose logs -f

# Seulement les nouvelles lignes
docker-compose logs -f --tail=100

# Filtrer par mot-clé
docker-compose logs -f | grep ERROR

Fichiers de logs

Les logs sont dans /srv/minecraft/moddé/data/logs/ :

tail -f /srv/minecraft/moddé/data/logs/latest.log

Statistiques conteneur

# Utilisation ressources
docker stats mc-nationsglory

# Processus dans le conteneur
docker top mc-nationsglory

💾 Sauvegardes

Backup manuel

cd /srv/minecraft/moddé

# Arrêter le serveur
docker-compose down

# Créer le backup
sudo tar -czf /srv/minecraft/backups/world-$(date +%Y%m%d-%H%M).tar.gz \
    data/world/ \
    data/ops.txt \
    data/white-list.txt \
    data/banned-*.txt

# Redémarrer
docker-compose up -d

Script de backup automatique

Créer /srv/minecraft/backup.sh :

#!/bin/bash
cd /srv/minecraft/moddé

# Sauvegarder le monde via RCON
docker-compose exec -T nationsglory-modded rcon-cli save-all flush
sleep 5

# Créer l'archive
tar -czf /srv/minecraft/backups/auto-$(date +%Y%m%d-%H%M).tar.gz \
    data/world/ data/ops.txt data/white-list.txt

# Supprimer les backups > 7 jours
find /srv/minecraft/backups/ -name "auto-*.tar.gz" -mtime +7 -delete

echo "Backup terminé: $(date)"

Automatiser avec cron :

sudo crontab -e

# Backup quotidien à 3h du matin
0 3 * * * /srv/minecraft/backup.sh >> /var/log/minecraft-backup.log 2>&1

Restaurer un backup

cd /srv/minecraft/moddé

# Arrêter le serveur
docker-compose down

# Sauvegarder le monde actuel
mv data/world data/world.old

# Restaurer
tar -xzf /srv/minecraft/backups/world-YYYYMMDD-HHMM.tar.gz

# Redémarrer
docker-compose up -d

🔒 Sécurité

Firewall (UFW)

# Autoriser le port Minecraft
sudo ufw allow 25565/tcp

# Vérifier
sudo ufw status

Whitelist (liste blanche)

# Activer la whitelist
docker-compose exec nationsglory-modded rcon-cli whitelist on

# Ajouter un joueur
docker-compose exec nationsglory-modded rcon-cli whitelist add <pseudo>

# Liste des joueurs autorisés
docker-compose exec nationsglory-modded rcon-cli whitelist list

Bannir un joueur

# Bannir
docker-compose exec nationsglory-modded rcon-cli ban <pseudo> <raison>

# Débannir
docker-compose exec nationsglory-modded rcon-cli pardon <pseudo>

🔧 Maintenance

Mettre à jour l'image Docker

cd /srv/minecraft/moddé

# Arrêter le serveur
docker-compose down

# Récupérer la dernière image
docker-compose pull

# Redémarrer
docker-compose up -d

Nettoyer les logs

cd /srv/minecraft/moddé

# Supprimer les anciens logs
rm -f data/logs/*.log.gz
rm -f data/*.log.*

Réinitialiser le monde

⚠️ ATTENTION : Supprime toutes les constructions !

cd /srv/minecraft/moddé

# Backup avant suppression
tar -czf /srv/minecraft/backups/world-before-reset-$(date +%Y%m%d).tar.gz data/world/

# Arrêter le serveur
docker-compose down

# Supprimer le monde
sudo rm -rf data/world/

# Redémarrer (nouveau monde généré)
docker-compose up -d

🌐 Intégration avec Traefik (reverse proxy)

Si vous utilisez Traefik pour gérer vos services :

docker-compose.yml modifié

services:
  nationsglory-modded:
    # ... configuration existante ...
    
    labels:
      # Traefik
      - "traefik.enable=true"
      - "traefik.tcp.routers.minecraft.rule=HostSNI(`*`)"
      - "traefik.tcp.routers.minecraft.entrypoints=minecraft"
      - "traefik.tcp.routers.minecraft.service=minecraft"
      - "traefik.tcp.services.minecraft.loadbalancer.server.port=25565"
    
    networks:
      - traefik-network
      - minecraft-network

networks:
  traefik-network:
    external: true
  minecraft-network:
    driver: bridge

📈 Optimisation des performances

Augmenter la RAM

Dans .env :

MEMORY=4G
INIT_MEMORY=2G

Puis :

docker-compose down
docker-compose up -d

Limiter la view-distance

Dans data/server.properties :

view-distance=8  # Au lieu de 10

Optimiser le GC (Garbage Collector)

Dans docker-compose.yml, section environment :

JVM_OPTS: "-XX:+UseG1GC -XX:MaxGCPauseMillis=50"

🐛 Dépannage

Le serveur ne démarre pas

# Voir les logs complets
docker-compose logs

# Vérifier les permissions
ls -la /srv/minecraft/moddé/data/

# Vérifier que mcpc.jar existe
ls -lh /srv/minecraft/moddé/data/mcpc.jar

Erreur de mémoire

# Augmenter la RAM dans .env
MEMORY=3G

# Redémarrer
docker-compose restart

Port déjà utilisé

# Vérifier quel processus utilise le port
sudo netstat -tuln | grep 25565

# Changer le port dans .env
MINECRAFT_PORT=25566

Problème de permissions

# Réparer les permissions
cd /srv/minecraft/moddé
sudo chown -R 1000:1000 .
sudo chmod -R 755 .

📞 Support

Logs importants

  • Logs Docker : docker-compose logs
  • Logs serveur : /srv/minecraft/moddé/data/logs/latest.log
  • Crash reports : /srv/minecraft/moddé/data/crash-reports/

Commandes de diagnostic

# État du conteneur
docker ps

# Statistiques
docker stats mc-nationsglory

# Espace disque
du -sh /srv/minecraft/moddé/

# Processus Java
docker-compose exec nationsglory-modded ps aux | grep java

🎯 Checklist de déploiement

  • Docker et Docker Compose installés
  • Structure /srv/minecraft créée
  • Fichiers migrés dans /srv/minecraft/moddé
  • Permissions configurées (1000:1000)
  • Fichier .env configuré
  • Port 25565 ouvert dans le firewall
  • docker-compose up -d exécuté
  • Logs vérifiés (pas d'erreurs)
  • Connexion testée depuis un client
  • OP donné au premier joueur
  • Backup automatique configuré
  • Documentation consultée

Version : MCPC+ 1.6.4-R2.1-forge965-B251
Image Docker : itzg/minecraft-server:java8
Production ready :