# 🚀 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** ```bash # 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 ``` 2. **Permissions sur /srv** ```bash sudo mkdir -p /srv/minecraft sudo chown $USER:$USER /srv/minecraft ``` 3. **Ports disponibles** - Port 25565 (Minecraft) - Ou configurer un autre port dans docker-compose.yml ## 🚚 Migration du serveur ### MĂ©thode 1 : Script automatique (recommandĂ©) ```bash # 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 ```bash # 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 ```bash # 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 ```bash 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 ```bash # 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 ```bash # Se connecter Ă  la console serveur docker-compose exec nationsglory-modded rcon-cli # Puis taper vos commandes : > op > stop > save-all > list ``` ## ⚙ Configuration ### Modifier les paramĂštres (.env) ```bash cd /srv/minecraft/moddĂ© nano .env ``` Variables importantes : ```env 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 : ```bash docker-compose down docker-compose up -d ``` ### Modifier server.properties ```bash cd /srv/minecraft/moddĂ© nano data/server.properties ``` Puis redĂ©marrer : ```bash docker-compose restart ``` ## 📊 Monitoring et logs ### Logs en temps rĂ©el ```bash # 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/` : ```bash tail -f /srv/minecraft/moddĂ©/data/logs/latest.log ``` ### Statistiques conteneur ```bash # Utilisation ressources docker stats mc-nationsglory # Processus dans le conteneur docker top mc-nationsglory ``` ## đŸ’Ÿ Sauvegardes ### Backup manuel ```bash 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` : ```bash #!/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 : ```bash sudo crontab -e # Backup quotidien Ă  3h du matin 0 3 * * * /srv/minecraft/backup.sh >> /var/log/minecraft-backup.log 2>&1 ``` ### Restaurer un backup ```bash 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) ```bash # Autoriser le port Minecraft sudo ufw allow 25565/tcp # VĂ©rifier sudo ufw status ``` ### Whitelist (liste blanche) ```bash # Activer la whitelist docker-compose exec nationsglory-modded rcon-cli whitelist on # Ajouter un joueur docker-compose exec nationsglory-modded rcon-cli whitelist add # Liste des joueurs autorisĂ©s docker-compose exec nationsglory-modded rcon-cli whitelist list ``` ### Bannir un joueur ```bash # Bannir docker-compose exec nationsglory-modded rcon-cli ban # DĂ©bannir docker-compose exec nationsglory-modded rcon-cli pardon ``` ## 🔧 Maintenance ### Mettre Ă  jour l'image Docker ```bash 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 ```bash 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 ! ```bash 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Ă© ```yaml 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` : ```env MEMORY=4G INIT_MEMORY=2G ``` Puis : ```bash docker-compose down docker-compose up -d ``` ### Limiter la view-distance Dans `data/server.properties` : ```properties view-distance=8 # Au lieu de 10 ``` ### Optimiser le GC (Garbage Collector) Dans `docker-compose.yml`, section `environment` : ```yaml JVM_OPTS: "-XX:+UseG1GC -XX:MaxGCPauseMillis=50" ``` ## 🐛 DĂ©pannage ### Le serveur ne dĂ©marre pas ```bash # 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 ```bash # Augmenter la RAM dans .env MEMORY=3G # RedĂ©marrer docker-compose restart ``` ### Port dĂ©jĂ  utilisĂ© ```bash # VĂ©rifier quel processus utilise le port sudo netstat -tuln | grep 25565 # Changer le port dans .env MINECRAFT_PORT=25566 ``` ### ProblĂšme de permissions ```bash # 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 ```bash # É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** : âœ