Complete web dashboard to manage Minecraft vanilla servers with multi-world system and persistent configuration.
This project was developed with assistance from Perplexity AI (powered by Claude Sonnet 4.5)
- Create/Delete: Create and delete independent worlds
- Instant switch: Switch between worlds without data loss
- Persistent configuration: Each world keeps its settings (whitelist, max players, gamerules)
- Individual backups: Backup history per world
- Automatic installation: Download latest Minecraft version from Mojang API
- Secure updates: Automatic backup before server update
- URL validation: File integrity verification before download
- Graphical interface: Install/Update from dashboard
- Smart whitelist: Add players via Mojang API (automatic UUID)
- Quick actions: Kick, ban, remove from whitelist
- Real-time monitoring: Connected players list
- Automatic backups: Save every 30 minutes
- Manual backups: Instant backup button
- Restoration: Restore a world from its backups
- Archiving: Save before world switch/deletion
- Live console: Real-time logs with auto-refresh
- Commands: Send Minecraft commands from interface
- Quick gamerules: Preset buttons (Keep Inventory, Sleep 1 player, etc.)
- Auto-restart: Scheduled restart every 2.5 hours with warnings
- Graceful shutdown: Save + 5-minute warning
- Responsive dashboard: Modern HTML/CSS/JS interface
- Auto-refresh: Status, logs, players updated automatically
- Server configuration: Modify max players, whitelist from interface
curl -sSL https://raw.githubusercontent.com/MDulche/MC-manager-server/main/install.sh | bashThe script will automatically:
- ✅ Install Python 3.12+, Java 21, Git
- ✅ Clone the repository
- ✅ Create folder structure
- ✅ Install Python dependencies
- ✅ Configure automatic startup (crontab)
- ✅ Launch manager after 2 minutes
http://<SERVER_IP>:8000
- System: Ubuntu 20.04+ / Debian 11+
- Python: 3.12 or higher
- Java: 21 (OpenJDK, installed automatically)
- RAM: Minimum 2 GB (4 GB recommended for Minecraft server)
- Disk: 5 GB free minimum
git clone https://github.com/MDulche/MC-manager-server.git ~/minecraft-manager
cd ~/minecraft-managermkdir -p server/current worlds backups/worlds logs manager/web/staticcd manager
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtuvicorn app:app --host 0.0.0.0 --port 8000# Create startup script
cat > ~/minecraft-manager/start.sh << 'EOF'
#!/bin/bash
cd ~/minecraft-manager/manager
source venv/bin/activate
uvicorn app:app --host 0.0.0.0 --port 8000 >> ~/minecraft-manager/logs/manager.log 2>&1
EOF
chmod +x ~/minecraft-manager/start.sh
# Add to crontab
(crontab -l 2>/dev/null; echo "@reboot ~/minecraft-manager/start.sh") | crontab -- Access dashboard:
http://<IP>:8000 - Click "📥 Install Minecraft Server"
- Confirm installation (latest version auto-detected)
- Wait for download (~50 MB)
- Server ready to start
- "World Management" section → Enter world name
- Click "Create new"
- Current world is automatically archived
- Server restarts with new world
- Select a world in dropdown list
- Click "Load"
- Confirm (server must be stopped)
- World config is restored automatically
- "Server Configuration" section
- Check "Enable whitelist"
- Click "Save" (automatic restart)
- Add players in "Whitelist" section
- Enter Minecraft username
- Click "Add"
- UUID is fetched automatically via Mojang API
- Click "🔄 Update Server"
- Check current vs new version
- Confirm (automatic backup before update)
- Wait for download
- Server restarts with new version
- "World Management" section → Select a world
- Click "Backups"
- Choose a backup from list
- Click "Restore"
- Current world is saved before restoration
# View manager logs
tail -f ~/minecraft-manager/logs/manager.log
# Stop manager
pkill -f "uvicorn app:app"
# Restart manager
~/minecraft-manager/start.sh &
# Check if manager is running
ps aux | grep uvicorn# Minecraft server logs
tail -f ~/minecraft-manager/server/current/logs/latest.log
# Stop server (brutal)
pkill -f "java.*server.jar"
# Check if server is running
ps aux | grep "java.*server.jar"# List world backups
ls -lh ~/minecraft-manager/backups/worlds/
# List server backups (during updates)
ls -lh ~/minecraft-manager/backups/server_backup_*minecraft-manager/
├── manager/ # Python FastAPI application
│ ├── app.py # Main routes
│ ├── core/
│ │ └── process_manager.py # Minecraft process management
│ ├── web/
│ │ ├── templates/ # Jinja2 HTML templates
│ │ │ ├── dashboard.html
│ │ │ ├── install_server.html
│ │ │ └── update_server.html
│ │ └── static/ # CSS/JS/Images (empty by default)
│ ├── venv/ # Python virtual environment
│ └── requirements.txt # Python dependencies
│
├── server/
│ └── current/ # Active Minecraft server
│ ├── server.jar
│ ├── eula.txt
│ ├── server.properties
│ ├── whitelist.json
│ └── logs/
│
├── worlds/ # Saved worlds
│ ├── world1/
│ │ ├── config.json # Persistent world config
│ │ └── world/ # Terrain data
│ └── world2/
│
├── backups/
│ ├── worlds/ # World backups (.zip)
│ └── server_backup_*.tar.gz # Server backups (before updates)
│
├── logs/
│ └── manager.log # Web manager logs
│
├── install.sh # Installation script
├── start.sh # Startup script
└── README.md # Documentation
- FastAPI: Asynchronous Python web framework
- Uvicorn: High-performance ASGI server
- APScheduler: Scheduler for automatic backups/restarts
- Subprocess: Java Minecraft process management
- Requests: Mojang/Minecraft API calls
- HTML/CSS/JS Vanilla: Responsive interface without framework
- Server-Sent Events (SSE): Real-time log streaming
- AJAX Fetch API: Asynchronous backend communication
- JSON: World configuration (
config.json) - ZIP: World backup archives
- TAR.GZ: Server backup archives
- ✅ No root execution: Script refuses to run as root
- ✅ UUID validation: Player verification via official Mojang API
- ✅ Automatic backups: Data loss protection
- ✅ Action confirmation: JavaScript popup for critical actions
⚠️ Port 8000 exposed: Use reverse proxy (Nginx) in production
- Single Minecraft server: No multi-server (1 Java instance)
- No mods/plugins: Vanilla server only (Paper/Spigot not supported)
- No authentication: Dashboard accessible without login (add Nginx auth in prod)
- Fixed port 25565: No dynamic server port change
- Paper/Spigot/Fabric support
- User authentication (dashboard login)
- Multi-server (multiple Java instances)
- Upload/Download worlds via interface
- Metrics/Stats (players, TPS, RAM)
- Discord webhook notifications
- Docker support
Contributions are welcome!
- Fork the project
- Create a branch (
git checkout -b feature/improvement) - Commit (
git commit -m 'Add feature X') - Push (
git push origin feature/improvement) - Open a Pull Request
MIT License - see LICENSE for details.
MDulche
- GitHub: @MDulche
- Repository: MC-manager-server
- Mojang/Microsoft - Minecraft
- FastAPI - Web framework
- Uvicorn - ASGI server
- Perplexity AI - Development assistance (Claude Sonnet 4.5)
- Issues: GitHub Issues
- Discussions: GitHub Discussions
⭐ If this project helps you, don't hesitate to star it!
- Création/Suppression : Créer et supprimer des mondes indépendants
- Switch instantané : Basculer entre mondes sans perte de données
- Configuration persistante : Chaque monde garde ses paramètres (whitelist, max joueurs, gamerules)
- Backups individuels : Historique de backups par monde
- Installation automatique : Téléchargement dernière version Minecraft depuis API Mojang
- Mise à jour sécurisée : Backup automatique avant MAJ serveur
- Validation URL : Vérification intégrité fichiers avant téléchargement
- Interface graphique : Installation/MAJ depuis le dashboard
- Whitelist intelligente : Ajout joueurs via API Mojang (UUID automatique)
- Actions rapides : Kick, ban, retrait whitelist
- Consultation en temps réel : Liste joueurs connectés
- Backups automatiques : Sauvegarde toutes les 30 minutes
- Backups manuels : Bouton backup instantané
- Restauration : Restaurer un monde depuis ses backups
- Archivage : Sauvegarde avant switch/suppression monde
- Console live : Logs temps réel avec auto-refresh
- Commandes : Envoi commandes Minecraft depuis l'interface
- Gamerules rapides : Boutons presets (Keep Inventory, Sleep 1 joueur, etc.)
- Auto-restart : Redémarrage programmé toutes les 2h30 avec avertissements
- Arrêt gracieux : Sauvegarde + avertissement 5 minutes
- Dashboard responsive : Interface moderne HTML/CSS/JS
- Refresh automatique : Statut, logs, joueurs mis à jour automatiquement
- Configuration serveur : Modification max joueurs, whitelist depuis l'interface
curl -sSL https://raw.githubusercontent.com/MDulche/MC-manager-server/main/install.sh | bashLe script va automatiquement :
- ✅ Installer Python 3.12+, Java 21, Git
- ✅ Cloner le repository
- ✅ Créer la structure de dossiers
- ✅ Installer les dépendances Python
- ✅ Configurer le démarrage automatique (crontab)
- ✅ Lancer le manager après 2 minutes
http://<IP_DU_SERVEUR>:8000
- Système : Ubuntu 20.04+ / Debian 11+
- Python : 3.12 ou supérieur
- Java : 21 (OpenJDK, installé automatiquement)
- RAM : Minimum 2 Go (4 Go recommandé pour serveur Minecraft)
- Disque : 5 Go libres minimum
git clone https://github.com/MDulche/MC-manager-server.git ~/minecraft-manager
cd ~/minecraft-managermkdir -p server/current worlds backups/worlds logs manager/web/staticcd manager
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtuvicorn app:app --host 0.0.0.0 --port 8000# Créer script de démarrage
cat > ~/minecraft-manager/start.sh << 'EOF'
#!/bin/bash
cd ~/minecraft-manager/manager
source venv/bin/activate
uvicorn app:app --host 0.0.0.0 --port 8000 >> ~/minecraft-manager/logs/manager.log 2>&1
EOF
chmod +x ~/minecraft-manager/start.sh
# Ajouter au crontab
(crontab -l 2>/dev/null; echo "@reboot ~/minecraft-manager/start.sh") | crontab -- Accéder au dashboard :
http://<IP>:8000 - Cliquer sur "📥 Installer Serveur Minecraft"
- Confirmer l'installation (dernière version automatiquement détectée)
- Attendre le téléchargement (~50 Mo)
- Le serveur sera prêt à démarrer
- Section "Gestion mondes" → Entrer nom du monde
- Cliquer "Créer nouveau"
- Le monde actuel est automatiquement archivé
- Le serveur redémarre avec le nouveau monde
- Sélectionner un monde dans la liste déroulante
- Cliquer "Charger"
- Confirmer (le serveur doit être arrêté)
- La config du monde est restaurée automatiquement
- Section "Configuration serveur"
- Cocher "Activer whitelist"
- Cliquer "Sauvegarder" (redémarrage automatique)
- Ajouter joueurs dans "Section Whitelist"
- Entrer le pseudo Minecraft
- Cliquer "Ajouter"
- L'UUID est récupéré automatiquement via API Mojang
- Cliquer "🔄 Mettre à Jour Serveur"
- Vérifier version actuelle vs nouvelle
- Confirmer (backup automatique avant MAJ)
- Attendre le téléchargement
- Le serveur redémarre avec la nouvelle version
- Section "Gestion mondes" → Sélectionner un monde
- Cliquer "Backups"
- Choisir un backup dans la liste
- Cliquer "Restaurer"
- Le monde actuel est sauvegardé avant restauration
# Voir les logs du manager
tail -f ~/minecraft-manager/logs/manager.log
# Arrêter le manager
pkill -f "uvicorn app:app"
# Redémarrer le manager
~/minecraft-manager/start.sh &
# Vérifier si le manager tourne
ps aux | grep uvicorn# Logs serveur Minecraft
tail -f ~/minecraft-manager/server/current/logs/latest.log
# Arrêter le serveur (brutal)
pkill -f "java.*server.jar"
# Vérifier si le serveur tourne
ps aux | grep "java.*server.jar"# Lister les backups de mondes
ls -lh ~/minecraft-manager/backups/worlds/
# Lister les backups serveur (lors des MAJ)
ls -lh ~/minecraft-manager/backups/server_backup_*minecraft-manager/
├── manager/ # Application Python FastAPI
│ ├── app.py # Routes principales
│ ├── core/
│ │ └── process_manager.py # Gestion processus Minecraft
│ ├── web/
│ │ ├── templates/ # Templates HTML Jinja2
│ │ │ ├── dashboard.html
│ │ │ ├── install_server.html
│ │ │ └── update_server.html
│ │ └── static/ # CSS/JS/Images (vide par défaut)
│ ├── venv/ # Environnement virtuel Python
│ └── requirements.txt # Dépendances Python
│
├── server/
│ └── current/ # Serveur Minecraft actif
│ ├── server.jar
│ ├── eula.txt
│ ├── server.properties
│ ├── whitelist.json
│ └── logs/
│
├── worlds/ # Mondes sauvegardés
│ ├── monde1/
│ │ ├── config.json # Config persistante du monde
│ │ └── world/ # Données terrain
│ └── monde2/
│
├── backups/
│ ├── worlds/ # Backups des mondes (.zip)
│ └── server_backup_*.tar.gz # Backups serveur (avant MAJ)
│
├── logs/
│ └── manager.log # Logs du manager web
│
├── install.sh # Script d'installation
├── start.sh # Script de démarrage
└── README.md # Documentation
- FastAPI : Framework web Python asynchrone
- Uvicorn : Serveur ASGI haute performance
- APScheduler : Scheduler pour backups/restarts automatiques
- Subprocess : Gestion processus Java Minecraft
- Requests : Appels API Mojang/Minecraft
- HTML/CSS/JS Vanilla : Interface responsive sans framework
- Server-Sent Events (SSE) : Streaming logs temps réel
- AJAX Fetch API : Communication asynchrone avec backend
- JSON : Configuration mondes (
config.json) - ZIP : Archives backups mondes
- TAR.GZ : Archives backups serveur
- ✅ Pas d'exécution root : Le script refuse de tourner en root
- ✅ Validation UUID : Vérification joueurs via API Mojang officielle
- ✅ Backups automatiques : Protection perte de données
- ✅ Confirmation actions : Popup JavaScript pour actions critiques
⚠️ Port 8000 exposé : Utiliser un reverse proxy (Nginx) en production
- Un seul serveur Minecraft : Pas de multi-serveur (1 instance Java)
- Pas de mods/plugins : Serveur vanilla uniquement (Paper/Spigot non supporté)
- Pas d'authentification : Dashboard accessible sans login (ajouter Nginx auth en prod)
- Port 25565 fixe : Pas de changement dynamique du port serveur
- Support Paper/Spigot/Fabric
- Authentification utilisateurs (login dashboard)
- Multi-serveurs (plusieurs instances Java)
- Upload/Download mondes via interface
- Metrics/Stats (joueurs, TPS, RAM)
- Discord webhook notifications
- Support Docker
Les contributions sont bienvenues !
- Fork le projet
- Créer une branche (
git checkout -b feature/amelioration) - Commit (
git commit -m 'Ajout fonctionnalité X') - Push (
git push origin feature/amelioration) - Ouvrir une Pull Request
MIT License - voir LICENSE pour détails.
MDulche
- GitHub: @MDulche
- Repository: MC-manager-server
- Mojang/Microsoft - Minecraft
- FastAPI - Framework web
- Uvicorn - Serveur ASGI
- Perplexity AI - Assistance au développement (Claude Sonnet 4.5)
- Issues : GitHub Issues
- Discussions : GitHub Discussions
⭐ Si ce projet t'aide, n'hésite pas à mettre une étoile !