Java Minecraft Server 1.20 auf Raspberry Pi 4 mit Docker installieren


Minecraft Server mit Docker auf Raspberry Pi 4

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
Raspberry Pi 4 mit 1.5GHz Quadcore (kaufen)

Was braucht man dafür?

  1. Einen Raspberry Pi 4 mit 4 GB RAM – günstig kaufen
  2. Ein USB-C Netzteil für den Pi4 – nicht sparen!
  3. Eine schnelle (!) micro SD-Karteauch nicht sparen!
  4. Ein schönes Gehäuse für den Pi4 – günstig kaufen
  5. Optional: ein Synology NAS für Backups – kaufen
SSH aktivieren im Raspberry Pi Imager

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

YouTube Anleitung für die Installation

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)

  1. Lade das Programm Raspberry Pi Imager herunter und starte es.
  2. Wähle Raspberry Pi OS LITE (64-bit) unter „Raspberry Pi OS (other)“ aus. Wichtig: 64-Bit und Lite.
  3. Klicke auf das Zahnradsymbol im Raspberry Pi Imager und aktiviere SSH.
  4. Lege dort einen Benutzernamen und Passwort fest:
    Benutzername: pi
    Passwort: [selber ein sicheres Passwort vergeben]
  5. Schreibe das so konfigurierte Image auf eine schnelle SD-Karte.
  6. Stecke die beschriebene SD-Karte in den Pi.
  7. Verbinde den Raspberry Pi 4 über ein Ethernet-Kabel mit dem Router.
  8. Stecke das Stromkabel in den Raspberry Pi.
  9. 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

  1. Zuerst erstellen wir den Ordner für alle Daten des Servers.
    mkdir mcserver
  2. Wechseln ins Home-Verzeichnis /home/pi
    cd
  3. Lade das Docker-Installationsskript runter
    curl -fsSL https://get.docker.com -o get-docker.sh
  4. Mache das Installationsskript ausführbar
    chmod +x get-docker.sh
  5. Nun installierte Docker (dauert einige Minuten)
    ./get-docker.sh
  6. uidmap wird für einen rootless-Betrieb benötigt.
    sudo apt-get install -y uidmap
  7. dockerd-rootless-setuptool.sh installieren
    dockerd-rootless-setuptool.sh install
  8. Starte Docker nach einem Neustart automatisch
    sudo systemctl enable docker
  9. Nun fügen wir den Nutzer pi zu der Gruppe Docker hinzu.
    sudo usermod -aG docker $USER
  10. Zum Schluss wechseln wir in die Docker-Gruppe
    newgrp docker
Kurz vor dem großen Moment der Docker-Installation auf dem Pi.

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.

Minecraft auf dem Raspberry Pi mit Docker

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.


Beitrag veröffentlicht

in

, ,

von

Kommentare

94 Antworten zu „Java Minecraft Server 1.20 auf Raspberry Pi 4 mit Docker installieren“

  1. Avatar von Jemand Anders
    Jemand Anders

    Es fehlen bei ein paar Befehlen das „sudo“ davor.
    Und wie kann man die Server-Einstellungen anpassen? Also die MC Einstellungen wie Spawnzeit und so?
    Wie ist das Root Kennwort nach der Installation?

    1. Avatar von Marc
      Marc

      Im Video oder hier in der Anleitung? Einstellen kann man alles in den Konfigurationsdateien des MC Servers. Es ist ein normaler Minecraft Server.

    2. Avatar von Jemand Anders
      Jemand Anders

      @Marc: hier in der Anleitung. Wir haben den Server anhand der Textanleitung auf einem pi4 mit 8GB installiert.

      Probleme traten mit den fehlenden „sudo“s und der 1GB-Zuordnung auf. Haben den Wert dann auf 8GB gesetzt, das war ihm wohl zu viel. Im Endeffekt läuft der jetzt auf 4GB und passt.

      Wird in der Video-Anleitung das Root-Kennwort erwähnt? Oder gibt es bei dieser Installation keinen root-user? Habe gerade keinen Zugriff auf das Gerät, deswegen frage ich nach.

  2. Avatar von Thomas
    Thomas

    Wir richten nun gerade den Server ein zweites Mal ein, weil ich ein Hardware-Defekt an unserer SD-Karte vermute. Super-Anleitung auch beim zweiten Mal.

    Frage in die Runde: Wie kriege ich die wichtigen Dinge des Minecraft-Servers regelmäßig und automatisch gesichert? Da gibt es keine Systemfunktion wie bei Apple mit Time-Machine, vermute ich? Dürfte gerne auch über ein kaufbares Programm gehen, wenn es dann einfacher wird und „just works“. Vielleicht hat da ja jemand schon Erfahrung hier?

  3. Avatar von Niklas
    Niklas

    Hi Marc
    danke erstmal für das Tutotrial, der server lief bisher einwandfrei
    jetzt wollte ich den server updaten, alles so gemacht wie es in der anleitung steht
    das kommt wenn ich sudo docker ps eingebe

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    ba54eb13f077 marctv/minecraft-papermc-server:latest "/opt/minecraft/dock…" 7 weeks ago Up 3 days 25565/udp, 0.0.0.0:25565->25565/tcp, :::25565->25565/tcp mcserver

    Ist das alles so richtig ?

    1. Avatar von Marc
      Marc

      Ja, das ist eine Tabelle mit Infos zu dem laufenden Container. „up 3 days“ ist das relevante: er läuft seit 3 Tagen durch =) Das ist doch toll.

    2. Avatar von Niklas
      Niklas

      Hi, ich wollte aber das der auf die 1.20.2 Updatet was muss ich dafür tun ?

    3. Avatar von Marc
      Marc

      Watchtower sollte das automatisch machen. Hast du das nach Anleitung eingerichtet?

    4. Avatar von Niklas
      Niklas

      Ja habe es 1 zu 1 gemacht wie du, sonst installiere ich ihn nochmal neu

    5. Avatar von Marc
      Marc

      Installier doch einfach watchtower nach Anleitung oben nach.

    6. Avatar von Benny
      Benny

      Huhu,
      hatte das gleiche Problem und musste den Befehl (weiter unten von ) eingeben damit bei der Liste der Container ( Befehl:

      sudo docker ps

      ) der Watchtower auftaucht.

      Auf der Seite (getmc.marc.tv) steht weiter unten folgendes:

      echo „### Starting Watchdog to keep the container up to date“
      sudo docker run -d –restart unless-stopped –name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

      Mein eingegebener Befehl war dann:

      sudo docker run -d –restart unless-stopped –name watchtower -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower

      Jetzt laufen beide container und mal gucken ob das Auto-Update funzt

      Grüße

    7. Avatar von Benny
      Benny

      Moin,
      das update läuft jedoch ist der Server immer noch 1.20.2.

      Auch nach Befehl:

      docker pull marctv/minecraft-papermc-server:latest
      docker stop mcserver

      Meldung: Keine aktuellere Version vorhanden

      Danach

      sudo reboot

      Tut sich nichts an der Version.
      Update wird jetzt jeden Tag frisch gemacht via Watchtower.

      @Marc ist evtl. das Docker-Repo noch nicht auf dem neuesten Stand?

      Grüße

    8. Avatar von Marc
      Marc

      Genau. Das Update kommt erst wenn PaperMc stable ist

  4. Avatar von Hans
    Hans

    Hallo Marc,

    Der Server läuft bei mir einwandfrei nur frage ich mich jetzt wie bzw kann man modpacks auf den server laufen lassen? falls ja könntest du kurz erklären wie das geht?

  5. Avatar von Seppel
    Seppel

    Funktioniert nicht und nach Stunden der entäuschung kann ich nur sagen rapberry pi ist für mich jetzt gestorben. Viel Geld war es nicht aber mann hatte erwartungen die von anfang an nicht erfüllt wurden. Schlechte erklärungen gefolgt von schlecht programierter software die nicht mit sich kompatibel ist oder nur funktioniert wenn das system gut drauf ist.

    Selbst mit dem dicken Buch und einigen youtube videos funktioniert es nicht. wie soll ich da meinem sohn zeigen was es für schöne entwickler boards es gibt. Windows funktioniert deutlich besser.

  6. Avatar von Samuel
    Samuel

    Hallo Marc,
    das Tutorial hat an sich super geklappt, ich bekomme es aber leider nicht hin den Pi von außerhalb des Netzwerks erreichbar zu machen. Durch meinen Internetanschluss habe ich nur eine öffentliche Ipv6 Adresse (mit DS-Lite) und so wie ich es bisher verstanden habe, muss man manuell noch irgendwie den Docker-Container oder gar die Bridge configurieren, um eine „Weiterleitung“ auch mit ipv6 zu ermöglichen. Stecke leider fest undbin mit meinem Wissen am Ende. Weißt du vielleicht, wie und ob das auch mit nur eine ipv6 möglich wäre?
    Ich habe eine Fritzbox mit aktiver Portfreigabe und auch ein MyFritz Konto.

    Liebe Grüße
    Samuel

    1. Avatar von Marc
      Marc

      Hier steht doch alles: =)

  7. Avatar von Nui
    Nui

    Hallo,
    der Server läuft, ich habe vom PC/ Laptop sowohl über das Heimnetz als auch von außen problemlos Zugriff.
    Was allerdings nicht klappt: Zugriff über das IOS-Minecraft vom IPad.
    EIGENTLICH soll doch mittlerweile mit der IOS-Version auch Crossplay und Zugang zu Java-Servern möglich sein.
    Spricht irgendetwas an dieser speziellen Server-Installation dagegen?

    Grüße
    Nui

    1. Avatar von Marc
      Marc

      EIGENTLICH soll doch mittlerweile mit der IOS-Version auch Crossplay und Zugang zu Java-Servern möglich sein.

      Das wäre mir neu. Da hilft nur Bedrock.

    2. Avatar von Nui
      Nui

      Ah, ok, danke. Dann habe ich mich wohl irgendwo verlesen.

  8. Avatar von Mika Kreis
    Mika Kreis

    Hallo Marc, weisst du, ob dieses Tutorial auch auf dem neuen Raspberry Pi 5 funktioniert? LG Mika 😊

    1. Avatar von Marc
      Marc

      Ausprobieren. Aber ich denke ja

  9. Avatar von Thomas
    Thomas

    Ja, auf dem Raspi5 geht das alles genau so.
    Ich scheitere gerade nur daran, dass ich, wenn ich mich per SFTP auf den Pi verbinde, keine Schreiberlaubnis für das mcserver-Verzeichnis habe, das das einem user und einer Gruppe 9001 gehören, die mir aber auf dem Gerät gar nicht in der Liste der User genannt werden. Ich würde jetzt ungern user/gruppe ändern, weil das ja sicherlich genau so benötigt wird, aber ich würde dem user „pi“ gerne Schreibrechte erteilen. Wie habt ihr das gelöst, wenn ihr zB eine Welt hochladen wollt, oder ein Plugin wie Geyser oder so?

  10. Avatar von Nui
    Nui

    Hallo,

    ich habe zwei Fragen:

    1. Was ist der für einen „Anfänger“ sinnvollste Weg, um ein Backup (oder regelmäßige automatisierte Backups) vom auf dem hier beschriebenen Weg erstellten Minecraft-Server bzw. der erstellten Welt zu machen?

    2. Kann ich mit Portainer von einem anderen Raspi aus auf die hier erstellte Docker-Umgebung (als new environment) bzw. den mcserver-container zugreifen?

    Grüße
    Nui

Schreibe einen Kommentar

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