Ich wollte seit langer Zeit wegen den geringen Kosten einen Minecraft Server 1.16.1 auf dem neuen Raspberry Pi 4 mit 4GB (günstig kaufen) installieren. So ein Server muss dauerhaft stabil 24/7 laufen, damit man damit echt Spaß haben kann. Deswegen habe ich dieses Tutorial geschrieben, in dem genau dieses Endziel beschrieben wird. Der Server ist für die JAVA-Version von Minecraft.

Unsere Minecraft-Welt ist mittlerweile stolze 150 MB groß und hat seit ihrem Debüt auf der XBOX 360 bis heute überlebt. Aus diesem Grund möchte ich ab und zu ohne viel Konfiguration oder Geld zu bezahlen die Welt weiter gestalten.

Inhaltsverzeichnis

Kompatibilität der Minecraft Clients mit den Servern

Die neuere Bedrock-Edition läuft viel performanter als die Java-Edition und ist mit den Konsolen und mobilen Geräten kompatibel. Dafür ist der Dedicated Bedrock Server noch in der Alpha-Phase seitens Mojang und erlaubt keine Mods. Clientseitig fehlt außerdem die Unterstützung für die Nintendo Switch und macOS. Unglaublich aber wahr: Für den Mac gibt es keine Bedrock-Edition.

ClientBedrock ServerJava Server
Android
iOS
XBOX ONE
Nintendo Switch
PS4
XBOX 360
PS3
Windows 7/8/10 Java
Windows 10 Bedrock
Linux
macOS
Welcher Client kann sich mit JAVA oder Bedrock Servern verbinden?

Welche Minecraft-Version wird unterstützt?

Diese Version für den Raspberry Pi in diesem Artikel funktioniert nur für die aktuelle JAVA-Version von Minecraft für Mac und PC. Wer den Server für die XBOX, PlayStation 4, iOS und Android Version aufsetzen möchte, der nutzt meine Anleitung für einen Minecraft Bedrock-Server.

Spigot, Bukkit, Vanilla oder Paper?

Der Spigot-Fork „Paper“ dient als Grundlage. Paper ist ein auf Geschwindigkeit optimierter Fork des Spigot Minecraft-Servers, die darauf abzielt, Gameplay und mechanische Inkonsistenzen zu beheben und die Leistung zu verbessern. Ohne Paper könnten wir den Minecraft-Server nicht performant auf dem Pi betreiben. Paper funktioniert genau so wie ein ein normaler Minecraft-Server mit der jeweils aktuellen Version von Minecraft. In diesem Artikel beschreibe ich wie man auf de Pi den Minecraft Server Paper als „headless server“ stabil betreibt. Das heißt, der Pi kann irgendwo in der Nähe des Routers ohne Maus und Tastatur betrieben werden.

Welche Hardware benötigt man?

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

Welche Software wird benötigt?

  1. Raspberry Pi OS Lite (Betriebssystem für den Pi)
  2. etcher (Tool zum Schreiben von SD Karten)
  3. Die Shell (beim Mac dabei) oder PuTTY für Windows.

Anleitung Schritt für Schritt

Der Weg zum eigenen Server auf dem Raspberry Pi ist simpel. Einfach jeden Schritt genau durchlesen oder das Video anschauen. Da jeder Raspberry Pi absolut gleich ist, sollte jeder Schritt genau so bei euch umsetzbar sein. Zudem haben viele andere Menschen es auf diesem Wege ebenso hinbekommen.

Schritt 1: Schreiben der MicroSD Karte und SSH aktivieren

  1. Schreibt mit etcher die img-Datei von Raspberry Pi OS Lite auf die SD-Karte.
  2. Legt eine leere Datei namens ssh per Computer auf die SD Karte in der Partition „boot“. Das aktiviert den SSH Zugang.
  3. Die MicroSD Karte in den Pi einstecken und diesen per Netzwerkkabel ins lokale Netzwerk hängen. Den Pi an den Strom anschließen.

Schritt 2: Login per SSH

Per Shell oder Putty mit SSH auf den Pi wechseln. Die IP des Pi sieht ihr in eurem Router unter Netzwerkgeräte oder ihr verwendet raspberrypi als Hostname. Das Passwort lautet „raspberry“. Wenn das geklappt hat, dann haben wir den schwierigsten Teil hinter uns gelassen. Beispiel mit meiner IP:

ssh pi@raspberrypi

Falls es hier ein Problem gibt, probiert es mit der IP-Adresse statt dem Hostnamen raspberrypi. Wenn es dann immernoch Probleme gibt, habt ihr entweder vergessen, SSH zu aktivieren oder das Netzwerkkabel steht nicht drin oder hat keine Verbindung.

Schritt 3: Konfiguration von Rasperian

Mit dem folgenden Befehl startet ihr das Rasperian Konfigurationstool. Dort unter Interfacing Options kann man unter SSH den Zugang aktivieren.

sudo raspi-config

Nun setzen wir die korrekte Zeitzone. Das ist wichtig für die cronjobs:

sudo dpkg-reconfigure tzdata

Schritt 3: Installation von Paper

Für die einfache Installation hat James A. Chambers ein Script geschrieben, das uns diesen Schritt enorm erleichtert. Das wird mit wget von github gezogen, mit Schreibrechten versehen und dann ausgeführt. Das Script installiert Java 9 und den aktuellen Paper Minecraft Server. Ausgeführt wird es nun in drei Schritten. Jeder Schritt ist jeweils eine Zeile auf der Kommandozeile.

wget -O SetupMinecraft.sh https://raw.githubusercontent.com/mtoensing/RaspberryPiMinecraft/master/SetupMinecraft.sh

chmod +x SetupMinecraft.sh

./SetupMinecraft.sh

Schritt 4: Starten und Optimieren des Servers

Der Server kann nun direkt gestartet werden. Das Script dasfür liegt im Verzeichnis ~/minecraft Erreichbar ist der Minecraft Server nun unter der IP-Adresse des Raspberry Pi.

Achtung: Bitte einmal den Server starten damit die Konfigurationsdateien geschrieben werden, die wir im nächsten Schritt editieren.

cd ~/minecraft
./start.sh

Zusätzlichen weisen wir mehr Speicher von der GPU dem Server zu. Schließlich haben wir bei diesem Projekt keinerlei grafische Ausgabe. Die System-Konfigurationsdatei editiert man mit nano:

sudo nano /boot/config.txt

Diese Zeilen kommen ganz ans Ende dieser Datei:

gpu_mem=16

Schritt 5: Minecraft Server konfigurieren

Es gibt eine Datei in ~/minecraft/server.properties Dort habe ich vorerst die Anzahl der Spieler auf 3 gesetzt und die Whiteliste eingeschaltet. Wenn ihr auf die Kommandozeile des Servers wollt, dann geht das der über die mit start.sh gestartete screen-Session.

Dort kann man dann die whitelist verwalten oder die Tageszeit auf dem Server beeinflussen. Mit dem Befehl timings report seht ihr detaillierte Metriken zur Auslastung des Servers. Mit STRG+A und dann STRG-D verlässt man den Screen dann wieder.

screen -r minecraft
Internet Port Freigabe am Gerät „NAS“ in der FritzBox mit MyFritz

Schritt 6: Freigeben des Servers über das Internet

Ich nutze eine Fritzbox. Dort kann man unter den Einstellungen Internet > Freigaben -> Portfreigaben 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 > Portfreigabe den Port „25565“ freigeben. Das bedeutet, dass der Port von außen an dieses interne Gerät weitergereicht wird.

Die MyFritz-URL ist dann die Server-Adresse, die man in Minecraft einträgt. (z.B. qbnsepjzhd8cvzk7y.myfritz.net) Ohne http und ohne Portnummer am Ende.

Schritt 7: Automatischer Start beim Neustart

Über die crontab kann man nicht nur den Pi und somit den Minecraft-Server  regelmäßig neustarten sondern ebenfalls reboot den Minecraft Server starten. Dafür einfach den  Inhalt der Datei crontab in die Cron Tabelle kopieren. Der Befehl zum editieren der crontab lautet:

crontab -e

Kleine Maps mit 3-4 Spielern laufen performant auf dem Raspberry Pi 4

Optional: Serverneustart nach 12 Stunden

Meine Erfahrung mit Minecraft Servern ist, dass man sie zur Sicherheit regelmäßig sauber neustartet. Dabei werden alle Daten im Arbeitsspeicher auf die SD Karte geschrieben und gehen bei einem Absturz nicht verloren. Ich bin dann so weit gegangen, dass sich erst der Paper Server runterfährt und dann der Pi komplett neugestartet wird.

Mein Repository auf GitHub enthält den letzten stabilen Stand.

Optional: Konfiguration Samba-Server für Backups

In Kurzform: Über Samba wird das Verzeichnis ~/minecraft/world im Netzwerk freigegeben. Danach kann das Verzeichnis im Synology NAS gemountet werden. Auf diesem Weg kann ein Task nächtlich die Inhalte in ein Verzeichnis kopieren, das über Cloud Sync mit der Dropbox verbunden ist.

Mit dem letzten Befehl editiert man die Samba Konfiguration. Der Eintrag „read only“ muss von „yes“ auf „no“ gesetzt werden. Dann hat man die Möglichkeit über das Netzwerk alle relevanten Dateien auf dem Pi direkt zu bearbeiten ohne sich mit SSH anmelden zu müssen.

sudo apt install samba

sudo smbpasswd -a pi

# Editieren der Samba config. Was genau editiert werden muss, steht unten.
sudo nano /etc/samba/smb.conf

# Neustarten von Samba damit die Einstellungen übernommen werden.
sudo service smbd restart && sudo service nmbd restart

Hier der Inhalt meiner smb.conf

[homes]
   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = no
Dies ist nur ein minimaler Ausschnitt der Karte. Gerendert mit Overviewer.

Wie optimiere ich die Leistung des Servers?

„Can’t keep up! Is the server overloaded? Running 5190ms or 103 ticks behind“ ist eine Meldung, die man eventuell sofort nach dem ersten Start des Servers sieht. In der Datei „paper.yml“ kann man mit dem folgenden Befehl die Pillager Patrouillen abschalten. Mich haben sie ohnehin genervt und der Server läuft deutlich besser.

  disable-pillager-patrols: true

Der einfachste Weg Plugins zu installieren, ist über SAMBA (SMB). Damit kann man mit dem Windows Explorer oder MacOS Finder direkt auf dem Pi Dateien verwalten. Die Einrichtung ist oben beschrieben. Im Verzeichnis „~/minecraft“ läd man das Plugin in Form der JAR-Datei in das „plugins“-Verzeichnis legen. Den Server dann neustarten. Danach befindet sich zusätzlich eine config-Datei in dem Plugin-Verzeichnis in dem man das Plugin konfigurieren kann. Ich habe bei den Holzhammer benutzt und alle Pillager entfernt.

Java-Parameter einstellen

Wer einen Raspberry Pi 4 mit mehr als 1GB besitzt, kann mit den beiden Parametern „Xms“ und „Xmx“ setzen. Diese setzt man in der Datei ~/minecraft/start.sh in der letzten Zeile. Mein Raspberry Pi 4 mit 4GB Arbeitsspeicher nutzt mit folgenden Werten seinen Speicher besser aus:

/usr/bin/screen -dmS minecraft /usr/bin/java -jar  -Xms2400M -Xmx2400M /home/pi/minecraft/paperclip.jar

Diese Werte sind in der aktuellen Version bereits gesetzt. Wer noch weiter gehen will, kann zusätzliche diese Parameter nutzen:

/usr/bin/screen -dmS minecraft /usr/bin/java -jar  -Xms2400M -Xmx2400M -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=100 -XX:+DisableExplicitGC -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:G1MixedGCLiveThresholdPercent=35 -XX:+AlwaysPreTouch -XX:+ParallelRefProcEnabled -Dusing.aikars.flags=mcflags.emc.gs /home/pi/minecraft/paperclip.jar

Die Bedeutung der einzelnen Parameter wird bei Aikar.co erklärt.

Der Bedrock-Server braucht deutlich weniger Leistung als der Paper-Java-Server

Wie hoch ist die CPU-Last?

Während der Bedrock-Server sehr genügsam ist und selten über 5% CPU Last verursacht, sorgt der PaperMC Java-Server schnell für 25% und mehr CPU-Last. Da der Java-Server eine Single-Thread Anwendung ist, wird bei einer Quad-Core-CPU wie in dem Synology DS1019+ (kaufen) nur ein Viertel der vorhandenen Leistung genutzt. Bei mir geht die Leistung manchmal auch auf über 35% CPU-Last. Das liegt entweder am Boost-Mode der CPU oder daran, dass der Java PaperMC-Server neben dem Hauptthread noch andere Dinge berechnet.

Konfiguration des Servers

Die Einstellungen für den Bedrock-Server müssen in Konfigurationsdateien vorgenommen werden. Diese wurden in den lokalen Verzeichnissen auf dem NAS erzeugt. Wichtig: Vor Änderungen den Server immer runterfahren bzw. den Container stoppen.

server.properties

Hier wird zum Beispiel eingestellt, ob eine Whitelist verwendet wird oder ob im Survival oder Creative-Modus gespielt wird:

gamemode=creative

whitelist.json

Die whitelist.json sollte hingegen nicht manuell editiert werden. Um Benutzernamen der Whitelist hinzuzufügen, geht man auf die Kommandozeile im Terminal des Servers bzw. des Containers und gibt ein:

whitelist on
whitelist add BENUTZERNAME

BENUTZERNAME steht natürlich für den jeweiligen Account-Namen.

Wie aktualisiere ich den Server?

Wenn Du eine alte Version des Scriptes runtergeladen hast, dann führe folgende Befehle über ssh aus auf dem pi:

cd ~/minecraft
wget -O restart.sh https://raw.githubusercontent.com/mtoensing/RaspberryPiMinecraft/master/restart.sh
wget -O start.sh https://raw.githubusercontent.com/mtoensing/RaspberryPiMinecraft/master/start.sh
wget -O start.sh 
https://raw.githubusercontent.com/mtoensing/RaspberryPiMinecraft/master/start_lowspec.sh
chmod +x restart.sh start.sh start_lowspec.sh
./restart.sh
# nach eine Neustart dann:
./start.sh

Diese Befehle laden die aktuelle Version des Scriptes runter und starten den Server neu und laden die aktuelle Version (z.Z. 1.16.1) runter.

Der Server läuft stabil

Bislang hat der Server erstaunlich wenig Zicken gemacht. Insgessamt waren maximal 3 Personen gleichzeitig auf dem Server und der Pi hat das sehr gut weggesteckt.

Ich bin kein Systemadministrator und es gibt sicherlich einiges an dieser Anleitung zu optimieren. Für Korrekturen und Verbesserungen bin ich dankbar. Gerne auch direkt auf GitHub.

Als Tipp: Der neue schnellere Raspberry Pi 4 mit 4GB ist ideal für dieses Projekt und aktuell günstig zu haben. Wem die Power des Raspberry Pi nicht reicht, der nutzt einfach meine Anleitung für einen Minecraft-Servers auf einem Synology NAS.

Beteilige dich an der Unterhaltung

267 Kommentare

  1. Moin,
    erst mal vielen Dank für die super Anleitung.
    Ich hatte zuvor keine Ahnung von Raspberry Pi’s und habe es hinbekommen.
    Der Server läuft soweit ganz stabil mit 2800 MB auf einem Raspberry Pi 4 mit 4GB Arbeitsspeicher.

    Ein Verständnisproblem meiner seits ist jedoch aufgekommen.
    Wie realisiere ich den täglichen Server-Neustart nach z.B. 6 Stunden (Statt 12).

    Ich habe es versucht, dies durch folgenden Code in der Datei „crontab“ zu realisieren. Leider kam es zu keinen Neustart. Müssen die Sterne (*) ausgefüllt sein mir einer null? Vielleicht hab ich auch nur etwas übersehen.

    Auf eine Antwort würde ich mich freuen.
    Mit freundlichen Grüßen
    Andreas

    # Restarts server all 6h. Starts server at reboot.
    0 0 * * * /home/pi/minecraft/restart.sh
    0 6 * * * /home/pi/minecraft/restart.sh
    0 12 * * * /home/pi/minecraft/restart.sh
    0 18 * * * /home/pi/minecraft/restart.sh
    @reboot /home/pi/minecraft/start.sh

    1. Ok, danke, Du hast alles oben tatsächlich beschrieben. Wie konnte ich das überlesen? peinlich, peinlich.

  2. Hi Mark,
    danke für den tollen Guide.
    Ich habe leider das Problem, dass mein Server oft Ticks zurückliegt, gerade wenn 2-3 SPieler drauf sind.
    Solo läuft er super.
    Ich habe den Pi4 mit 4GB Ram und folgender SD
    XMS und XMX Werte, sowie der Süeicher wurden angepasst.
    Liegt das Problem rein an der SD?
    Beste Grüße Julian

    1. Nein, aber an der Power des Pi. Das Problem kenne ich. 1.14.4 ist sehr anspruchsvoll. Gehen die TPS auch runter, wenn ihr euch am selben Ort im Spiel aufhaltet? Gehen sie runter, wenn ihr die Karte aufdeckt? Ich schreibe demnächst mal einen Optimierungsguide für Minecraft.

      Probier mal dieses Plugin aus:

      Ansonst: kommt zu uns: mc.marc.tv

    2. Der Ort scheint keine Probleme zu bereiten und erkunden eigentlich auch nicht.
      Es sind eher die neuen Mobs wie Raider, die den Server komplett lahm legen.
      Aber das Plugin scheint da abhilfe zu schaffen.
      Wie installiere ich das am besten? Auf Usb stick dann mounten und rüberziehen?
      LG Julian

  3. Servus,
    ich habe eine Freigabe für UDP und TCP erstellt.
    Jedoch kann ich mich nicht verbinden, wenn ich die Fritz-Adresse eingeben. Überprüft habe ich bereits, ob es richtig eingetragen ist.
    Das Fritz-Konto ist ebenfalls aktiv.

    Was kann ich noch falsch machen?

    Viele Grüße

  4. Guude Marc,

    Danke erstmal für die Anleitung, kappt natürlich einwandfrei :) Eins allerdings finde ich nicht wieder. Wie kann ich die Xms und Xmx Werte einstellen? Kann es sein, das Du diese Info von der Page genommen hast?
    Voreingestellt sind ja glaube 700mb und ich würd das gern bissl hochstellen, aber hab vergessen wie ich da hinkomme.

    Liebe Grüße

    Hein

    1. Hi,

      Artikel wurde diesbezüglich wieder angepasst. Ich hatte alles erstmal rausgenommen weil es so kompatibler ist wenn nichts gesetzt ist. Das war für das neue Video einfacher. Nun habe ich aber alles dokumentiert. Klappt es?

    2. Habs gefunden danke. Bin leider heute erst dazu gekommen daran weiter zu machen. Auf jeden Fall danke für die Anleitung. Ich frag mich ja wieso niemand einfach ein img hochläd…

  5. Hallo Marc,
    Danke für das Minecraft-Script.
    Du schreibst zwar, dass es nützlich ist das Plugin LimitPillagers herunterzuladen, lässt uns Anfänger aber im Unklaren, was wir konkret mit der Datei LimitPillagers-2.7.0.jar machen ;-)

    1. So einfach? Ich hätte jetzt gedacht deiner Anleitung nach, sei dann ausschließlich Vanilla 1.14 möglich. Ok, gut zu wissen.

  6. Vielen Dank, ich habe es mit dieser Anleitung hinbekommen, einen Server aufzusetzen. Du meintest ja, dass du dich über Verbesserungsvorschläge freuen würdest, daher hier ein paar Anmerkungen:

    – Ich fand es etwas verwirrend, dass du auf die smb.conf auf GitHub verweist. Diese ist doch für die Einrichtung des Servers gar nicht notwendig, da es ja reicht, in der bereits vorhandenen smb.conf einfach unter dem Abschnitt [homes] den Eintrag „read only“ auf no zu setzen (so wie es auch in der Anleitung steht). Außerdem ist es, glaube ich, noch nötig den Samba-Dienst danach einmal neu zu starten, um auf die Freigabe zugreifen zu können. Wer sich damit nicht auskennt, könnte dann Schwierigkeiten bekommen, daher wäre eine Erwähnung imho sinnvoll.

    -Eventuell wäre es noch ganz hilfreich, wenn du als Einleitung noch kurz darauf eingehen würdest, was es mit Paper Minecraft und Spigot auf sich hat. Ich weiß, das Wissen ist nicht zwingend notwendig um den Server aufzusetzen, aber schadet ja nicht.

    Ansonsten wirklich ein gutes Tutorial. Danke nochmal.

    1. Danke. Done. Gut so? Ich habe die Stelle aber mit dem Neustart des Servers wegen SMB nicht gefunden.

  7. Der Befehl um im laufenden System den Samba neu zu starten lautet: sudo service smbd restart && sudo service nmbd restart
    Eigentlich war ich mir sicher, dass dies notwendig ist, um die Änderungen in der smb.conf wirksam zu machen, aber anscheinend hat es bei dir ja auch ohne Neustart geklappt. Komisch.

    Ansonsten, ja super dass du den Artikel noch nachträglich anpasst, das macht ihn noch besser als er eh schon ist :)

  8. Moin!
    Hat die SD Karte wirklich so einen großen Effekt? Reicht nicht eine ganz normale class 10?

    1. Meiner Erfahrung nach ist I/O einer der wichtigsten Faktoren eines Minecraft-Servers. Besonders hat die SSD hat bei mir im Minecraft-Server auf dem NAS wirklich was gebracht. Und da die SD Karte kein riesen Kostenfaktor ist sollte man hier nicht sparen. Warum auch? Es reichen ja wenige GB.

  9. Hallo, ich bekomme bei

    wget -O SetupMinecraft.sh

    einen Fehler:

    SetupMinecraft.sh: Permission denied

    Was mache ich falsch?

    1. Hat sich erledigt, Fehler gefunden: Ich habe mich in einem Ordner befunden in dem ich keine Schreibrechte habe.

Schreibe einen Kommentar

Wie kann ich mich verifizieren lassen?