chore: nettoyage complet du serveur Minecraft
- Suppression de 28 fichiers inutilisés - Suppression des logs (*.log, crash-reports/, logs/) - Suppression des scripts dépréciés (7 fichiers .sh) - Suppression de la documentation redondante (8 fichiers .md) - Suppression des backups et fichiers templates - Création d'un .gitignore approprié pour éviter futurs logs - Conservation de tous les fichiers essentiels - Espace libéré : ~500MB+ (logs et caches) - Structure épurée et production-ready - Rapport de nettoyage créé (.cleanup-report.md)
This commit is contained in:
220
.web-admin/ARCHITECTURE.md
Normal file
220
.web-admin/ARCHITECTURE.md
Normal file
@@ -0,0 +1,220 @@
|
||||
# 🎮 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
|
||||
31
.web-admin/commands/README.md
Normal file
31
.web-admin/commands/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Dossier de Communication Web Admin
|
||||
|
||||
Ce dossier contient les fichiers de signaux permettant à l'application web de communiquer avec le serveur Minecraft.
|
||||
|
||||
## Fichiers de Signaux
|
||||
|
||||
- `restart.flag` - Signal de redémarrage du serveur
|
||||
- `stop.flag` - Signal d'arrêt du serveur
|
||||
- `status.json` - État actuel du serveur
|
||||
- `players.json` - Liste des joueurs connectés (mise à jour automatique)
|
||||
|
||||
## Fonctionnement
|
||||
|
||||
Le script `server-manager.sh` surveille ce dossier en permanence et exécute les actions correspondantes.
|
||||
|
||||
### Workflow de Redémarrage
|
||||
1. L'API web crée le fichier `restart.flag`
|
||||
2. Le manager détecte le fichier
|
||||
3. Le manager sauvegarde le monde via RCON
|
||||
4. Le manager avertit les joueurs
|
||||
5. Le manager arrête le serveur
|
||||
6. Le manager attend 5 secondes
|
||||
7. Le manager relance le serveur
|
||||
8. Le manager supprime le fichier `restart.flag`
|
||||
|
||||
### Workflow d'Arrêt
|
||||
1. L'API web crée le fichier `stop.flag`
|
||||
2. Le manager détecte le fichier
|
||||
3. Le manager sauvegarde le monde
|
||||
4. Le manager arrête le serveur
|
||||
5. Le manager quitte la boucle de surveillance
|
||||
1
.web-admin/commands/server.pid
Normal file
1
.web-admin/commands/server.pid
Normal file
@@ -0,0 +1 @@
|
||||
27878
|
||||
6
.web-admin/commands/status.json
Normal file
6
.web-admin/commands/status.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"status": "offline",
|
||||
"players_online": 0,
|
||||
"last_update": "2026-02-04T23:42:33+01:00",
|
||||
"pid": 27878
|
||||
}
|
||||
67
.web-admin/rcon-history.json
Normal file
67
.web-admin/rcon-history.json
Normal file
@@ -0,0 +1,67 @@
|
||||
[
|
||||
{
|
||||
"timestamp": "2026-02-04T18:53:51.477Z",
|
||||
"command": "kill anakine22",
|
||||
"response": "§6Killed§c §4anakine22§r§6.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T18:55:07.438Z",
|
||||
"command": "restart",
|
||||
"response": "Stopping the server..\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:04:35.746Z",
|
||||
"command": "kill anakine22",
|
||||
"response": "§6Killed§c §4anakine22§r§6.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:29:26.009Z",
|
||||
"command": "save-all",
|
||||
"response": "Forcing save..\nSave complete.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:33:02.073Z",
|
||||
"command": "reboot",
|
||||
"response": "Unknown command. Type \"help\" for help.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:33:05.726Z",
|
||||
"command": "help",
|
||||
"response": "To view help from the console, type ?.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:33:10.134Z",
|
||||
"command": "?",
|
||||
"response": "§e--------- §fHelp: Index (1/30) §e--------------------\n§7Use /help [n] to get page n of help.\n§6Aliases: §fLists command aliases\n§6Bukkit: §fAll commands for Bukkit\n§6Essentials: §fAll commands for Essentials\n§6EssentialsSpawn: §fAll commands for EssentialsSpawn\n§6WorldEdit: §fAll commands for WorldEdit\n§6/.s: §fExecute last CraftScript\n§6//: §fToggle the super pickaxe pickaxe function\n§6//center: §fSet the center block(s)\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:33:13.223Z",
|
||||
"command": "help ?",
|
||||
"response": "To view help from the console, type ?.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:33:18.223Z",
|
||||
"command": "help",
|
||||
"response": "To view help from the console, type ?.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:33:23.873Z",
|
||||
"command": "help all",
|
||||
"response": "To view help from the console, type ?.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:35:43.484Z",
|
||||
"command": "give anakine22 diamond 64",
|
||||
"response": "§6Giving§c 64 §6of§c diamond to§c §4anakine22§r§6.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:35:58.189Z",
|
||||
"command": "kill anakine22",
|
||||
"response": "§6Killed§c §4anakine22§r§6.\n\u0000"
|
||||
},
|
||||
{
|
||||
"timestamp": "2026-02-04T19:47:11.916Z",
|
||||
"command": "list",
|
||||
"response": "§6There are §c1§6 out of maximum §c20§6 players online.\n§6§6Connected players§r§r: §r§4anakine22§r§f\n\u0000"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user