Files
NationsGlory_ServeurBuild_Red/DEPLOYMENT.md

539 lines
11 KiB
Markdown

# 🚀 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 <pseudo>
> 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 <pseudo>
# 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 <pseudo> <raison>
# Débannir
docker-compose exec nationsglory-modded rcon-cli pardon <pseudo>
```
## 🔧 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** : ✅