4 min read

Minecraft 1.18 über Flatpak spielen und einen Server mit Docker hosten

Aktuell spiele ich mit meinen Kollegen seit Ewigkeiten nochmal Minecraft, pünktlich zum Release von 1.18. Ich wollte mal beschreiben wie ich diesen betreibe. Also los :)

Ich habe vorher zum hosten immer die Oberfläche MineOS genutzt, und war ziemlich zufrieden damit. Aber ich habe mich entschieden aus diversen Gründen diese nicht mehr zu nutzen und stattdessen diesen Docker Container zum Betreiben des Servers zu nutzen. Ich beschreibe mal die Schritte, wie ich ihn in meinem NAT Setup mit zwei Routern zum laufen gebracht habe und wie ich Minecraft als Flatpak installiert auf meinem Fedora Desktop eingerichtet habe.

Minecraft Installation

Ich möchte nochmal darauf hinweisen, dass dieses von Microsoft aufgekaufte Spiel auch als Flatpak (!) verfügbar ist und damit auf den meisten Linux Distributionen gespielt werden kann. (Looking at you SteamDeck 👀 🥰)

OptiFine Installation

Ebenfalls beschreibe ich noch kurz wie ich OptiFine und ein Ressource Pack unter der Flatpak Version installiert habe. Beides ist eigentlich nichts besonders aufwändiges.
Also: für OptiFine könnt ihr euch das .jar auf der Download Seite herunterladen. Die aktuelle Preview Version OptiFine_HD_U_H3_pre4 funktioniert mit Minecraft 1.18 problemlos.
Dieses führt ihr dann mit java -jar preview_OptiFine_1.18_HD_U_H3_pre4.jar aus (es kann sein, dass ihr zuvor noch java-openjdk installieren müsst: sudo dnf install java-openjdk). Dann startet bereits der OptiFine Installer:

Als Folder gebt ihr hier euer Minecraft Flatpak Verzeichnis an:
/home/<USERNAME>/.var/app/com.mojang.Minecraft/data/minecraft/
Nun könnt ihr mit Install Optifine installieren, und nach einem Neustart sollte die Version auch bei euch im Launcher angezeigt werden:

Resource Pack

Als Resource Pack nutze ich Sphax PureBDCraft. Dieses ist auf der Webseite auch bereits für die 1.18 verfügbar. Die Zip Datei einfach herunterladen und per Options > Resource Packs > Open Pack Folder den Ordner öffnen in den die Zip Datei kopiert werden muss.

Add Environment Variable

Update 3-12-2021:
Nachdem ich auf Reddit nachgefragt habe, warum meine Leistung mir "nur" 140 FPS bringt, hat ein Nutzer mir den Tipp gegeben, per Flatseal die Variable mesa_glthread=true hinzuzufügen. So erreiche ich 179 FPS. Weitere Tipps werde ich hier auflisten.

Installation des Servers mit Docker

Die Installation unter Docker ist vergleichsweise unkompliziert. Ich habe mich (wie bei anderen Diensten auch) für docker-compose entschieden:
---
version: "3.8"
 services:
   mc:
     image: itzg/minecraft-server
     container_name: mc
     ports:
       - 25565:25565
     environment:
       - EULA=true
     tty: true
     stdin_open: true
     restart: unless-stopped
     volumes:
       - ./minecraft-data:/data

Und schon kann der Container mit docker-compose up -d gestartet werden. Beim Start braucht der Container relativ lange, da jedes mal die Spawn Area initialisiert werden muss:

Dann aber ist es schon möglich dem Server beizutreten:
<IP-ADRESS>:25565.

Portfreigaben

Zunächst habe ich in der Firtz!Box eine normale Portfreigabe erstellt, die den extern vergebenen Port auf pfSENSE weiterleitet. Weiterhin habe ich dann in pfSENSE unter Firewall / NAT / Port Forward eine weitere Regel eingerichtet:

Somit kann ich dann von außen meine DynDNS Adresse erfolgreich mit telnet <IP-ADRESSE> <PORT> erreichen.
Wichtig: Hierbei sollte man drauf achten, dass das Icon an der Regel angezeigt wird, welches indiziert, dass ebenfalls die Firewall Regel von der Port Forward Regel gemanaged wird.

Whitelist und Commands

Um die Whitelist benutzen zu können, muss man sich per exec mit der Console im Container verbinden docker exec -i mc rcon-cli. Danach kann man mit op <SPIELERNAME> einen Spieler zum Operator des Servers machen. Dieser kann dann auch per Text Chat (t) im Spiel die Console benutzen. Mit /whitelist on schaltet man die Whitelist ein und mit /whitelist add <SPIELERNAME> kann man der Whiteliste weitere Spieler hinzufügen. Die Namen und IDs der Spieler tauchen dann auch in ./minecraft-data/whitelist.json auf.

Server Icon

Mit diesen Zeilen in der Compose Datei kann dem Server ein wunderschönes Icon hinzugefügt werden:
OVERRIDE_ICON=TRUE
ICON=http://icons.iconarchive.com/icons/dakirby309/simply-styled/64/OS-Linux-icon.png

Desription

Die Beschreibung in der Multiplayer Übersicht lässt sich per motd= in der Datei server.properties anpassen.

Backup

Der letzte Punkt, über den sich ein Admin Gedanken machen sollte, ist noch der Punkt eines Backups. Hier reicht es den Ordner ./minecraft-data zu sichern, was bei mir aber irrelevant ist, da 2 mal in der Woche ein Backup jeder VM auf dem Proxmox Hypervisor auf mein TrueNAS System geschieht.

Fazit

Mit meinem System (Ryzen 7 3700X und RX 5700XT), Graphics Settings auf Fast mit einer Render Distanz von 15 chunks, sowie einem 128x Ressource Pack und Optifine erreiche ich so um die 140 FPS. Das ist nicht besonders viel, man muss aber bedenken dass es sich hier um eine Containerisierte Anwendung handelt.

Die Performance des Servers ist aber wesentlich besser als unter MineOS, gerade damals unter MineOS traten bei leistungshunrigen Aktionen, wie das geniereren neuer Weltabschnitte, oft Performance Probleme auf. Dies scheint nun wesentlich besser zu sein.

Author: peterge