Minecraft Server Tutorial Docker

· 4 Minuten zu lesen
Minecraft Server Tutorial Docker

Ich spiele mit meinem Sohn schon seit einiger Zeit Minecraft. Wir haben eine schöne kleine Singleplayer-Welt und bauen und erkunden zusammen. Das macht super viel Spaß.
Aus einer sicheren Welt ohne Fallschaden und Monstern wurde dann eine leichte Welt mit Monstern, Feuer und Schaden und schließlich eine „normale“ Welt. Nebenbei bauen wir auf einer Kreativ-Welt und haben dort unseren Spaß.

Nun entdeckt er Minigames und hat Spaß am PvP, wie Bedwars und Co.
Aber wir kehren immer wieder zurück zu unserer Welt, bauen, farmen und entdecken.

Viele seiner Kumpel spielen „lokal“, aber eben nicht im Internet. Nach fünf Minuten auf einem öffentlichen Server weiß man auch warum …

Daher die Idee: Einen kinderfreundlichen Familienserver betreiben.

  • Keine Schimpfwörter im Chat
  • Kein Betrügen
  • Kein Griefing
  • Kein PvP (außer wenn beide es wollen)
  • Entdecken, erkunden und gemeinsam Spaß haben
  • Leichter Einstieg mit sicherer Umgebung und Abendteuern wenn man es wünscht

Ich habe das direkt mal umgesetzt und poste hier das passende Tutorial dazu damit ihr das einfach nachbauen könnt.

Grundlage ist ein kleiner vServer und Debian 13. Den Minecraft Server betreiben wir dann mit Docker und Paper.


Server vorbereiten

Dank ADHS geht’s los: schnell mal einen Minecraft-Server aufsetzen!

1) Server bestellen

Ich habe mich für Netcup entschieden, die haben ein sehr gutes Preis/Leistungsverhältnis. Es gab gerade ein Angebot:
6 Dedicated CPU, 12 GB RAM, 512 GB NVMe SSD für 12,40 EUR / Monat.*

2) Debian installieren

Über das Server-Control-Panel Debian 13 installieren.

3) Grundabsicherung

Fail2Ban & UFW installieren:

UFW ist eine Firewall und erlaubt es uns Anfragen zu blocken, UFW schaut sich die Log-Dateien an und bannt z.B. IP-Adressen die zu oft versuchen sich einzuloggen.

sudo apt update
sudo apt install -y fail2ban ufw

Firewall-Regeln setzen (SSH nur von meinen Management-IPs):

# SSH: nur die freigegebenen IPs dürfen sich verbinden
sudo ufw allow from xx.xx.xx.xx    to any port 22 proto tcp
sudo ufw allow from xx.xx.xx.xx    to any port 22 proto tcp
sudo ufw allow from xx.xx.xx.xx    to any port 22 proto tcp
sudo ufw allow from 2a03:xxxx:xxxx::1 to any port 22 proto tcp

# Alternativ SSH erlauben, aber dann bitte absichern. 
sudo ufw allow 22/tcp

# Minecraft erlauben
sudo ufw allow 25565/tcp

# (optional, falls du später Webdienste nutzt)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Standard-Policies
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Aktivieren
sudo ufw enable

# Kontrolle
sudo ufw status verbose

Fail2Ban startet unter Debian 13 automatisch und schützt vor SSH-Brute-Force Attacken.

SSH härten (empfohlen):
Ändere die folgende Einstellung in der sshd_config

sudo nano /etc/ssh/sshd_config
# Empfohlen:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
sudo systemctl restart ssh

Minecraft mit Docker starten (Minimal, ohne Plugins)

Mit Docker ist es am einfachsten: schlank, stabil, leicht zu updaten.

1) Docker & Compose installieren

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Funktionstest & Benutzer freischalten:

sudo usermod -aG docker $USER   # danach neu einloggen

Dann kann der normale User den docker Befehl nutzen ohne das sudo.

2) Ordnerstruktur anlegen

sudo mkdir -p /opt/wuerfelwiese/{paper,plugins,backups}
sudo chown -R $USER:$USER /opt/wuerfelwiese
cd /opt/wuerfelwiese

3) docker-compose.yml erstellen

Lege die Datei docker-compose.yml an und füge folgendes ein:
nano docker-compose.yml

services:
  paper:
    image: itzg/minecraft-server:java21
    container_name: wuerfelwiese-paper
    ports:
      - "25565:25565"   # Minecraft
    environment:
      EULA: "TRUE"
      TYPE: "PAPER"
      VERSION: "latest"         # in den Logs prüfen, ob es Paper für die Zielversion gibt
      MEMORY: "6G"
      ENABLE_WHITELIST: "TRUE"
      WHITELIST: "DeinNick"     # weitere später mit 'whitelist add'
      ONLINE_MODE: "TRUE"       # Auth an (für Java-Edition)
      VIEW_DISTANCE: 8
      SIMULATION_DISTANCE: 6
      SPAWN_PROTECTION: 0
      TZ: "Europe/Berlin"
    volumes:
      - ./paper:/data           # Serverdaten
      - ./plugins:/data/plugins # (leer, da wir vorerst ohne Plugins starten)
    restart: unless-stopped

4) Server starten

cd /opt/wuerfelwiese
docker compose up -d

5) Logs & Konsole

Logs live ansehen:

docker logs -f wuerfelwiese-paper

Befehle senden (RCON-CLI im Container):

# einmalig interaktiv
docker exec -it wuerfelwiese-paper rcon-cli
# ...darin Befehle wie:
#   whitelist add Spielername
#   save-all
#   reload
#   stop
# beenden mit: Ctrl+C oder 'exit'

Einzelbefehle direkt an die Minecraft Console schicken:

docker exec -i wuerfelwiese-paper rcon-cli whitelist add Spielername
docker exec -i wuerfelwiese-paper rcon-cli save-all
docker exec -i wuerfelwiese-paper rcon-cli reload
docker exec -i wuerfelwiese-paper rcon-cli stop

Fertig

Jetzt habt ihr eine sehr schlanke basis Minecraft installation auf Docker basis. Alles was ihr braucht liegt unter /opt/"Servername". Dort könnt ihr Plugins hochladen und die Einstellungen bearbeiten. Dort findet ihr auch die server.properties
Der Server startet automatisch beim Neustarten und falls er mal abstützt.

📂 Ordnerstruktur (wo liegt was?)

/opt/wuerfelwiese
├── docker-compose.yml        # Docker-Konfiguration
├── paper/                    # Serverdaten (gemountet als /data)
│   ├── world/                # Hauptwelt
│   ├── world_nether/         # Nether
│   ├── world_the_end/        # End
│   ├── logs/                 # Server-Logs (Textdateien)
│   ├── server.properties     # Grundkonfiguration
│   ├── whitelist.json        # Whitelist
│   └── ...                   # weitere Konfig-/Datenfiles
├── plugins/                  # Plugins (JARs) – aktuell leer
└── backups/                  # Backups (eigene Cronjobs/Strategie)
Sichern: Für Backup/Migration reicht es, /opt/wuerfelwiese/ zu sichern.

📝 Cheat-Sheet: wichtigste Befehle

Server steuern (Docker)

# Starten
docker compose up -d

# Stoppen
docker compose down

# Neustarten
docker compose restart

# Logs live ansehen
docker logs -f wuerfelwiese-paper

Serverbefehle (über rcon-cli)

# Interaktive Konsole öffnen
docker exec -it wuerfelwiese-paper rcon-cli

# Einzelbefehle:
docker exec -i wuerfelwiese-paper rcon-cli whitelist add Spielername
docker exec -i wuerfelwiese-paper rcon-cli save-all
docker exec -i wuerfelwiese-paper rcon-cli reload
docker exec -i wuerfelwiese-paper rcon-cli stop

Tipp: save-all legt die Welt sofort auf die Platte. Für automatisierte Backups kann man später einen Cronjob bauen (z. B. täglich save-all + tar in backups/).


🔄 Autostart bei Host-Reboot

Ja. Durch restart: unless-stopped im Compose-Dienst startet der Server automatisch, wenn:

  • der Host neu bootet oder
  • der Docker-Daemon neu startet.

Wenn du den Container manuell gestoppt hast (docker compose down), bleibt er aus, bis du ihn wieder startest.


Nächstes Mal

Im nächsten Schritt kommen Plugins, Welten-Vorrendern und eine Backup-Strategie dazu – damit WürfelWiese für Familien richtig gemütlich wird. 🧱🌱

* Bei Bestellung über diesen Link erhalte ich eine kleine Provision. Der Preis für euch ändert sich nicht.