11 KiB
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
- 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
- Permissions sur /srv
sudo mkdir -p /srv/minecraft
sudo chown $USER:$USER /srv/minecraft
- 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 : ✅