539 lines
11 KiB
Markdown
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** : ✅
|