# 🐳 NationsGlory - Déploiement Docker

Serveur Minecraft 1.6.4 MCPC+ conteneurisé avec Docker.

## 🚀 Démarrage rapide

```bash
# Copier la configuration
cp .env.example .env

# Démarrer le serveur
make start
# ou: docker-compose up -d

# Voir les logs
make logs
# ou: docker-compose logs -f
```

Le serveur démarre sur `localhost:25565`

## 📋 Commandes Make disponibles

```bash
make help           # Afficher l'aide
make start          # Démarrer le serveur
make stop           # Arrêter le serveur
make restart        # Redémarrer
make logs           # Voir les logs en temps réel
make status         # État et ressources
make console        # Console serveur (RCON)
make backup         # Créer une sauvegarde
make check          # Vérifier la configuration
```

Voir toutes les commandes : `make help`

## 📁 Structure des volumes

```
/srv/minecraft/moddé/
├── data/              # Volume: données serveur
│   ├── mcpc.jar      # Serveur MCPC+
│   ├── server.properties
│   ├── ops.txt
│   └── logs/
├── mods/             # Volume: mods Forge
├── plugins/          # Volume: plugins Bukkit
├── config/           # Volume: configurations
├── libraries/        # Volume: dépendances Maven
├── world/            # Volume: monde Minecraft
└── backups/          # Sauvegardes locales
```

## ⚙️ Configuration (.env)

Principales variables :

```env
MEMORY=2G              # RAM maximale
INIT_MEMORY=1G         # RAM initiale
MINECRAFT_PORT=25565   # Port d'écoute
MAX_PLAYERS=20         # Joueurs max
GAMEMODE=creative      # Mode de jeu
LEVEL_TYPE=FLAT        # Type de monde
```

Après modification : `make restart`

## 🎮 Gestion du serveur

### Console serveur

```bash
# Se connecter à la console
make console

# Dans la console:
> op <pseudo>
> list
> save-all
> stop
```

### Commandes administratives

```bash
# Donner OP
docker-compose exec nationsglory-modded rcon-cli op <pseudo>

# Liste des joueurs
docker-compose exec nationsglory-modded rcon-cli list

# Sauvegarder
docker-compose exec nationsglory-modded rcon-cli save-all
```

## 💾 Sauvegardes

### Backup manuel

```bash
make backup
```

Crée : `backups/world-YYYYMMDD-HHMM.tar.gz`

### Lister les backups

```bash
make list-backups
```

### Restaurer un backup

```bash
# Arrêter le serveur
make stop

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

# Redémarrer
make start
```

## 🔧 Maintenance

### Nettoyer les logs

```bash
make clean-logs
```

### Supprimer vieux backups (>7j)

```bash
make clean-backups
```

### Mettre à jour Docker image

```bash
make update
make restart
```

### Réinitialiser le monde

⚠️ **DESTRUCTIF** - Supprime toutes les constructions !

```bash
make reset-world
```

## 📊 Monitoring

### Statistiques

```bash
make status    # État général
make stats     # Statistiques détaillées
```

### Logs

```bash
make logs                          # Temps réel
docker-compose logs --tail=100     # 100 dernières lignes
docker-compose logs | grep ERROR   # Erreurs uniquement
```

### Ressources

```bash
docker stats mc-nationsglory
```

## 🚚 Migration vers /srv/minecraft

### Automatique (recommandé)

```bash
sudo make migrate
# ou: sudo ./migrate-to-srv.sh
```

### Manuelle

```bash
# Créer la structure
sudo mkdir -p /srv/minecraft/moddé

# Copier les fichiers
sudo cp -r data mods plugins config libraries /srv/minecraft/moddé/
sudo cp docker-compose.yml .env /srv/minecraft/moddé/

# Permissions
sudo chown -R 1000:1000 /srv/minecraft/moddé

# Démarrer
cd /srv/minecraft/moddé
make start
```

## 🔐 Sécurité

### Whitelist

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

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

### Bannir

```bash
docker-compose exec nationsglory-modded rcon-cli ban <pseudo> <raison>
```

## 🐛 Dépannage

### Le serveur ne démarre pas

```bash
# Vérifier les logs
make logs

# Vérifier la config
make check

# Réparer permissions
make fix-permissions
```

### Port déjà utilisé

Dans `.env` :
```env
MINECRAFT_PORT=25566
```

Puis : `make restart`

### Problème de mémoire

Dans `.env` :
```env
MEMORY=4G
INIT_MEMORY=2G
```

### Réparer les permissions

```bash
make fix-permissions
```

## 📚 Documentation complète

- [README.md](README.md) - Guide complet
- [DEPLOYMENT.md](DEPLOYMENT.md) - Déploiement production
- [QUICKSTART.md](QUICKSTART.md) - Démarrage rapide
- [TECHNICAL_NOTES.md](TECHNICAL_NOTES.md) - Notes techniques

## 🌐 Intégration réseau

### Avec Traefik

Ajouter dans `docker-compose.yml` :

```yaml
labels:
  - "traefik.enable=true"
  - "traefik.tcp.routers.minecraft.rule=HostSNI(`*`)"
  - "traefik.tcp.routers.minecraft.entrypoints=minecraft"

networks:
  - traefik-network
```

### Multi-serveurs (Velocity/BungeeCord)

Structure recommandée :
```
/srv/minecraft/
├── proxy/          # Velocity/BungeeCord
├── moddé/          # Ce serveur
└── survie/         # Autre serveur
```

## ⚡ Optimisation

### Augmenter performances

Dans `.env` :
```env
MEMORY=4G
INIT_MEMORY=2G
VIEW_DISTANCE=8
```

Dans `docker-compose.yml` :
```yaml
JVM_OPTS: "-XX:+UseG1GC -XX:MaxGCPauseMillis=50 -XX:+UnlockExperimentalVMOptions"
```

### Limites Docker

```yaml
deploy:
  resources:
    limits:
      cpus: '2'
      memory: 4G
```

## 📞 Support

### Vérifier la configuration

```bash
make check
```

### Logs importants

- Docker: `make logs`
- Serveur: `data/logs/latest.log`
- Crash: `data/crash-reports/`

### État du système

```bash
make status
make stats
docker ps
docker stats
```

---

**Image Docker** : `itzg/minecraft-server:java8`  
**Serveur** : MCPC+ 1.6.4-R2.1-forge965-B251  
**Mods** : 21 actifs  
**Plugins** : WorldEdit, Essentials
