MC Docker Velocity

Um einen Docker-Container mit Debian zu konfigurieren, der vier Minecraft Paper-Server in verschiedenen Versionen und einen Velocity-Proxy-Server enthält, können wir den mcserver_installer verwenden. Diese Anleitung führt durch die Schritte zur Erstellung eines solchen Containers.

Velocity

Voraussetzungen

  • Docker und Docker Compose sollten auf dem System installiert sein.
  • Grundkenntnisse im Umgang mit der Kommandozeile.

Um Docker und Docker Compose zu installieren, führen wir folgende Schritte aus:

  1. Docker installieren:
    • Aktualisieren des Paketmanagements mit sudo apt-get update (für Debian-basierte Systeme).
    • Installieren von Docker mit sudo apt-get install docker-ce docker-ce-cli containerd.io.
    • Starten des Docker-Dienstes mit sudo systemctl start docker und sich selbst zur Docker-Gruppe hinzufügen: sudo usermod -aG docker $USER.
  2. Docker Compose installieren:
    • Nun laden wir die neueste Version von Docker Compose herunter mit
`sudo curl -L "https://github.com/docker/compose/releases/download/$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep -Po '(?<=tag_name": ")[^"]*')" -o /usr/local/bin/docker-compose`.
  • Danach machen wir die Datei ausführbar mit sudo chmod +x /usr/local/bin/docker-compose.

Verifizieren der Installation mit docker --version und docker-compose --version.

1. Erstellen des Dockerfiles

Zunächst erstellen wir ein Dockerfile, das den grundlegenden Aufbau des Containers definiert.

# Basis-Image von Debian
FROM debian:latest

# Autor-Label
LABEL maintainer="dein_name@example.com"

# System aktualisieren und notwendige Pakete installieren
RUN apt-get update && apt-get upgrade -y && \
    apt-get install -y openjdk-17-jre-headless curl wget sudo vim unzip git

# Installiere mcserver_installer
RUN git clone https://github.com/NullSoldier/mcserver_installer.git /opt/mcserver_installer

# Verzeichnisse für die Minecraft-Server erstellen
RUN mkdir -p /minecraft/server1 /minecraft/server2 /minecraft/server3 /minecraft/server4 /minecraft/velocity

# Startskript hinzufügen
COPY start.sh /start.sh
RUN chmod +x /start.sh

# Exponiere die notwendigen Ports
EXPOSE 25565 25566 25567 25568 25577

# Startbefehl beim Containerstart
CMD ["/start.sh"]

2. Startskript erstellen

Erstelle das Startskript start.sh, das die Installation und den Start der Minecraft-Server und des Velocity-Proxys regelt.

#!/bin/bash

# Installiere Paper-Server
cd /opt/mcserver_installer
./mcserver install --path /minecraft/server1 --version latest
./mcserver install --path /minecraft/server2 --version 1.19.2
./mcserver install --path /minecraft/server3 --version 1.18.2
./mcserver install --path /minecraft/server4 --version 1.17.1

# Konfiguriere die Server, um sie mit Velocity zu verbinden
echo "server1:
  motd: '&1Server 1'
  address: localhost:25565
  restricted: false
server2:
  motd: '&2Server 2'
  address: localhost:25566
  restricted: false
server3:
  motd: '&3Server 3'
  address: localhost:25567
  restricted: false
server4:
  motd: '&4Server 4'
  address: localhost:25568
  restricted: false" > /minecraft/velocity/velocity.toml

# Konfiguriere die Ports und Whitelist
sed -i 's/server-port=.*/server-port=25565/' /minecraft/server1/server.properties
sed -i 's/server-port=.*/server-port=25566/' /minecraft/server2/server.properties
sed -i 's/server-port=.*/server-port=25567/' /minecraft/server3/server.properties
sed -i 's/server-port=.*/server-port=25568/' /minecraft/server4/server.properties

# Velocity installieren
cd /minecraft/velocity
wget https://versions.velocitypowered.com/download/velocity-3.1.2-SNAPSHOT-174.jar -O velocity.jar

# Starte die Server
cd /minecraft/server1
java -Xms1G -Xmx1G -jar paper.jar nogui &

cd /minecraft/server2
java -Xms1G -Xmx1G -jar paper.jar nogui &

cd /minecraft/server3
java -Xms1G -Xmx1G -jar paper.jar nogui &

cd /minecraft/server4
java -Xms1G -Xmx1G -jar paper.jar nogui &

# Starte Velocity
cd /minecraft/velocity
java -Xms1G -Xmx1G -jar velocity.jar nogui &

3. Konfiguration von Velocity

Passe die Konfigurationsdatei velocity.toml an, um die Minecraft-Server korrekt zu integrieren.

[servers]
server1 = "localhost:25565"
server2 = "localhost:25566"
server3 = "localhost:25567"
server4 = "localhost:25568"

[forced-hosts]
"yourdomain.com" = ["server1"]

[advanced]
compression_threshold = 256
proxy_protocol = false
online_mode = true
bungeeguard = false
player_info_forwarding_mode = "MODERN"
forwarding_secret = "yoursecret"

4. Docker-Container bauen und starten

  1. Docker-Image bauen:
    docker build -t minecraft-multi-server .
  2. Container starten:
    docker run -d --name mc-server --network host minecraft-multi-server

5. Zugriff auf den Server

Der Velocity-Proxy ist jetzt über den Port 25577 erreichbar, und die vier Minecraft-Server sind über Velocity verbunden. Spieler, die sich mit dem Proxy verbinden, können durch Velocity automatisch zu den verschiedenen Minecraft-Servern weitergeleitet werden.

Hier geht es zur Velocity Dokumentation

Fazit

Mit dieser Anleitung hast du einen Docker-Container erstellt, der vier verschiedene Minecraft Paper-Server-Versionen und einen Velocity-Proxy-Server hostet. Die Konfiguration ermöglicht es, mehrere Server über eine einzige Adresse zu verwalten und Spielern eine nahtlose Erfahrung zu bieten, wenn sie zwischen verschiedenen Welten wechseln.