# Minecraft Server Generator für Coolify Web-basierter Generator für Minecraft Server mit Velocity-Netzwerk Integration und SFTP-Zugriff. Direkt in Coolify deploybar! ## 🎯 Features - ✅ **Web-Interface** - Benutzerfreundliche Oberfläche zur Server-Erstellung - ✅ **Automatische Generierung** - Download fertiger Docker Compose Konfigurationen - ✅ **Velocity Integration** - Perfekt für Proxy-Netzwerke konfiguriert - ✅ **SFTP Zugriff** - Einfache Plugin-Verwaltung über FileZilla/WinSCP - ✅ **Persistent Volumes** - Daten bleiben bei Updates erhalten - ✅ **Docker Compose Ready** - Direkt in Coolify nutzbar - ✅ **Health Checks** - Automatische Überwachung - ✅ **Performance Optimiert** - Aikar Flags und Best Practices ## 🚀 Schnellstart ### 1. Generator in Coolify deployen #### Auf Gitea hochladen: ```bash # Repository initialisieren git init git add . git commit -m "Initial commit: Minecraft Server Generator" # Auf Gitea pushen git remote add origin https://dein-gitea-server/user/minecraft-generator.git git push -u origin main ``` #### In Coolify importieren: 1. Gehe zu Coolify Dashboard 2. **New Resource** → **Docker Compose** 3. Verbinde dein Gitea Repository 4. Branch: `main` 5. **Deploy!** Der Generator läuft dann auf Port 3000 und ist über deine Coolify-Domain erreichbar. ### 2. Minecraft Server erstellen 1. Öffne den Generator in deinem Browser 2. Fülle das Formular aus: - Server Name (z.B. lobby, survival, minigames) - Minecraft Version - Server Software (Paper empfohlen) - RAM Einstellungen - Velocity Secret - SFTP Zugangsdaten 3. Klicke auf **"Server-Dateien generieren"** 4. ZIP-Datei wird automatisch heruntergeladen ### 3. Server deployen ```bash # ZIP entpacken unzip minecraft-lobby.zip # Neues Git Repo erstellen cd minecraft-lobby git init git add . git commit -m "Initial commit: Lobby Server" # Auf Gitea pushen git remote add origin https://dein-gitea-server/user/mc-lobby.git git push -u origin main ``` Dann in Coolify: 1. **New Resource** → **Docker Compose** 2. Gitea Repository verbinden 3. **Deploy!** ## 📖 Voraussetzungen - Coolify Installation - Gitea oder anderer Git-Server - Docker & Docker Compose (automatisch durch Coolify) ## 📁 Generierte Struktur Nach dem Ausführen wird folgende Struktur erstellt: ``` [server-name]/ ├── docker-compose.yml # Docker Compose Konfiguration ├── .coolify.yml # Coolify spezifische Config ├── config/ # Server Konfiguration │ ├── paper-global.yml # Velocity Integration │ ├── spigot.yml │ └── server.properties ├── deploy.sh # Deployment Script ├── README.md # Server-spezifische Dokumentation └── .gitignore ``` ## 🌐 Velocity Netzwerk Setup ### 1. Backend Server (Lobby, Survival, etc.) Jeder Backend-Server wird automatisch mit Velocity-Support konfiguriert: ```yaml proxies: velocity: enabled: true online-mode: false secret: 'dein-secret' ``` ### 2. Velocity Proxy Konfiguration Füge deine Server zur `velocity.toml` hinzu: ```toml [servers] lobby = "server1.coolify:25565" survival = "server2.coolify:25566" minigames = "server3.coolify:25567" try = [ "lobby" ] [forced-hosts] "lobby.deine-domain.de" = ["lobby"] "survival.deine-domain.de" = ["survival"] "minigames.deine-domain.de" = ["minigames"] [player-info-forwarding] mode = "modern" secret = "dein-gemeinsames-secret" ``` ## 📦 SFTP Plugin-Verwaltung Jeder Server bekommt einen eigenen SFTP-Container für einfache Plugin-Verwaltung. ### Verbindung mit FileZilla 1. Öffne FileZilla 2. **Host:** `sftp://dein-server.de` 3. **Port:** Der konfigurierte SFTP Port (z.B. 2222) 4. **Benutzer:** Dein SFTP Username 5. **Passwort:** Dein SFTP Passwort 6. Verbinden! ### Verbindung mit WinSCP 1. Öffne WinSCP 2. Neuer Session - Protokoll: SFTP - Host: dein-server.de - Port: SFTP Port - Benutzername & Passwort 3. Anmelden! ### Ordnerstruktur über SFTP ``` /home/[username]/ ├── plugins/ # Hier Plugins hochladen (.jar Dateien) ├── config/ # Konfigurationsdateien └── data/ # Weltdaten (nur lesend) ``` ### Plugins installieren 1. Verbinde dich via SFTP 2. Navigiere zu `/plugins` 3. Lade deine `.jar` Dateien hoch 4. Starte Server neu in Coolify oder via SSH: ```bash docker-compose restart minecraft-[server-name] ``` ## 🔧 Deployment in Coolify ### Option 1: Über Git Repository (Empfohlen) ```bash # In deinem Server-Ordner cd [server-name] # Git initialisieren git init git add . git commit -m "Initial commit: [server-name]" # Zu deinem Repository pushen git remote add origin https://github.com/dein-user/dein-repo.git git push -u origin main ``` Dann in Coolify: 1. **New Resource** → **Docker Compose** 2. Git Repository verbinden 3. Branch auswählen (main) 4. Deploy! ### Option 2: Direkt auf Coolify Server ```bash # Kopiere Ordner auf Coolify Server scp -r [server-name] user@coolify-server:/pfad/ # SSH auf Server ssh user@coolify-server # Deploy cd /pfad/[server-name] ./deploy.sh ``` ## 🎮 Mehrere Server erstellen Du kannst das Skript mehrmals ausführen für verschiedene Server: ```bash # Lobby Server ./create-minecraft-server.sh # Input: lobby, 1.21, Paper, 2GB-4GB, Port 25565, SFTP Port 2222 # Survival Server ./create-minecraft-server.sh # Input: survival, 1.21, Paper, 4GB-8GB, Port 25566, SFTP Port 2223 # Minigames Server ./create-minecraft-server.sh # Input: minigames, 1.20.4, Paper, 2GB-4GB, Port 25567, SFTP Port 2224 ``` Jeder Server bekommt: - Eigenen Docker Container - Eigene Volumes (Daten persistent) - Eigenen SFTP Zugang - Eigenen Port ## 🛠️ Server Management ### Logs ansehen (in Coolify oder SSH) ```bash # Alle Logs docker-compose logs -f # Nur Minecraft Server docker-compose logs -f minecraft-[server-name] # Nur SFTP Server docker-compose logs -f sftp-[server-name] ``` ### Server Console ```bash # Interaktive Minecraft Console docker exec -it mc-[server-name] rcon-cli # Dann kannst du Commands ausführen: > list > op Username > whitelist add Username ``` ### Backup erstellen ```bash # Erstelle Backup Ordner mkdir -p backups # Backup docker run --rm \ -v mc-[server-name]-data:/data \ -v $(pwd)/backups:/backup \ alpine tar czf /backup/backup-$(date +%Y%m%d-%H%M%S).tar.gz -C /data . ``` ### Server neustarten ```bash docker-compose restart minecraft-[server-name] ``` ### Server stoppen ```bash docker-compose down ``` ### Server starten ```bash docker-compose up -d ``` ## 🔒 Sicherheit Best Practices ### 1. Firewall Konfiguration Nur Velocity Proxy sollte sich zu Backend-Servern verbinden können: ```bash # Auf Backend-Server (z.B. mit ufw) sudo ufw allow from [VELOCITY-PROXY-IP] to any port 25565 sudo ufw deny 25565 # Blockiere von allen anderen ``` ### 2. Sichere Secrets verwenden ```bash # Generiere sichere Secrets openssl rand -base64 32 ``` Nutze diesen Output für `forwarding-secret`. ### 3. SFTP Passwörter ändern Nach dem ersten Setup, ändere SFTP Passwörter in der `docker-compose.yml`: ```yaml command: ${SFTP_USER}:neues-sicheres-passwort:1000:1000:plugins,config,data ``` ### 4. Regelmäßige Updates ```bash # Docker Images updaten docker-compose pull docker-compose up -d ``` ## 📊 Performance Tipps ### 1. Aikar Flags (bereits aktiviert) Die optimalen JVM Flags sind bereits gesetzt via `USE_AIKAR_FLAGS: "true"`. ### 2. View Distance anpassen In `server.properties` oder als Environment Variable: ```yaml VIEW_DISTANCE: 8 # Reduzieren bei Lag SIMULATION_DISTANCE: 6 ``` ### 3. Paper Timings Auf dem Server: ``` /timings on # Warte 10-15 Minuten /timings paste ``` Analysiere die URL um Lag-Quellen zu finden. ### 4. Chunk-Loading optimieren In `paper-world-defaults.yml`: ```yaml chunks: auto-save-interval: 6000 # 5 Minuten statt 1 ``` ## 🐛 Troubleshooting ### Problem: Server startet nicht **Lösung:** ```bash # Prüfe Logs docker-compose logs minecraft-[server-name] # Häufige Fehler: # - Port bereits belegt → Ändere Port in docker-compose.yml # - Zu wenig RAM → Erhöhe Memory Limits # - EULA nicht akzeptiert → Sollte automatisch sein, prüfe EULA: "TRUE" ``` ### Problem: Velocity Verbindung fehlgeschlagen **Lösung:** 1. Prüfe ob Secret in Velocity und Paper identisch ist 2. Stelle sicher dass `online-mode=false` auf Backend-Server 3. Teste Netzwerk-Verbindung: ```bash # Auf Velocity Server telnet backend-server 25565 ``` ### Problem: SFTP Login funktioniert nicht **Lösung:** ```bash # Prüfe SFTP Container Status docker-compose ps sftp-[server-name] # Prüfe Logs docker-compose logs sftp-[server-name] # Teste Verbindung sftp -P [SFTP-PORT] [USER]@[HOST] ``` ### Problem: Plugins werden nicht geladen **Lösung:** 1. Prüfe ob Plugin kompatibel mit Minecraft Version ist 2. Checke Server Logs nach Fehlern: ```bash docker-compose logs minecraft-[server-name] | grep ERROR ``` 3. Stelle sicher dass `.jar` Dateien im richtigen Ordner sind 4. Restart nach Plugin-Installation: ```bash docker-compose restart minecraft-[server-name] ``` ## 📚 Empfohlene Plugins ### Essentials - **LuckPerms** - Permission Management - **EssentialsX** - Core Commands - **Vault** - Economy API ### Velocity Netzwerk - **LiteBans** - Network-wide Bans - **TAB** - Tablist & Scoreboard - **AdvancedPortals** - Server Portale - **ViaVersion** - Multi-Version Support ### Performance & Optimization - **Chunky** - Pre-generate Chunks - **FarmControl** - Optimize Farms - **ClearLag** - Remove Entity Lag ### Fun & Features - **Citizens** - NPCs - **WorldEdit** - Building Tools - **CoreProtect** - Rollback System - **Geyser** - Bedrock Support (optional) ## 🔄 Update Prozess ### Server Software updaten ```bash # In docker-compose.yml VERSION ändern VERSION: "1.21.1" # Neustart docker-compose pull docker-compose up -d ``` ### Plugins updaten 1. Via SFTP zu `/plugins` verbinden 2. Alte `.jar` löschen 3. Neue `.jar` hochladen 4. Server neustarten ## 📞 Support & Community - **Paper Docs:** https://docs.papermc.io/ - **Velocity Docs:** https://docs.papermc.io/velocity - **Coolify Docs:** https://coolify.io/docs ## 📝 Changelog ### Version 1.0.0 (Initial Release) - ✅ Automatische Server-Erstellung - ✅ Velocity Integration - ✅ SFTP Support - ✅ Docker Compose Setup - ✅ Coolify Kompatibilität - ✅ Health Checks - ✅ Persistent Volumes ## 🙏 Credits Erstellt für einfaches Minecraft Server Management mit Coolify. **Verwendete Docker Images:** - `itzg/minecraft-server` - Minecraft Server - `atmoz/sftp` - SFTP Server --- **Made with ❤️ for the Minecraft Community**