Minecraftserver mit PaperMC im LXC Container unter Proxmox

Moin!

Diesmal ein kleines How-To zum Thema Minecraft.
Was Minecraft ist, brauche ich wahrscheinlich keinem zu erklären, daher lasse ich das einfach mal sein.
Wir bedienen uns dafür bei PaperMC. PaperMC ist eine Alternative zum offiziellen Server von Mojang. Es ist deutlich resourcensparender und bringt eine einfache, sowie unkomplizierte Unterstützung für Mods mit sich. Es ist sogar noch ressourcen sparender als Spigot. Des Weiteren ist es in der Lage erweiterte Settings zu konfigurieren.

Wir benötigen dazu:

Wie immer starten wir mit der Verbindung zum Server. Dort angekommen updaten wir die Paketlisten und installieren benötigte Pakete.

sudo apt update && sudo apt upgrade -y && sudo apt install screen software-properties-common -y

Minecraft fordert seit Version 1.18 Java 17 für den Serverbetrieb. Damit wir immer die aktuellste Version verwenden erweitern wir unser Repository um die Paketquellen von Amazon. Danach führen wir ein Update der Paketlisten durch und installieren Java 17.

sudo wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add -
sudo add-apt-repository 'deb https://apt.corretto.aws stable main'
sudo apt-get update && sudo apt-get install -y java-17-amazon-corretto-jdk

Im nächsten Schritt erstellen wir einen User für den Minecraft Server und logen in den neuangelegten user um. Dann legen wir für die zu verwendende Version ein neues Verzeichnis an. So können wir mehrere Versionen auf einem Server speichern und behalten den Überblick.

sudo adduser --disabled-login minecraft
su minecraft
mkdir minecraft_1.18.1

Jetzt laden wir uns die Serversoftware PaperMC runter.

curl -o paper-1.18.1-155.jar

Danach legen wir ein Startscript an um den Server starten zu können. Diese sämtlichen Parameter optimieren den laufenden Betrieb des Servers und funtionieren bis etwa 10GB Arbeitsspeicher Zuweisung. Wichtig! Ihr solltet immer etwa 1,5 GB RAM für das Betriebssystem übrig haben. Sprich bei 10 GB RAM solltet Ihr dem MC Server etwa 8,5 GB zuweisen. Ihr könnt die genaue Funktion einzelner Parameter hier nachlesen.

nano start.sh

screen -AmdS minecraft java -Xms7G -Xmx7G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -jar /home/minecraft/minecraft_1.18.1_papermc/paper-1.18.1-155.jar

Zusätzlich legen wir noch ein Stoppscript an um den Server, auch wieder ohne in den Screen springen zu müssen, stoppen zu können.

nano stopp.sh

screen -r minecraft -X quit

Die Scripte sind zum aktuellen Zeitpunkt noch nicht ausführbar. Dies können wir mit dem folgenden Befehl ändern.

chmod  +x start.sh stop.sh

Wer möchte das der Server automatisch startet, sollte dies als Cronjob im Crontab anlegen. Damit wir sicher gehen können, dass der Container auch bereit ist, setzen wir noch einen Delay mit in den Startbefehl.

crontab -e

@reboot         sleep 15 && cd /home/minecraft/minecraft_1.18.1/ && ./start.sh

Nun starten wir den Server. Dieser wird sich nach ca. 10 Sekunden automatisch wieder beenden, da wir die beim Start generierte eula.txt bestätigen müssen.

./start.sh
nano eula.txt

eula=true

Ist dies erledigt könnt ihr den Server starten. Wenn der Dienst startet werden alle benötigten Configdatein generiert. Ist die start.sh ausgeführt, könnt ihr mit dem screen Befehl in das Fenster des Servers springen. Solltet ihr es verlassen wollen, müsst ihr erst STRG + A drücken und danach D betätigen.

./start.sh
screen -r

Wir müssen noch ein paar Einstellungen in der server.properties ändern. Dazu beenden wir den Dienst. Es gibt nun 2 Möglichkeiten, entweder im screen des Servers oder über das Stoppscript.

[11:42:23] [Server thread/INFO]: Time elapsed: 1681 ms
[11:42:23] [Server thread/INFO]: Done (32.140s)! For help, type "help"
stop

./stopp.sh

Ist der Server beendet fangen wir mit der Configdatei an. Der Parameter für den server-port ändere ich aus Sicherheitsgründen immer auf einen anderen Port. Ihr könnt, wenn ihr eine Domain besitzt oder ein Dynamisches DNS nutzt, anstatt der IP die DNS/DynDNS angeben.

nano server.properties

motd=Eure Serverbeschreibung
max-players=AnzahlDerSpieler
server-ip=IP.Addresse.des.Containers / Domain/Dynamische DNS
server-port=55555
white-list=true
snooper-enabled=false

In der bukkit.yml, spigot.yml und paper.yml können noch weitere Settings angepasst werden. Im vorherigen Step haben wir die Whitelist aktiviert. Um euch mit dem Server verbinden zu können, müsst ihr euren Minecraftnamen auf die Whitelist eintragen. Dies könnt ihr am besten in der Konsole des Servers erledigen. Anschließend solltet ihr euren Minecraftuser Operatorrechte verpassen.

./start.sh

whitelist add username
op username

Zum Schluss müsst ihr noch in eurem Router die Portweiterleitung auf die IP des Containers und den Port, den ihr in der server.properties konfiguriert habt, erstellen.

Nun öffnet ihr Minecraft und verbindet euch auf eure öffentliche IP oder Domain / Dynamisches DNS in Verbindung mit dem Port. Das sollte so aussehen: deinedomain.tld:55555

Simsalabim der Server ist fertig!

Grüße gehen aus dem Archiv!

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.