Ein Minecraft-Server für die Kids auf einem Raspberry Pi

Ein Minecraft-Server auf einem Raspberry Pi
Ein Minecraft-Server auf einem Raspberry Pi

Das Open-World-Spiel Minecraft ist ja bei vielen Kids seit Jahren ein Dauerthema. So natürlich auch bei unseren Kindern, die zunächst nur auf unseren iPads oder dem Apple TV mit der Pocket Edition spielen durften. Dort haben sie ihre Welten gebaut. Große Häuser, Villen, ganze Dörfer und alles was so dazu gehört. So wie bei vielen anderen Spielen auch, habe ich zwar immer ein Auge darauf, was die Kids da so machen, aber wirklich auskennen tue ich mich da nicht. Spawnen, Creeper, Enderdrache, Cheats, Skins, Mods, das sind so Begriffe, die hier täglich fallen. Ihr kennt das...

Wie ich dann aber bald lernen durfte, ist die Pocket Edition nur eine abgespeckte Variante, mit der man im Kreativmodus zwar eigene Welten bauen, oder im Überlebensmodus Welten erkunden, Dinge sammeln oder gegen Monster kämpfen kann. Aber in der „richtigen“ Minecraft-Version – der Java-Edition – die man auf dem PC installieren muss, kann man natürlich viel mehr machen. Man kann Mods installieren oder in der Forge-Version weitere Funktionen oder Cheats nutzen. Nun ja, die Kids kennen sich da deutlich besser aus, als ich...

Gemeinsam mit Freunden spielen

Natürlich kam irgendwann der Wunsch auf, auch mal mit Freunden zusammen spielen zu dürfen. Das geht in der Pocket Edition sogar recht einfach, wenn sich alle im gleichen WLAN befinden. Dazu hatte ich zeitweise sogar ein gesondertes Gäste-WLAN in unserem UniFi-System eingerichtet, in dem sich die eingeloggten Geräte gegenseitig sehen können (In unserem normalen Gäste-Netz ist diese Funktion natürlich deaktiviert). Und so konnten die Freunde mit ihren Smartphones oder Tablets gemeinsam Minecraft „zocken“.

Aber das ging eben nur, wenn die Freunde zu Besuch waren. Außerhalb unseres WLANs ging das natürlich nicht. Hierzu müsste man sich auf einem Server einloggen, von denen es haufenweise im Internet gibt. Eine Option, die wir – und auch die anderen Eltern – natürlich nicht erlauben. Dabei ist ja nicht kontrollierbar, wer sich da noch alles so auf einem öffentlichen Server herumtreibt.

Ein eigener Minecraft-Server

Bleibt also nur noch die Möglichkeit, einen eigenen Minecraft-Server einzurichten. Der Hauptvorteil dabei ist natürlich, dass ich dann die volle Kontrolle darüber habe, wer sich auf dem Server einloggen darf. So einen Server könnte man natürlich auf dem PC der Kinder oder auf der NAS installieren. Aber viel naheliegender ist doch ein kleiner Raspberry Pi, der als reiner Minecraft-Server fungiert. Dieser läuft somit komplett autark im lokalen Netz und kann die anderen Geräte nicht beeinträchtigen. Außerdem kann dieser sogar bedenkenlos über die Firewall freigegeben werden, sodass sich auch die Freunde der Kinder von extern dort einloggen können.

Was benötigt man dazu?

Wie ich schon im meinem Artikel zum Pi-hole geschrieben habe, benötigt man natürlich einen Raspberry Pi, eine Micro-SD-Karte (16GB) und ein USB-Netzteil. Es gibt auch komplette Starter-Kits, die alles Notwendige enthalten. Für die Erstinstallation braucht man außerdem einmalig einen Monitor und eine USB-Tastatur. Danach wird der RasPi headless betrieben und man kann man sich per SSH über die Konsole einloggen. Ich will jetzt hier nicht näher darauf eingehen, auf der Raspberry-Pi-Website gibt es viele Anleitungen was genau zu tun ist. Es genügt übrigens die Raspbian-Version ohne Desktop – auch Raspbian Stretch Lite genannt.

Der Raspberry Pi sollte dann noch so konfiguriert werden, dass dieser die maximale Leistung für Minecraft zur Verfügung stellt. Dazu reduziert man in der Pi-Konfigurationsdatei den Speicher der GPU, denn die wird ja nicht benötigt. Außerdem kann man den Port der SD-Karte auf maximale Geschwindigkeit setzen (Overclocking):

sudo nano /boot/config.txt

Dort fügt man am Ende der Datei folgende Zeilen ein:

gpu_mem=16
dtparam=sd_overclock=100

Nach einem Reboot steht dem Minecraft-Server dann die maximale Leistung des Raspberry Pis zur Verfügung.

Die Installation des Minecraft-Servers

Wenn der Raspberry Pi grundsätzlich eingerichtet ist, dann muss natürlich der Server installiert werden. Dazu findet man online diverse Anleitungen auf ganz unterschiedlicher Basis. Ich habe zunächst versucht einen Server auf Basis von Cuberite zu installieren, was aber irgendwie nicht so richtig funktioniert hat.

Bei der weiteren Recherche bin ich dann auf den recht Resourcenschonenen Spigot-Ableger Paper gestoßen. James A Chambers hat dazu ein tolles Script geschrieben, mit dem die Installation aller notwendigen Komponenten voll automatisch abläuft. Das hat bei mir wunderbar funktioniert. Und so gehts:

wget -O SetupMinecraft.sh https://raw.githubusercontent.com/TheRemote/RaspberryPiMinecraft/master/SetupMinecraft.sh
chmod +x SetupMinecraft.sh
./SetupMinecraft.sh

Nach der Installation befindet sich der Server dann im Verzeichnis „~/minecraft“ und kann das erste Mal gestartet werden:

~/minecraft/start.sh

Damit läuft der Server im Hintergrund. Auf die Konsole des Servers gelangt man mit:

screen -r minecraft

Der Start dauert ein wenig, aber danach kann man in der Konsole durch Eingabe von help die verfügbaren Befehle aufrufen. Die Konsole verlässt man durch die Eingabe von Strg+A und dann Strg+D, der Server läuft dann im Hintergrund weiter. Die Eingabe von stop oder Strg+C beendet bzw. stoppt den Server.

Die weitere Konfiguration des Minecraft-Servers

Die Grundkonfiguration des Minecraft-Servers sollte dann noch etwas angepasst werden. Insbesondere die Aktivierung der Whitelist und ein Limit für die Anzahl der Spieler halte ich für wichtig. Auch die Kids hatten noch ein paar Wünsche, wie sie den Server nutzen wollen. Dazu muss die Datei server.properties editiert werden:

nano ~/minecraft/server.properties

Ich habe in erster Linie folgende Einträge geändert:

view-distance=8
enable-command-block=true
enforce-whitelist=true
max-players=5
pvp=false
white-list=true
op-permission-level=3

Ein vollständige Übersicht aller Servereinstellungen findet Ihr übrigens im Minecraft-Wiki. Wenn man die Änderungen vorgenommen hat, muss der Minecraft-Server natürlich beendet und neu gestartet werden.

Portweiterleitung

Der Minecraft-Server ist damit einsatzbereit. Zumindest im lokalen Netz. Damit die Freunde der Kids sich auch von extern auf dem Server einloggen können, muss im Router allerdings noch eine Portweiterleitung auf die IP-Adresse des Minecraft-Servers eingerichtet werden. Der Standardport ist 25565, bei Bedarf könnte dieser aber in der server.properties geändert werden.

Whitelist – Wer darf mitspielen?

Außerdem müssen die Spieler natürlich in die Whitelist eingetragen werden, so können sich nur die Spieler mit dem Server verbinden, die dort eingetragen sind. Damit habe ich also die volle Kontrolle, mit wem meine Kids online spielen. Man benötigt lediglich den Spielernamen und kann diesen über die Minecraft-Konsole mit folgendem Befehl eintragen:

whitelist add {spielername}

Operator-Status

Ganz stolz sind meine Kids natürlich, dass sie auf dem Server den Operator-Status haben. Damit können sie z.B. Befehlsblöcke editieren und Cheat-Befehle ausführen. Das Operator-Level habe ich in der server.properties übrigens auf 3 gesetzt. Damit können sie alles machen, außer den Server zu stoppen. Zunächst müssen sie natürlich in die Whitelist eingetragen werden und können dann ganz einfach zum Operator gemacht werden:

op {spielername}

Bestehende Welten auf den Server hochladen

Der Server ist nun in Betrieb, allerdings nur mit einer neuem und leeren Standard-Welt. Damit die Kinder auch auf dem Server in ihren bereits offline erstellten Welten spielen und darin weiter bauen können, müssen diese vom PC auf den Server kopiert werden. Die aktuelle Welt ist in der server.properties festgelegt:

level-name=world

Dabei ist „world“ das Verzeichnis im „~/minecraft“ Ordner. Nach dem ersten Start des Minecraft-Servers werden noch die Ordner „world_nether“ und „world_the_end“ angelegt. Eine Welt besteht also aus den folgenden drei Verzeichnissen:

~/minecraft/world
~/minecraft/world_nether
~/minecraft/world_the_end

Wenn man also nun die Welt, die bisher auf dem PC erstellt wurde, auf dem Server nutzen will, dann muss man den Inhalt des Ordners „world“ mit den Daten der Welt vom PC ersetzen. Und die beiden anderen Verzeichnisse sollte man dann am besten ebenfalls leeren.

Besser ist es allerdings, wenn man einen neuen Ordner, z.B. „Meine Welt“ anlegt und diesen in der server.properties einträgt:

level-name=Meine Welt

Nach dem Neustart des Minecraft-Servers wird dann diese Welt geladen. So kann man man auch weitere Welten auf dem Server ablegen und über den Eintrag in der server.properties festlegen, welche Welt gestartet werden soll.

Wechsel der Welt und automatischer Neustart

Leider ist das ja doch etwas umständlich und daher arbeite ich gerade noch an einer Lösung, wie man das etwas komfortabler machen kann. Z.B. mit einem Webinterface, über das man die gewünschte Welt auswählt und die dann den Server neu startet.

Die Welt könnten die Kids ja bei Bedarf sogar noch selber austauschen. Dazu wäre nur ein Samba-Server (smbd) notwendig und man würde das World-Verzeichnis als Windows-Freigabe öffnen. Aber der Server lässt sich eben nur über die Konsole starten und da lasse ich meine Kids nicht dran.

Ich halte Euch auf dem Laufenden...

Bisher 2 Kommentare
  1. Karl

    Karl

     

    8. Dezember 2018, 01:10 Uhr

    Hi,
    tolles Projekt, was du da für deine Kids machst. :)
    Minecraft ist eine tolle Sache, in die man viel Zeit reinstecken kann und auch ein echt sehenswertes Ergebnis hervorbringen kann. Man muss nur verdammt aufpassen, dass man nicht zu viel Zeit reinsteckt - eigene Erfahrung. :P

    Wenn du dich dazu überreden kannst, das Projekt auf einer x86 Plattform statt einem Raspberry laufen zu lassen, oder vielleicht Exagear für deinen Raspberry hast, gibt es ein Web-Interface namens "Multicraft". :)

    Was mehrere Welten betrifft, sofern du Bukkit, Spigot oder Paper nutzt, dann solltest du dir mal das Plugin Multiverse anschauen. ;)

    Wenn du zu der ganzen Geschichte Fragen hast, kannst du mich gerne mal per Mail anschreiben. Kenne mich ganz gut mit der Angelegenheit aus. ^^

    Gruß Karl

  2. Thomas Mielke

    8. Dezember 2018, 02:32 Uhr

    @Karl: Danke für den Hinweis. Schaue ich mir mal an.

Dein Kommentar?

Menschlich? Dann gib bitte die 5 Zeichen genau so ein, wie Du sie in der Grafik lesen kannst. Keine 5 Zeichen? Erzeuge einfach einen neuen Code.

Gravatar:

Wenn Du möchtest, dass Dein Bild neben Deinem Kommentar erscheint, dann melde Dich einfach bei Gravatar an.

Nutzungshinweise:

Dein Kommentar erscheint nicht automatisch, sondern wird erst nach einer Prüfung manuell freigeschaltet. Ich behalte mir vor alle Kommentare zu löschen, die

  • rassistische, sexistische oder gewaltverherrlichende Inhalte haben,
  • zu kriminellen Aktionen aufrufen oder diese verteidigen,
  • beleidigende Inhalte besitzen,
  • Werbung für Dritte darstellen oder deren Inhalte einem Link auf fremde Angebote gleichkommt.