Der Raspberry Pi ist nach wie vor die günstigste Möglichkeit, um schnell einen lokalen Minecraft Server für zu Hause aufzusetzen. Alternativ kann man auch ein Synology NAS als Minecraft-Server nutzen. Nachdem es aus meiner Sicht lange Zeit keine Möglichkeit gegeben war, einen Java Server stabil auf einem Pi zu betreiben, gibt es nun eine saubere Lösung mit Docker.
Warum Docker auf dem Pi 4?
Docker ist keine Virtualisierung wie zum Beispiel VMWare, sondern eine abstrahierte Containerisierung vom Host-Betriebssystem, mit begrenztem Zugriff auf die zugrunde liegenden Ressourcen. Container nutzen isolierte Prozesse und benötigen keinen Hardware-Hypervisor. Dies sorgt für eine vergleichbare Leistung wie eine native Installation. Die Nutzung von Docker für den Minecraft Server auf dem Pi löst ferner eine ganze Reihe von Herausforderungen.
- Einfache und schnelle Installation
- Rasantes Starten des Servers
- Automatische Aktualisierung
- Sichere Kapselung der System-Umgebung
- Optimale Java-Version und Konfiguration
Was braucht man dafür?
- Einen Raspberry Pi 4 mit 4 GB RAM – günstig kaufen
- Ein USB-C Netzteil für den Pi4 – nicht sparen!
- Eine schnelle (!) micro SD-Karte – auch nicht sparen!
- Ein schönes Gehäuse für den Pi4 – günstig kaufen
- Optional: ein Synology NAS für Backups – kaufen
Schnellstart
Wenn ihr keine Lust habt ein langes Tutorial zu lesen, dann installiert Raspberry Pi OS LITE (64-Bit) und aktiviert den SSH Zugang. Das ist in Schritt 1 bis 3 beschrieben. Dann führt ihr diesen Befehl auf der Shell des Pi aus:
curl -fsSL https://getmc.marc.tv/ -o install-pi-docker-minecraft.sh
chmod +x install-pi-docker-minecraft.sh
./install-pi-docker-minecraft.sh
Der Code ist selbstverständlich auf GitHub zu finden. Die URL getmc.marc.tv leitet auf das Installationsscript auf GitHub weiter.
Video-Anleitung
Schritt-für-Schritt-Anleitung
Wer verstehen will, was hier passiert, der kann alles in Ruhe der Reihe nach installieren und dabei nachvollziehen.
1: Installation von Raspberry Pi OS LITE (64-Bit)
- Lade das Programm Raspberry Pi Imager herunter und starte es.
- Wähle Raspberry Pi OS LITE (64-bit) unter „Raspberry Pi OS (other)“ aus. Wichtig: 64-Bit und Lite.
- Klicke auf das Zahnradsymbol im Raspberry Pi Imager und aktiviere SSH.
- Lege dort einen Benutzernamen und Passwort fest:
Benutzername: pi
Passwort: [selber ein sicheres Passwort vergeben] - Schreibe das so konfigurierte Image auf eine schnelle SD-Karte.
- Stecke die beschriebene SD-Karte in den Pi.
- Verbinde den Raspberry Pi 4 über ein Ethernet-Kabel mit dem Router.
- Stecke das Stromkabel in den Raspberry Pi.
- Warte drei Minuten, bis Raspberry Pi OS LITE (64-Bit) hochgefahren ist.
2. Öffnen einer Shell
Wir benötigen zur Installation einen Computer im selben Netzwerk.
- Windows: Installiere und starte Putty
- macOS: Starte die Terminal App
- Linux: Nutze die Shell
MacOS und Linux bringen die Shell schon mit. Bei Windows muss diese nachinstalliert werden.
3. Per Terminal über SSH mit dem Pi verbinden
Verbinde dich mit diesem Befehl in der Shell per SSH mit dem Pi. Das Passwort wurde in Schritt 1.3 festgelegt.
ssh pi@raspberrypi.local
Wenn „raspberrypi.local“ als Adresse nicht funktioniert, finde die IP-Adresse deines Raspberry Pi im Netzwerk über den Router heraus.
ssh pi@[IP-Adresse des Raspberry Pi]
Jetzt teste jetzt mit dem folgenden Befehl, ob das Ergebnis aarch64 ist. Wenn nicht, liest die Anleitung bis hierhin noch einmal genau durch.
uname -m
3. Aktualisieren aller Pakete
Damit wir auch auf dem neusten Stand sind, werden nun alle Programme auf dem Pi auf den neusten Stand gebracht. Es wird automatisch alles ohne Rückfrage installiert. Dafür nutzt man diesen Befehl.
sudo apt update && sudo apt upgrade --yes
sudo reboot now
Der letzte Befehlt ist ein Neustart des System.
4. Installation von Docker unter Pi OS
Kopiert die folgenden Befehle in die Shell und drückt Enter. Sie werden nacheinander ausgeführt.
cd
mkdir mcserver
curl -fsSL https://get.docker.com -o get-docker.sh
chmod +x get-docker.sh
./get-docker.sh
sudo apt-get install -y uidmap
dockerd-rootless-setuptool.sh install
sudo usermod -aG docker $USER
sudo systemctl enable docker
newgrp docker
Erklärung der Befehle
- Zuerst erstellen wir den Ordner für alle Daten des Servers.
mkdir mcserver - Wechseln ins Home-Verzeichnis /home/pi
cd - Lade das Docker-Installationsskript runter
curl -fsSL https://get.docker.com -o get-docker.sh - Mache das Installationsskript ausführbar
chmod +x get-docker.sh - Nun installierte Docker (dauert einige Minuten)
./get-docker.sh - uidmap wird für einen rootless-Betrieb benötigt.
sudo apt-get install -y uidmap - dockerd-rootless-setuptool.sh installieren
dockerd-rootless-setuptool.sh install - Starte Docker nach einem Neustart automatisch
sudo systemctl enable docker - Nun fügen wir den Nutzer pi zu der Gruppe Docker hinzu.
sudo usermod -aG docker $USER - Zum Schluss wechseln wir in die Docker-Gruppe
newgrp docker
5. Minecraftserver über Docker starten
Mit folgendem Befehl wird der Minecraftserver im Docker Container auf dem Raspberry Pi gestartet:
sudo docker run -d \
--restart unless-stopped \
--name mcserver \
-e MEMORYSIZE='1G' \
-e PAPERMC_FLAGS='' \
-v /home/pi/mcserver:/data:rw \
-p 25565:25565 \
-it marctv/minecraft-papermc-server:latest
Erklärung des Befehls
- docker mit root-Rechten starten. Klappt sonst nicht ohne Neustar.t
- Automatischer Neustart
- Name: mcserver
- Arbeitsspeicher im Container: 1 GB. Das kann bei einem Pi mit 4 GB auch 2 oder gar 3 GB sein.
- PaperMC Parameter sind bewusst leer
- Speicherort aller Dateien auf dem Pi: /home/pi/mcserver
- Port im Container und nach außen ist 25565
- Image des Containers ist: marctv/minecraft-papermc-server
- Tag: „latest“ ist immer die neuste, stabile Version.
6. Kommandozeile und Logs des Servers
Es dauert eine Weile, bis der Server zum ersten Mal startet. Um sich das anzuschauen, öffnen wir das Log. Zum Verlassen, drücke Strg-C.
docker logs mcserver --follow
Der Server ist erst vollständig gestartet, wenn du die Meldung „Timings Reset“ siehst. Ein „Can’t keep up! Is the server overloaded? Running 5296ms or 105 ticks behind“ ist beim ersten Starten normal, weil die Chunks erst generiert werden müssen. Um sich mit der interaktiven Kommandozeile des Servers zu verbinden, nutzt man folgenden Befehl:
docker attach mcserver
Dort kann man Befehle wie /allowlist oder /op ausführen. Um diese Ansicht zu verlassen, drücke Strg-P, gefolgt von Strg-Q.
7. Auf dem Server spielen
Stelle sicher, dass der Server in Schritt 6 vollständig hochgefahren ist. Zu guter Letzt starten wir Minecraft Java-Edition. Dort fügen wir unter „Multiplayer“ einen Server hinzu. Die Server-Adresse ist dieselbe, mit der wir uns per SSH verbinden:
raspberrypi.local
Als Alternative nutzen wir die IP-Adresse des Raspberry Pi im Netzwerk.
8. Automatische Aktualisierungen einrichten
Damit man nicht manuell von 1.20 auf 1.21 aktualisieren muss, richten wir Watchtower ein. Das ist ebenfalls ein Docker Container, die andere Container aktuell hält.
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower
Mit dem folgenden Befehl können wir uns anschauen, welche Container gerade laufen:
sudo docker ps
Die Ausgabe sollte den Minecraft Server Container und den Watchtower Container zeigen. Der erste Versuch einer Aktualisierung findet erst nach 24 Stunden nach der Ersteinrichtung oder auch nach einem Neustart statt.
9. Freigabe des Servers über das Internet
Ich nutze eine Fritzbox. Dort kann man unter den Einstellungen Internet > MyFritz-Konto eine Adresse einrichten, über die man die Fritzbox außerhalb des eigenen Netzwerks erreichen kann.
Unter Internet > Freigaben > Gerät für Freigaben hinzufügen > [Gerät auswählen] > Neue Freigabe > MyFritz Freigabe > Andere Anwendung und dort den Port „25565“ für TCP und UDP freigeben.
Die MyFritz-URL ist dann die Server-Adresse, die man in Minecraft einträgt. Zum Beispiel u5xvqz2trolololom.myfritz.net Mein Server läuft durch einen SRV-Eintrag in meine DNS-Einstellungen der Domain hier mc.marc.tv
Fazit und Ausblick
Der Wechsel auf Docker auf dem Raspberry Pi macht den Betrieb des Servers kinderleicht. In den Tests ist die Leistung des Minecraftservers vergleichbar mit Docker auf dem Synology NAS. Somit ist die Performance besser als die native Installation ohne Docker auf dem Pi durch die höhere Java-Version und bessere Optimierung der Umgebung. Die Entkopplung des Raspberry Pi OS von der Serverumgebung sorgen für eine einfache Administration. Zudem nutzten nun alle meine Anleitungen dasselbe Docker-Image. Das erlaubt mir eine fokussierte Weiterentwicklung. Ich bin gespannt auf eure Rückmeldungen und Kommentare.
Bedanke dich mit einer Spende
Ich entwickle diese Software in meiner Freizeit, um dir und anderen zu helfen.
Kommentare
96 Antworten zu „Java Minecraft Server 1.20 auf Raspberry Pi 4 mit Docker installieren“
der Watchtower Container funktioniert bei mir leider nicht.
Bekomme folgenden Fehler:
docker run -d –name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower
docker: Error response from daemon: Conflict. The container name „/watchtower“ is already in use by container „a6f7b858bee229dd12de1ced15096a5a53a7a55f9b81e380fcebb92cbb25bfa0“. You have to remove (or rename) that container to be able to reuse that name.
See ‚docker run –help‘.
Mit „sudo docker ps“ sehe ich nur den mcserver Container
hat sich erledigt, funktioniert nun!
Wie kann ich sehen, ob der Server läuft?
pi@raspberrypi:~/nukkit $ docker logs mcserver –follow
Error response from daemon: No such container: mcserver
pi@raspberrypi:~/nukkit $ docker attach mcserver
Error response from daemon: No such container: mcserver
Bitte um Hilfe!
sudo docker attach mcserver
Hallo Marc!
vielen Dank für die gute Anleitung, hat auf Anhieb funktioniert und läuft richtig flott.
Ich würde nun gerne mehrere Raspberry mit dieser Version laufen lassen. Dazu benötige ich ja verschieden Ports. Ich habe bereits in der Fritz Box eine Weiterleitung für den einen Server auf 25565 (TCP und UDP) für den zweiten auf 25567 eingerichtet. Auf dem neuen Server (25567) muss das ja an entsprechenden Stellen geändert werden, ich weiß nur leider nicht, wo ich eingreifen muss.
LG Matthias
Kommst Du denn lokal drauf? Also ohne Fritz!Box übers Internet? Der Clou ist, dass die Docker-Container immer intern den 25565 haben und über Docker extern ein anderer Port wie 25567 gesetzt werden kann. Beispiel:
sudo docker run -d --restart unless-stopped --name mcserver2 -e MEMORYSIZE='1G' -e PAPERMC_FLAGS='' -v /home/pi/mcserver:/data:rw -p 25567:25565 -it marctv/minecraft-papermc-server:latest
Extern ist der neue Port vergeben.
Hallo Marc,
funktioniert einwandfrei! Vielen Dank. Die Kids sind schon am bauen ;-)
Lokal ging das übrigens.
VG Matthias
Gerne. Dazu auch den letzten Absatz beachten des Artikels =)
Hi,
tolles Tutorial! Funktioniert auch ganz gut aber gibt es einen weg eine schon bestehende Welt mit der vom Raspi generierte Welt zu ersetzen?
Hatte vorher einen Server von Aternos hosten lassen aber der geht nicht immer rund, daher wollte ich den Server auf meinem Raspi hosten aber die Aternos Map weiter nutzen können.
Habe es inzwischen geschafft mit einfachem Ordner ersetzen
wie kannst du mir erklären ich weiß net wie
Hallo,
Erstmal ne super Erklärung und danke das du das Online gestellt hast.
Habe den Server vor ca. einer Woche Installiert und da hat auch alles soweit funktioniert. Auf die Kommandozeile konnte ich zwar nicht zugreifen aber war mir egal.
Heute kann ich den Server leider nicht mehr starten.
Da kommt immer : Cannot connect to the Docker daemon at unix:///run/user/1000/docker.sock. Is the docker daemon running?
Ich hab schon in Dockers Forums gesucht und mehrere lösungen getestet alles ohne erfolg.
Hast du eine Idee?
Pi neugestartet?
Sonst mal
sudo service docker start
probieren bitte
Hallo Marc,
Durch kompletten Reboot funktioniert es jetzt. Sogar mit Kommandozeile.
Gibt es noch die Möglichkeit einen Seed zu wählen für die Welt.
Ja. Das einfach Nachlesen im Netz weil ich nur den Container bereitstelle. Der Rest ist ein normaler Server.
Hi,
Ich bekomme folgende Fehlermeldung beim Start des Docker-Befehls:
Was kann ich machen?
Danke für Deine Hilfe!
Nutzt du einen RaspberryPi4 mit dem hier erwähnten OS?
Danke für Ihre Hilfe!
Hey,
ich hab noch ein Problem wenn ich in der Serverauswahl auf meinen Server gehe sagt er das ich nicht auf der wightlist stehe.
Danke für ihre Hilfe
Lg Ben
Dann setz dich mal auf die Whitelist.
ich habe ein Problem immer wenn ich versuche irgendwas mit dem mc Server Container zu machen kommt die Nachricht: Error response from daemon: No such Container: mcserver aber wenn ich kucke welche contanter existieren gibt es nur mcserver
fährt der Server den automatisch beim start des rassbery hoch oder nicht. und wenn nicht kann man das irgendwie einstellen?
Er sollte automatisch hochfahren, ja.