new file: .env.example

new file:   .gitignore
	new file:   README.md
	new file:   docker-compose.yml
This commit is contained in:
SimolZimol
2025-12-08 20:44:03 +01:00
commit 73c4985ac1
4 changed files with 718 additions and 0 deletions

65
.env.example Normal file
View File

@@ -0,0 +1,65 @@
# ========================================
# MINECRAFT SERVER KONFIGURATION
# ========================================
# ===== Server Software =====
# Mögliche Werte: PAPER, PURPUR, SPIGOT, FABRIC, FORGE, VANILLA, VELOCITY
SERVER_TYPE=PAPER
# Minecraft Version (z.B. 1.21, 1.20.4, 1.19.4, latest)
MC_VERSION=1.21
# ===== Server Name & Info =====
SERVER_NAME=Mein Minecraft Server
MOTD=§6Willkommen auf meinem Server!
SERVER_PORT=25565
# ===== RAM Einstellungen =====
MIN_RAM=2G
MAX_RAM=4G
# ===== Spieler Einstellungen =====
MAX_PLAYERS=20
DIFFICULTY=normal
GAMEMODE=survival
PVP=true
# ===== Welt Einstellungen =====
WORLD_NAME=world
# Optional: Seed für Weltgenerierung (leer lassen für random)
WORLD_SEED=
VIEW_DISTANCE=10
SIMULATION_DISTANCE=8
# ===== Velocity/BungeeCord Integration =====
# Setze auf FALSE wenn Server hinter Velocity/Bungeecord läuft
ONLINE_MODE=TRUE
# Velocity Secret (nur bei Velocity Modern Forwarding)
VELOCITY_SECRET=
# ===== Features =====
ENABLE_COMMAND_BLOCK=true
SPAWN_PROTECTION=16
ALLOW_FLIGHT=false
ENABLE_WHITELIST=false
ENFORCE_WHITELIST=false
# ===== RCON (für Console Zugriff) =====
RCON_PASSWORD=minecraft
RCON_PORT=25575
# ===== Operators (Admins) =====
# Komma-getrennte Liste von Spielernamen oder UUIDs
OPS=
# ===== Timezone =====
TIMEZONE=Europe/Berlin
# ========================================
# SFTP KONFIGURATION (Zugriff auf MC Server Ordner)
# ========================================
SFTP_PORT=2222
SFTP_USER=mcadmin
# ⚠️ WICHTIG: Ändere dieses Passwort!
SFTP_PASSWORD=changeme123

32
.gitignore vendored Normal file
View File

@@ -0,0 +1,32 @@
# .env Datei wird in Coolify über Environment Variables verwaltet
.env
# Node.js (falls alte Generator-Dateien noch da sind)
node_modules/
package-lock.json
# Logs
logs/
*.log
# OS
.DS_Store
Thumbs.db
# IDE
.vscode/
.idea/
*.swp
# Backups
backups/
*.tar.gz
# Alte Generator-Dateien (nicht mehr benötigt)
server.js
views/
public/
Dockerfile
.dockerignore
package.json
create-minecraft-server.sh

495
README.md Normal file
View File

@@ -0,0 +1,495 @@
# 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**

126
docker-compose.yml Normal file
View File

@@ -0,0 +1,126 @@
version: '3.8'
services:
minecraft:
image: itzg/minecraft-server:latest
container_name: minecraft-server
restart: unless-stopped
environment:
# ===== BASIS KONFIGURATION =====
EULA: "TRUE"
# Server Software & Version
TYPE: ${SERVER_TYPE:-PAPER}
VERSION: ${MC_VERSION:-1.21}
# ===== MEMORY EINSTELLUNGEN =====
MEMORY: ${MAX_RAM:-4G}
INIT_MEMORY: ${MIN_RAM:-2G}
USE_AIKAR_FLAGS: "true"
# ===== SERVER EINSTELLUNGEN =====
SERVER_NAME: ${SERVER_NAME:-Minecraft Server}
MOTD: ${MOTD:-§6Minecraft Server §7- §bPowered by Coolify}
MAX_PLAYERS: ${MAX_PLAYERS:-100}
DIFFICULTY: ${DIFFICULTY:-normal}
MODE: ${GAMEMODE:-survival}
PVP: ${PVP:-true}
# ===== WORLD EINSTELLUNGEN =====
LEVEL: ${WORLD_NAME:-world}
SEED: ${WORLD_SEED:-}
MAX_WORLD_SIZE: ${MAX_WORLD_SIZE:-29999984}
VIEW_DISTANCE: ${VIEW_DISTANCE:-10}
SIMULATION_DISTANCE: ${SIMULATION_DISTANCE:-8}
# ===== VELOCITY/BUNGEECORD =====
ONLINE_MODE: ${ONLINE_MODE:-FALSE}
# Für Velocity Modern Forwarding
PAPER_PROXY_SECRET: ${VELOCITY_SECRET:-}
# ===== PERFORMANCE =====
ENABLE_ROLLING_LOGS: "true"
MAX_TICK_TIME: ${MAX_TICK_TIME:-60000}
# ===== PLUGINS/MODS =====
PLUGINS_SYNC_UPDATE: "true"
REMOVE_OLD_MODS: "false"
# ===== FEATURES =====
ENABLE_COMMAND_BLOCK: ${ENABLE_COMMAND_BLOCK:-true}
SPAWN_PROTECTION: ${SPAWN_PROTECTION:-16}
ALLOW_FLIGHT: ${ALLOW_FLIGHT:-false}
ENABLE_WHITELIST: ${ENABLE_WHITELIST:-false}
ENFORCE_WHITELIST: ${ENFORCE_WHITELIST:-false}
# ===== RCON (für Console Zugriff) =====
ENABLE_RCON: "true"
RCON_PASSWORD: ${RCON_PASSWORD:-minecraft}
RCON_PORT: 25575
# ===== TIMEZONE =====
TZ: ${TIMEZONE:-Europe/Berlin}
# ===== OPERATOR =====
OPS: ${OPS:-}
ports:
- "${SERVER_PORT:-25565}:25565"
- "${RCON_PORT:-25575}:25575"
volumes:
- minecraft-data:/data
networks:
- minecraft-network
labels:
- "coolify.managed=true"
healthcheck:
test: mc-health
interval: 30s
timeout: 10s
retries: 3
start_period: 180s
# ===== SFTP SERVER FÜR VOLLZUGRIFF AUF MC SERVER =====
sftp:
image: atmoz/sftp:latest
container_name: minecraft-sftp
restart: unless-stopped
ports:
- "${SFTP_PORT:-2222}:22"
volumes:
- minecraft-data:/home/${SFTP_USER:-mcadmin}/minecraft
- sftp-ssh-keys:/home/${SFTP_USER:-mcadmin}/.ssh
command: ${SFTP_USER:-mcadmin}:${SFTP_PASSWORD:-changeme123}:1000:1000:minecraft
networks:
- minecraft-network
labels:
- "coolify.managed=true"
depends_on:
- minecraft
volumes:
minecraft-data:
driver: local
labels:
- "coolify.managed=true"
sftp-ssh-keys:
driver: local
labels:
- "coolify.managed=true"
networks:
minecraft-network:
driver: bridge
labels:
- "coolify.managed=true"