# 🎮 Système de Gestion du Serveur Minecraft ## Architecture Le système utilise une architecture basée sur des **fichiers de signaux** pour permettre à l'application web de contrôler le serveur Minecraft. ``` ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐ │ Interface │────────▶│ API Web │────────▶│ Fichiers de │ │ Web (React) │ │ (Node.js) │ │ Signaux │ └─────────────────┘ └──────────────────┘ └────────┬────────┘ │ │ Surveillance │ (toutes les 3s) ▼ ┌──────────────────┐ ┌─────────────────┐ │ Serveur │◀────────│ Server │ │ Minecraft │ │ Manager │ └──────────────────┘ └─────────────────┘ ``` ## Composants ### 1. Application Web (Frontend) - Interface utilisateur - Boutons : Redémarrer, Arrêter, Sauvegarder - Affichage du statut en temps réel ### 2. API Web (Backend) - Endpoints REST : `/server/restart`, `/server/stop`, `/server/status` - **Crée des fichiers de signaux** au lieu d'envoyer directement les commandes - Fichiers créés dans : `NationsGlory_ServeurBuild_Red/.web-admin/commands/` ### 3. Server Manager (Bash Script) - **Surveille** le dossier `.web-admin/commands/` toutes les 3 secondes - **Détecte** les fichiers de signaux (`restart.flag`, `stop.flag`) - **Exécute** les actions correspondantes - **Gère** le cycle de vie du serveur Minecraft ### 4. Fichiers de Signaux | Fichier | Créé par | Lu par | Action | |---------|----------|--------|--------| | `restart.flag` | API Web | Server Manager | Redémarrer le serveur | | `stop.flag` | API Web | Server Manager | Arrêter le serveur | | `status.json` | Server Manager | API Web | Statut du serveur | | `server.pid` | Server Manager | Server Manager | PID du processus | ## Workflow de Redémarrage ``` 1. Utilisateur clique "Redémarrer" dans l'interface web ↓ 2. Frontend envoie POST /api/server/restart ↓ 3. Backend (API) crée le fichier restart.flag ↓ 4. Server Manager détecte restart.flag (boucle de surveillance) ↓ 5. Server Manager exécute la séquence : a) save-all (sauvegarde du monde) b) say "Redémarrage dans 30s" (avertissement joueurs) c) sleep 20s d) say "Redémarrage dans 10s" e) sleep 10s f) stop (arrêt du serveur) g) sleep 5s h) java -jar mcpc.jar (redémarrage) i) Suppression de restart.flag ↓ 6. Serveur redémarré ``` ## Installation et Démarrage ### Prérequis ```bash # Installer mcrcon (RCON client) sudo apt-get install -y mcrcon # Installer screen (gestion de sessions) sudo apt-get install -y screen ``` ### Démarrage Simple ```bash cd "/home/innotex/Documents/Projet/Serveur NationsGlory/NationsGlory_ServeurBuild_Red" # Lancer le script de démarrage rapide ./quick-start.sh ``` ### Démarrage Manuel ```bash # Créer une session screen screen -S minecraft-manager # Lancer le manager en mode surveillance cd "/home/innotex/Documents/Projet/Serveur NationsGlory/NationsGlory_ServeurBuild_Red" ./server-manager.sh monitor # Détacher : Ctrl+A puis D ``` ### Vérification ```bash # Voir les sessions actives screen -ls # Se reconnecter screen -r minecraft-manager # Voir le statut cat .web-admin/commands/status.json ``` ## Fichiers Créés ``` NationsGlory_ServeurBuild_Red/ ├── server-manager.sh # Script de gestion principal ├── quick-start.sh # Script de démarrage rapide ├── SERVER_MANAGER.md # Documentation détaillée └── .web-admin/ └── commands/ ├── README.md # Description des fichiers ├── restart.flag # Signal de redémarrage ├── stop.flag # Signal d'arrêt ├── status.json # Statut du serveur └── server.pid # PID du processus ``` ## Avantages de cette Architecture ✅ **Découplage** : L'API web n'a pas besoin de connaître les détails du serveur Minecraft ✅ **Fiabilité** : Si l'API plante, le serveur Minecraft continue de tourner ✅ **Flexibilité** : Facile d'ajouter de nouvelles commandes (créer de nouveaux fichiers de signaux) ✅ **Persistance** : Les signaux sont stockés sur disque, pas de perte de commandes ✅ **Logs** : Le server-manager affiche tous les événements en temps réel ✅ **Sécurité** : Pas de shell injection possible via l'API web ## Commandes Utiles ```bash # Lancer le manager ./quick-start.sh # Voir les logs en temps réel screen -r minecraft-manager # Tester manuellement un redémarrage echo "$(date)" > .web-admin/commands/restart.flag # Tester manuellement un arrêt echo "$(date)" > .web-admin/commands/stop.flag # Voir le statut cat .web-admin/commands/status.json # Arrêter le manager proprement screen -S minecraft-manager -X quit ``` ## Dépannage ### Le serveur ne redémarre pas 1. Vérifier que le manager tourne : ```bash screen -ls screen -r minecraft-manager ``` 2. Vérifier les fichiers de signaux : ```bash ls -la .web-admin/commands/ ``` 3. Vérifier mcrcon : ```bash mcrcon -H localhost -P 25575 -p Landau8210 "list" ``` ### L'interface web ne répond pas 1. Vérifier que le backend tourne : ```bash curl http://localhost:4001/api/health ``` 2. Vérifier les logs : ```bash tail -f /tmp/webserver.log ``` ## Notes Importantes ⚠️ **Le server-manager DOIT être actif** pour que l'application web puisse contrôler le serveur ⚠️ Le manager vérifie les signaux **toutes les 3 secondes**, il peut y avoir un léger délai ⚠️ Le redémarrage prend environ **30 secondes** (compte à rebours pour les joueurs) ⚠️ Toujours utiliser l'interface web pour arrêter/redémarrer, ne pas killer le processus directement ## Support Pour toute question ou problème, consultez : - [SERVER_MANAGER.md](./SERVER_MANAGER.md) - Documentation complète du manager - [CHANGELOG.md](../WebNationsGlory_ServeurBuild_Red/CHANGELOG.md) - Historique des modifications - [API_RCON.md](../WebNationsGlory_ServeurBuild_Red/API_RCON.md) - Documentation de l'API RCON