Achtung! Diese Anleitung bezieht sich auf den Code in meinem GitHub Repository. Bitte keine Fragen zu dem Repository von TheRemote stellen. Das heißt: Nur die Links hier im Artikel nutzen. Sonst kann ich nicht helfen.

Ich wollte seit langer Zeit wegen den geringen Kosten einen Minecraft Server auf dem neuen Raspberry Pi 4 (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.

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.

Der Spigot-Fork „Paper“ dient als Grundlage

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.

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.

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. Raspbian Buster 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.

Schreiben der MicroSD Karte und SSH aktivieren

  1. Schreibt mit etcher die img-Datei von Raspbian Buster 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.

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.

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

Installation 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

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

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

Freigeben 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“ freigeben.

Die MyFritz-URL ist dann die Server-Adresse, die man in Minecraft einträgt. (z.B. qbnsepjzhd8cvzk7y.myfritz.net)

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 laufen performant auf dem Raspberry Pi 4 mit 4GB

Serverneustart nach 12 Stunden (optional)

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.

Konfiguration Samba-Server für Backups (optional)

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.

Leistung des Server optimieren

Bei mir erschien seit Minecraft 1.14 anfangs sehr oft diese Meldung in den Logs:

Can't keep up! Is the server overloaded? Running 5190ms or 103 ticks behind

Teilweise kam diese sogar nur wenige Sekunden nach dem Start einer neuen Karte. Bei mir hat das Plugin LimitPillagers (Download) wahre Wunder gewirkt. Damit habe ich alle Pillager entfernt und danach limitiert. Die Meldung habe ich so nie wieder gesehen.

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/lib/jvm/java-8-openjdk-armhf/bin/java -jar  -Xms2800M -Xmx2800M /home/pi/minecraft/paperclip.jar

Wer noch weiter gehen will, kann zusätzliche diese Parameter nutzen:

/usr/bin/screen -dmS minecraft /usr/lib/jvm/java-8-openjdk-armhf/bin/java -jar  -Xms2800M -Xmx2800M -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

Der Server läuft und läuft und läuft

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

185 Kommentare

  1. hi
    ich habe die Anleitung wiei angaegeben befolgt, aber wenn ich ./start.sh
    eingebe steht am Ende da Verzeichnis nicht gefunden:

    Starting Minecraft server. To view window type screen -r minecraft.
    To minimize the window and let the server run in the background, press Ctrl+A then Ctrl+D
    ./start.sh: Zeile 8: /usr/bin/screen: Datei oder Verzeichnis nicht gefunden

    vielen Dank im Vorraus

    1. Hi,

      hast du die Links zu diesem Repository genommen? Also die Links, die hier im Artikel verlinkt sind? Und dann bitte mal hochscrollen in deiner Ausgabe auf der Shell und schauen, was bei der Installation von „screen“ schief gegangen ist. Du bist im Verzeichnis „minecraft“ richtig?

    2. ich habe mir schon sowas ähnliches gedacht und habe den befehl wget …. einfach nochmal ausgeführt. Jetzt funktioniert es doch.
      Trotzdem vielen dank

    3. Super. Denk dran auch den cronjob einzurichten usw. Dann fährt er beim nächsten Mal automatisch hoch.

  2. Bei mir steht das:

    There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 559284224 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # /home/pi/minecraft/minecraft/hs_err_pid6836.log

    1. Hast du mein repository genutzt? Siehe Hinweis am Anfang des Artikels.

    1. Ausprobieren. Wir kamen schnell an unsere Grenzen. Deswegen auch die Synology Nummer.

  3. Ne Frage ; wie kann ich eine welt auf den py laden, damit die als server welt läuft?

    1. Server runterfahren (stoppen) und dann im World-Verzeichnis die Welt reinladen.

    2. dachte ich mir auch , allerdings wird nur die os partition angezeigt. In der Raspberry shell allerdings müsste laut ‚ls‘ ein minecraft ordner vorhanden sein (ist er nicht ,server läuft aber problemlos)

  4. Wie kann man den Server updaten?
    Hab heute, also kurz nach dem 1.14 Update beim Versuch zu connecten die Fehlermeldung bekommen, dass der Server noch auf 1.13.2 läuft. Geht das manuell oder muss man da einfach warten bis James A. Chambers das Script updatet?

    1. Erstens: Bitte die ersten Sätze dieses Artikels im hervorgehobenen Kasten lesen.
      Zweitens: 1.14.2 ist noch nicht stabil für PaperMC. Updaten macht gerade überhaupt keinen Sinn. Einfach im Client 1.13.2 auswählen und weiterspielen.

  5. Ist es möglich irgendwo die Server-Nachrichten zu modifizieren? Also z.B. das früher angezeigt wird, dass der Server bald herunter fährt. Oder auch eine Willkommensnachricht. sowas halt. Habe schon in den verschiedenen Dateien gesucht, aber nichts gefunden.
    LG Karlos

  6. Der ‚Live‘-Stream ist einfach nur ein MP4-Video, welches in Dauerschleife abgespielt wird. Soviel zu Live XD

  7. Bei mir werden, wenn ich start.sh mit ./start.sh ausführe und dann screen -r minecraft eingebe, sehr viele Errors ausgegeben – hauptsächlich lautet die Fehlermeldung „Unknown Source“. Kann mir jemand helfen?

    1. Hast du nein Repository auf GitHub genommen? Siehe erster Satz im Artikel.

    2. Das heißt, im besten Falle mache ich das ganze Tutorial noch einmal, nur eben mit den Dateien aus der GitHub repo? ( )

    3. An alle, die das selbe Problem wie ich/ein ähnliches Problem hatten, hier ein Link wie es zu funktionieren scheint

  8. Hallo!
    Ich bin in screen -r minecraft. Kann jedoch keine Commands wie zum Beispiel „/whitelist off“ oder „op“ eingeben. Mir wird immer gesagt, dass dieser Befehl nicht existiert. In /help existiert dieser jedoch.
    Ich kann auf meinem Client auf den Server joinen, jedoch habe ich keine Admin-rechte für Befehle. Admin wird über den Server per „op @username“ vergeben, richtig?

    Ich habe deine Anleitung Schritt für Schritt befolgt.

    TL:DR:
    Ich kann keine Befehle für den Server über screen -r minecraft eingeben.

    Ich hoffe du liest das :3 Danke

Schreib einen Kommentar

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

Diese Website zeigt Benutzerbilder über gravatar.com an.

Wie bekomme ich einen verifizierten Account? - Login