Wie man einen Minecraft-Server auf einem Raspberry Pi einrichtet

Ein Minecraft-Server auf einem Raspberry Pi Titelbild

Minecraft ist eines der beliebtesten Spiele, die jemals entwickelt wurden. Du kannst es mit deinen Freunden im Multiplayer-Modus spielen. Wusstest du, dass ein Raspberry Pi 4 leistungsstark genug ist, um einen Minecraft-Server zu betreiben? In diesem Artikel erfährst du die Grundlagen, welche verschiedenen Varianten es gibt, ein wenig über die Geschichte von Minecraft und wie du deinen eigenen Minecraft-Server auf deinem Raspberry Pi einrichten und betreiben kannst.

Die Geschichte von Minecraft-Servern

Um über Minecraft-Server zu sprechen, müssen wir kurz auf die beiden "großen" Forks von Minecraft eingehen.

Mojang, die Schöpfer von Minecraft, haben Minecraft ursprünglich im Java.

Lustige Randbemerkung: Obwohl Java wirklich portabel sein soll ("einmal schreiben und überall laufen lassen"), hängt das Spiel von nativen Bibliotheken ab, die x86 sind. Das bedeutet, dass die Java-Version von Minecraft nicht auf anderen Plattformen, wie dem Raspberry Pi, läuft. Der Raspberry Pi ist ARM-basiert (ARMv6 / ARMv7 / ARMv8, je nachdem, welchen Raspberry Pi man sich ansieht).

Raspi Berrys Java-Erklärungen

Diese Java-Minecraft-Version läuft auf PC-, Mac- und Linux-Rechnern (x86).

Dementsprechend gibt es Serversoftware, die mit der Java-Edition kompatibel ist (siehe unten für eine ausführliche Erörterung der verschiedenen verfügbaren Optionen).

Eine zweite Version von Minecraft, die von Grund auf neu geschrieben wurde, hieß MCPE (Minecraft Pocket Edition). Sie erschien ursprünglich für Android und wurde in C++. Diese Ausgabe wurde auf Windows 10, iOS, PlayStation 4, XBox und Nintendo Switch portiert. Es ist jetzt bekannt als Minecraft Bedrock Ausgabe. (Bedrock bezieht sich auf die in C++ geschriebene Engine). Dies ist nun die Hauptversion, einschließlich plattformübergreifendem Spiel.

Leider ist die Bedrock-Edition nicht mit der Java-Edition kompatibel. Das bedeutet, dass Mac- und Linux-Spieler nicht am plattformübergreifenden Spiel teilnehmen können.

Noch wichtiger ist, dass es eine eigene Serversoftware erfordert, auf die wir weiter unten kurz eingehen werden.

Xbox hat ein Video zur Erklärung von Bedrock vs. Java

Installation von Spigot auf Raspberry Pi OS 32 bit

Dies wird Sie durch die Installation von Spigot führen. Ich verwende dafür einen 8 GB Raspberry Pi 4 mit dem Standard-32-Bit-Betriebssystem, um mit der Installation zu beginnen.

Bereiten Sie die Installation vor

Öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:

sudo apt-get update
sudo apt-get install git openjdk-8-jre-headless
mkdir /home/pi/spigot-build
cd /home/pi/spigot-build

Dadurch wird die Paketliste aktualisiert und Git und OpenJDK 8 (Java Runtime Environment, JRE) installiert. Außerdem wird ein neues Verzeichnis für die Erstellung von Spigot erstellt und in dieses Verzeichnis gewechselt.

Laden Sie dann die aktuellste BuildTools.jar von der SpigotMC-Website. Sie können verwenden wget für diese:

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

Dies ist ein schneller Download mit etwa 4 MB.

Zapfstelle bauen

Starten Sie nun den Aufbau:

java -jar BuildTools.jar

Ich habe den Bau begonnen bei 13:00mit meinem Raspberry Pi 4 8GB, und es endete bei etwa 13:15 - Es dauerte also etwa eine Stunde und 15 Minuten. Hier ist ein Screenshot der ersten Ausgabe, die Sie sehen werden:

Beginn der Erstellung der Spigot-Terminalausgabe

Der Erstellungsprozess verwendet mehrere Kerne auf Ihrem Raspberry Pi:

htop-Ausgabe des Spigot-Erstellungsprozesses

Und hier ist der letzte Bildschirm, den Sie sehen werden:

Spigot-Erstellung abgeschlossen, spigot-1.16.4.jar ist fertig

Sobald der Build abgeschlossen ist, sehen Sie, wo die fertige Spigot-Server-.jar-Datei gespeichert wurde. In meinem Fall (da es spigot-1.16.4.jar gebaut hat), ist es:

/home/pi/spigot-build/./spigot-1.16.4.jar

Die übrigen Dateien werden nicht mehr benötigt, wir brauchen nur noch die endgültige spigot-*.jar

Installieren Sie Ihren neuen Minecraft-Server

Ich schlage vor, den Minecraft-Server in der /opt-Verzeichnishierarchie zu installieren. Das machen wir im nächsten Schritt, und benennen die .jar-Datei einfach in zapfen.jar:

sudo mkdir /opt/spigot
sudo mv /home/pi/spigot-build/spigot-*.jar /opt/spigot/spigot.jar
sudo chown -R pi:pi /opt/spigot

Der letzte Befehl ändert den Besitzer dieses Verzeichnisses in den Benutzer pi, was es Ihnen erleichtert, mit den erforderlichen Rechten zu starten, ohne einen neuen Benutzer anlegen zu müssen. Für ein System, das von mehreren Personen benutzt wird, und für zusätzliche Sicherheit / Kontrolle über die Rechte, möchten Sie vielleicht Ihren eigenen Systembenutzer anlegen, unter dem spigot läuft.

Sicherheitstipp

Nun können Sie versuchen, Ihren neuen Minecraft-Server zu starten, dem Sie 2 GB RAM zuweisen:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

Die Zuweisung von mehr als 2700M an den Spigot auf einem 32bit Raspberry Pi OS hat bei mir dazu geführt, dass der Server nicht startet:

[47.195s][warning][os,thread] Thread konnte nicht gestartet werden - pthread_create ist fehlgeschlagen (EAGAIN) für die Attribute: stacksize: 320k, guardsize: 0k, detached.
[07:57:48] [Server-Thread/ERROR]: Eine unerwartete Ausnahme ist aufgetreten
java.lang.OutOfMemoryErrorNative Thread kann nicht erstellt werden: möglicherweise kein Speicher mehr vorhanden oder Prozess-/Ressourcengrenzen erreicht
at java.lang.Thread.start0(Native Methode) ~[?:?]
at java.lang.Thread.start(Thread.java:803) ~[?:?]
at java.util.Timer.(Timer.java:177) ~[?:?]
at org.spigotmc.Metrics.start(Metrics.java:217) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at org.spigotmc.SpigotConfig.registerCommands(SpigotConfig.java:91) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:149) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:809) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:git-Spigot-a19903d-167ff59]
at java.lang.Thread.run(Thread.java:834) [?:?]
[07:57:48] [Server-Thread/ERROR]: Dieser Absturzbericht wurde gespeichert in: /opt/spigot/./crash-reports/crash-2020-11-23_07.57.48-server.txt
[07:57:48] [Server-Thread/INFO]: Beenden des Servers
[07:57:48] [Server-Thread/INFO]: Speichern von Spielern
[07:57:49] [Server-Thread/INFO]: Welten speichern

Wie unten beschrieben (Fehlerbehandlung / unzureichender Speicher), auch wenn der Server OK startet, kann es zu einem Absturz kommen, wenn der Speicher nicht ausreichtwenn man ihm zu viel Speicherplatz gibt - deshalb bleiben wir bei einem sicheren maximal 2 GB hier. Bei einem 64-Bit-Betriebssystem kann dieser Wert höher sein, so dass Sie mehr vom RAM des Raspberry Pi 4 / 8 GB nutzen können.

Spigot-Speicherbegrenzungen auf 32-Bit-Raspberry Pi OS

Spigot erzeugt nun zwei neue Dateien (eula.txt & server.properties) und ein Verzeichnis (Protokolle). Beim ersten Durchlauf wird eine Fehlermeldung angezeigt, da die EULA noch nicht akzeptiert worden ist:

Bibliotheken werden geladen, bitte warten...
[15:01:09] [main/ERROR]: Fehler beim Laden der Eigenschaften aus der Datei: server.properties
[15:01:09] [main/WARN]: Failed to load eula.txt
[15:01:09] [main/INFO]: Sie müssen der EULA zustimmen, um den Server betreiben zu können. Gehen Sie zu eula.txt für weitere Informationen.

Wenn Sie sich die Datei eula.txt ansehen, werden Sie Folgendes feststellen:

#Indem Sie die Einstellung unten auf TRUE ändern, erklären Sie sich mit unserer EULA einverstanden (https://account.mojang.com/documents/minecraft_eula).
#Sun Nov 22 15:01:09 CET 2020
eula=false

Bitte besuchen Sie die Website von Mojang und Lesen Sie die EULA (Endbenutzer-Lizenzvertrag), bevor Sie ihn tatsächlich akzeptieren.

So akzeptieren Sie es. ausführen

nano /opt/spigot/eula.txt

Und die letzte Zeile sollte lauten

eula=true

Speichern Sie mit Strg + O (und drücken Sie die Eingabetaste), und beenden Sie mit Strg + X

Spigot von der Kommandozeile aus starten

Versuchen Sie nun, den Befehl zum Starten des Servers erneut auszuführen:

java -Xms2G -Xmx2G -XX:+UseG1GC -jar spigot.jar nogui

Der Spigot Minecraft-Server wird nun gestartet und initialisiert.

Spigot startet erfolgreich, nachdem Sie die EULA akzeptiert haben

Während dieser Zeit liegt die CPU-Last bei 100 % auf allen Kernen:

htop zeigt die Systembelastung während der Spigot-Initialisierung

Während des Starts werden einige nützliche Informationen angezeigt (hier ein Auszug):

[15:09:05] [Server-Thread/INFO]: Starte Minecraft Server Version 1.16.4
[15:09:06] [Server-Thread/INFO]: Standard Spieltyp: SURVIVAL
[15:09:09] [Server-Thread/INFO]: Starte Minecraft-Server auf *:25565

Die letzte Zeile zeigt, dass sich Ihr Minecraft-Server an alle IP-Adressen des Raspberry Pi und an Anschluss 25565 auf diese IP-Adressen.

Das Startup nahm 190.812 s (oder etwa drei Minuten) auf meinem Raspbery Pi 4 / 8GB. Sobald der Vorgang abgeschlossen ist, wird eine Meldung angezeigt:

Die Eingabeaufforderung, die Sie zur Interaktion mit dem Server verwenden können

Interaktion mit dem Spigot-Server

Typ

help

bei dieser Aufforderung (ohne das /), um eine Liste der möglichen Befehle zu erhalten:

wird eine Liste möglicher Befehle zur Interaktion mit dem Server angezeigt

Zum Beispiel mit dem Befehl Listekönnen Sie sehen, wie viele Spieler online sind:

Liste zeigt, dass keine Spieler mit maximal 20 Spielern online sind

Mit dem Befehl Versionkönnen Sie die aktuelle Version Ihres Servers sehen und ob ein neuerer Server verfügbar ist. Beachten Sie, dass Sie die Datei spigot.jar neu erstellen müssen, um den Server zu aktualisieren.

Ausgabe der Version. Auf diesem Server läuft CraftBukkit Version git-Spigot-a19903d-167ff59 (MC: 1.16.4) (Implementing API Version 1.16.4-R0.1-SNAPSHOT). Sie verwenden die neueste Version

Ich kann nicht mehr mithalten! Ist der Server überlastet? Die Running behind Warnung

Sie werden höchstwahrscheinlich eine Ausgabe wie die folgende sehen

[08:06:11] [Server-Thread/WARN]: Kann nicht mithalten! Ist der Server überlastet? Läuft 8444ms oder 168 Ticks hinterher

Finden Sie die IP-Adresse Ihres Raspberry Pi Minecraft-Servers

Wenn Sie sich nicht sicher sind, wie die IP-Adresse Ihres Raspberry Pi lautet, können Sie sie ganz einfach durch Eintippen ermitteln:

ip -4 addr show

Dies führt zu einer Ausgabe ähnlich der folgenden:

Die ip -4 addr zeigt die Ausgabe auf dem Raspberry Pi

Suchen Sie nach dem Eintrag eth0 (in meinem Fall 2), der das LAN auf dem Raspberry Pi darstellt. Die IP-Adresse ist das Bit nach inet und vor dem Schrägstrich. In meinem Fall 192.168.1.235 :

Die wichtigsten Stellen, an denen die IP-Adresse zu finden ist

Verbinden Sie sich mit Ihrem Minecraft-Server

Sie benötigen (natürlich 🙂 Minecraft, das Sie bei die offizielle Minecraft-Website. Sie benötigen die Java-Version von Minecraft, wie bereits erwähnt.

Klicken Sie auf Minecraft Java Edition

Wenn ihr Minecraft noch nicht habt und es kaufen wollt, müsst ihr ein Mojang-Konto einrichten. Mit dem Kauf erhalten Sie eine Bestätigungs-E-Mail, die die Download-Links für Windows, macOS, Linux, Arch Linux und Debian enthält (beachten Sie, dass es sich um x86-Systeme handeln muss, wie bereits erwähnt!)

Für Windows erhalten Sie zum Beispiel MinecraftInstaller.msi:

Minecraft Starthilfe-Assistent

Wenn Sie Minecraft starten, wird ein Anmeldebildschirm angezeigt:

Minecraft-Anmeldebildschirm

Nachdem Sie sich angemeldet haben, sehen Sie einen Übersichtsbildschirm mit einer Schaltfläche zum Abspielen.

Wenn du auf "Play" klickst, wird Minecraft zuerst die neueste Version herunterladen, in meinem Fall 1.16.4

Nachdem der Download abgeschlossen ist, wird der Hauptbildschirm des Spiels angezeigt:

Der Hauptbildschirm des Spiels bietet dir die Wahl zwischen Einzelspieler, Mehrspieler und Minecraft Realms

Klicken Sie hier auf Multiplayer. Sie erhalten eine Warnung über das Online-Spiel von Drittanbietern, klicken Sie auf fortfahren hier (optional: Sie können auch das Kästchen diesen Bildschirm nicht mehr anzeigen).

Achtung! Online-Spiel von Drittanbietern

Jetzt erhalten Sie eine Sicherheitsabfrage von Windows (wenn Sie unter Windows spielen):

Sicherheitsabfrage der Windows-Firewall

Klicken Sie hier auf "Zugriff zulassen".

Sie sehen nun den folgenden Bildschirm:

Multiplayer spielen, Scannen nach Spielen in Ihrem lokalen Netzwerk

Um schnell loszulegen, klicken Sie auf Direktverbindung und geben Sie hier die IP-Adresse Ihres Servers ein (siehe oben, wie Sie diese herausfinden können):

Direkte Verbindung, mit der Möglichkeit, die Serveradresse einzugeben und einem Server beizutreten

Minecraft merkt sich die IP-Adresse für die nächste Sitzung und schlägt sie dir automatisch vor.

Klicken Sie auf Server beitreten. Die Verbindung wird hergestellt, und es wird kurz ein Ladebildschirm angezeigt:

ip -4 addr show

Schließlich wird das Spielmenü angezeigt:

Menü "Spiel

Klicke auf "Zurück zum Spiel", um auf deinem neuen Minecraft-Server zu spielen!

Minecraft Multiplayer auf deinem eigenen Raspberry Pi Minecraft Server!

Du kannst während des Spiels F3 drücken, um ein Overlay mit Informationen anzuzeigen, wo du sehen kannst, dass du tatsächlich mit einem Spigot-Server verbunden bist, und die Minecraft-Version überprüfen kannst:

F3 öffnet ein Overlay mit einigen Statistiken und Debugging-Informationen in Minecraft (mit F11 wird es bildschirmfüllend angezeigt)
Wenn Sie Ihr Spiel im Überlebensmodus für einige Zeit unbeaufsichtigt lassen, werden Sie wahrscheinlich sterben. "buyzero wurde von einem Zombie erschlagen", wodurch Sie die Möglichkeit haben, erneut zu starten oder zum Titelbildschirm zu wechseln.

Ausgabe auf Ihrem Raspberry Pi Minecraft-Server

Sobald du dich verbunden hast, gibt es einige zusätzliche Ausgaben auf deinem Minecraft-Server:

[15:53:32] [Benutzerauthentifikator #1/INFO]: Die UUID des Spielers buyzero lautet e76a3199-3ed0-4064-8086-d9f565235f71
[15:53:33] [Server-Thread/INFO]: buyzero[/192.168.1.202:51388] eingeloggt mit Entity-ID 435 auf ([Welt]25.5, 64.0, 137.5)

Der Befehl Liste zeigt Ihnen nun an, dass ein Benutzer angemeldet ist:

[15:57:05] [Server-Thread/INFO]: Es sind 1 von maximal 20 Spielern online: buyzero

Außerdem werden Ereignisse, die Ihre Spieler betreffen, angezeigt:

[16:04:24] [Server-Thread/INFO]: buyzero wurde von Zombie getötet

Mit dem Befehl op buyzero können Sie den Benutzer buyzero zu einem Serverbetreiber machen (ersetzen Sie Ihren Benutzernamen entsprechend):

op buyzero
[08:09:18] [Server-Thread/INFO]: Buyzero zum Serverbetreiber gemacht

Anhalten des Spigot Minecraft-Servers

Wenn Sie sich an der Eingabeaufforderung Ihres Minecraft-Servers befinden, geben Sie stoppen gefolgt von Enter. Dadurch wird der Server angehalten, die Welt gespeichert und Sie kehren zur Eingabeaufforderung zurück:

stoppen

[08:36:57] [Server-Thread/INFO]: Anhalten des Servers
[08:36:57] [Server-Thread/INFO]: Beenden des Servers
[08:36:57] [Server-Thread/INFO]: Speichern von Spielern
[08:36:57] [Server thread/INFO]: buyzero hat die Verbindung verloren: Server geschlossen
[08:36:57] [Server-Thread/INFO]: buyzero hat das Spiel verlassen
[08:36:57] [Server-Thread/INFO]: Speichern von Welten
[08:36:57] [Server-Thread/INFO]: Speichern von Chunks für Level 'ServerLevel[world]'/minecraft:overworld
[08:37:02] [Server-Thread/INFO]: ThreadedAnvilChunkStorage (world): Alle Chunks sind gespeichert
[08:37:02] [Server-Thread/INFO]: Speichern von Chunks für Level 'ServerLevel[world_nether]'/minecraft:the_nether
[08:37:05] [Server-Thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): Alle Chunks sind gespeichert
[08:37:05] [Server-Thread/INFO]: Speichern von Chunks für Level 'ServerLevel[world_the_end]'/minecraft:the_end
[08:37:10] [Server-Thread/INFO]: ThreadedAnvilChunkStorage (DIM1): Alle Chunks sind gespeichert
[08:37:10] [Server-Thread/INFO]: ThreadedAnvilChunkStorage (world): Alle Chunks sind gespeichert
[08:37:10] [Server-Thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): Alle Chunks sind gespeichert
[08:37:10] [Server-Thread/INFO]: ThreadedAnvilChunkStorage (DIM1): Alle Chunks sind gespeichert

Ihre Benutzer werden den folgenden Bildschirm sehen:

Verbindung verloren / Server geschlossen / Zurück zur Serverliste

Erstellen eines systemd-Dienstes

https://github.com/sindastra/systemd-minecraft

Fehlerbehandlung

unzureichender Arbeitsspeicher

Verbindung verloren, Interne Exception: java.io.IOException: Eine bestehende Verbindung wurde vom Remotehost geschlossen (der Remotehost hat die bestehende Verbindung geschlossen)

Der Screenshot oben zeigt die Fehlermeldung, die die Spieler, die sich mit Ihrem Server verbinden, sehen werden, während Sie auf der Serverseite die folgende Logausgabe sehen werden:

Der Speicherplatz reicht nicht aus, um die Java-Laufzeitumgebung fortzusetzen.
Native Speicherzuweisung (malloc) konnte 1438248 Bytes für Chunk::new nicht zuweisen
Eine Fehlerberichtdatei mit weiteren Informationen wird als gespeichert:
/opt/spigot/hs_err_pid1531.log

Compiler-Wiedergabedaten werden als gespeichert:
/opt/spigot/replay_pid1531.log

In diesem Fall müssen Sie Ihre Speichereinstellungen anpassen. Gemäß die Empfehlung in diesem Artikelsollte er etwa 1000 MB bis 1500 MB kleiner sein als der auf Ihrem Raspberry Pi verfügbare Systemspeicher. Bedenken Sie, dass bei einem 32bit-Betriebssystem der Prozess insgesamt nur etwas weniger als 4 GB RAM adressieren kann. Selbst mit einem 32bit-Raspberry Pi sollten Sie Ihrem Minecraft-Server also insgesamt weniger als 2500 MB - 2000 MB zur Verfügung stellen, um auf der sicheren Seite zu sein (2GB).

Schlussfolgerung

Mit dieser Anleitung kannst du deine eigenen Raspberry Pi Minecraft-Server betreiben und mit deinen Freunden zusammen spielen.

Referenzen / Weiterführende Literatur

"Minecraft" ist eine Marke von Mojang Synergies AB
Diese Website steht in keiner Verbindung zu Minecraft.

1 Kommentar

  1. [...] Sie können einen Raspberry Pi als Webserver, Dateiserver, Druckserver, Medienserver, Minecraft-Server und IoT-Server verwenden [...]

Hinterlassen Sie einen Kommentar