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:
y.campiontrebouta@innotexnas.ovh
2026-02-04 23:43:04 +01:00
parent 2589fc7859
commit 331fd94df6
60 changed files with 1041 additions and 2149 deletions

220
.web-admin/ARCHITECTURE.md Normal file
View 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

View 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

View File

@@ -0,0 +1 @@
27878

View File

@@ -0,0 +1,6 @@
{
"status": "offline",
"players_online": 0,
"last_update": "2026-02-04T23:42:33+01:00",
"pid": 27878
}

View 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"
}
]