Wie man einen Minecraft-Server auf einem Raspberry Pi einrichtet
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.
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:
Der Erstellungsprozess verwendet mehrere Kerne auf Ihrem Raspberry Pi:
Und hier ist der letzte Bildschirm, den Sie sehen werden:
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 speichernWie 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.
Während dieser Zeit liegt die CPU-Last bei 100 % auf allen Kernen:
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:
Interaktion mit dem Spigot-Server
Typ
help
bei dieser Aufforderung (ohne das /), um eine Liste der möglichen Befehle zu erhalten:
Zum Beispiel mit dem Befehl Listekönnen Sie sehen, wie viele Spieler 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.
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:
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 :
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.
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:
Wenn Sie Minecraft starten, wird ein Anmeldebildschirm angezeigt:
Nachdem Sie sich angemeldet haben, sehen Sie einen Übersichtsbildschirm mit einer Schaltfläche zum Abspielen.
Nachdem der Download abgeschlossen ist, wird der Hauptbildschirm des Spiels angezeigt:
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).
Jetzt erhalten Sie eine Sicherheitsabfrage von Windows (wenn Sie unter Windows spielen):
Klicken Sie hier auf "Zugriff zulassen".
Sie sehen nun den folgenden Bildschirm:
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):
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:
Klicke auf "Zurück zum Spiel", um auf deinem neuen Minecraft-Server zu spielen!
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:
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:
Erstellen eines systemd-Dienstes
https://github.com/sindastra/systemd-minecraft
Fehlerbehandlung
unzureichender Arbeitsspeicher
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
- Eine kleine Geschichte von Minecraft Servern (hauptsächlich Bukkit / Spigot / Bedrock) (sindastra.de)
- Bitloco.org (Minecraft Java Edition Server Gemeinschaft)
- Stutzen Installationsanleitung (Spigotmc.org)
[...] Sie können einen Raspberry Pi als Webserver, Dateiserver, Druckserver, Medienserver, Minecraft-Server und IoT-Server verwenden [...]