Minecraft Server automatisch starten

Minecraft Server automatisch starten Im Artikel Eigener Minecraft Server auf dem Raspberry Pi habe ich gezeigt, wie man einen Minecraft Server auf dem Raspberry Pi installiert. Hier zeige ich dir, wie du den Minecraft Server automatisch starten kannst, sobald du den Pi startest.

Das funktioniert übrigens nicht nur auf dem Raspberry Pi, sondern auch auf anderen Linux-Systemen.

In meinem Tutorial zeige ich dir ausführlich jeden Schritt, um deinen Minecraft Server als Systemdienst laufen zu lassen.

Inhaltsverzeichnis

Vorbereitungen für den automatischen Systemstart des Minecraft Servers

Am Ende dieses Artikels wirst du einen Systemdienst eingerichtet haben, der deinen Minecraft Server automatisch startet und stoppt. Vorher müssen allerdings noch ein paar Vorbereitungen getroffen werden. Es müssen z. B. ein Start- und Stop-Script erstellt sowie ein Programm zur Steuerung des Minecraft Server installiert werden.

Start-Script für den Minecraft Server

Ein eigenes Start-Script für den Start ist nicht unbedingt notwendig, erleichtert allerdings später Änderungen und die Fehlersuche. Darum legen wir nun eine neue Datei mit dem Namen start.sh im Verzeichnis des Minecraft Servers mit folgendem Inhalt an:

				
					#!/bin/bash
/usr/bin/java -Xmx2G -Xms2G -jar server.jar nogui
				
			

Die erste Zeile zeigt dem Betriebssystem, welches Programm verwendet werden soll, um das Skript auszuführen. Wir erstellen ein Bash-Script, darum wird /bin/bash verwendet. 

Die zweite Zeile ist genau der Befehl, den wir auch immer zum Starten von unserem Minecraft Server ausführen (siehe auch hier). Mit einer Ausnahme: Ich habe den Pfad zur Java Virtual Machine absolut angegeben. Sollte deine JVM in einem anderen Ordner liegen, musst du den Pfad entsprechend anpassen.

Wenn du nun den Verzeichnis-Inhalt auflistest, sollte die Datei wie folgt angelegt worden sein:

Start-Script für Minecraft Server
Start-Script für Minecraft Server

Wenn wir uns die Datei-Rechte anschauen sehen wir, dass die Datei keine Ausführungsrechte besitzt.: -rw-r–r–. Dies müssen wir ändern und setzen das Ausführungsrecht mit folgendem Befehl:

				
					chmod +x start.sh
				
			

Danach sollten die Rechte korrekt gesetzt sein und wir können das Script für unseren System-Dienst verwenden: -rwxr-xr-x

Start-Script für Minecraft Server mit Ausführungsrechten
Start-Script für Minecraft Server mit Ausführungsrechten

Wir führen nun einen Test aus, um zu schauen, ob das Start-Script den Minecraft Server wirklich startet. Gebe dazu folgenden Befehl ein:

				
					./start.sh
				
			

Im Grunde genommen ist der Befehl nur der Name des Scripts. Allerdings steht vor dem Namen noch ein ./. Dies sagt dem Betriebssystem, dass sich die Datei im aktuellen Verzeichnis befindet.

Der Server sollte nun ordnungsgemäß hochfahren und damit sind die Vorbereitungen für den Start auch abgeschlossen.

Stop-Script für den Minecraft Server

Es ist wichtig, dass der Minecraft Server immer ordnungsgemäß gestoppt wird. Ansonsten kann es zu Problemen kommen. Es könnte z. B. deine Minecraft Welt noch für den Zugriff durch eine andere Server-Instanz gesperrt sein.

Für das Stoppen des Minecraft Servers sind etwas mehr Vorbereitungen als beim Starten notwendig. Dies liegt daran, dass der Server beim automatischen Start als Systemdienst im Hintergrund ausgeführt wird. Dadurch haben wir keinen direkten Zugriff auf die Server-Konsole.

Wir behelfen uns mit einem Programm namens mcrcon.  Mit mcrcon können wir über das sogenannte RCON Protokoll Befehle an den Server senden. Aber dazu später mehr. Zunächst einmal müssen wir das Programm installieren.

Git installieren

mcrcon kompilieren und installieren wir direkt aus den Sourcen des Programms und müssen diese daher von Github herunterladen. Dazu müssen wir Git installieren, damit wir den Quellcode leicht klonen können:

				
					sudo apt install git
				
			

Mit diesem Befehl installieren wir git. Das ganze sollte dann in etwas so aussehen:

Git Installation auf dem Raspberry Pi
Git Installation auf dem Raspberry Pi

Mit dem folgenden Befehl kannst du prüfen, ob die Installation erfolgreich war. Es sollte dann die Version von git angezeigt werden:

				
					git --version
				
			

mcrcon installieren

Als Nächstes installieren wir mcrcon. Dazu klonen wir als Erstes das Git-Repository und holen somit den Quellcode auf unsere Festplatte. Danach kompilieren wir das Programm mit make und können dann die Installation starten. 

Gehe zunächst aus dem Verzeichnis des Minecraft Servers heraus (z.B. mit cd .. in das übergeordnete Verzeichnis) und führe diese Befehle dann nacheinander aus:

				
					git clone https://github.com/Tiiffi/mcrcon.git
cd mcrcon
make
sudo install mcrcon /usr/bin/mcrcon
				
			

Git legt mit dem ersten Befehl automatisch ein neues Verzeichnis namens mcrcon an und lädt den Quellcode von Github in dieses Verzeichnis herunter. 

Das ganze sollte dann ungefähr so bei dir aussehen:

mcrcon Installation auf dem Raspberry Pi
mcrcon Installation auf dem Raspberry Pi

Jetzt kannst du noch testen, ob die Installation erfolgreich war:

				
					mcrcon -v
				
			

Dieser Befehl sollte dir im Erfolgsfall folgende Programminfos ausgeben:

mcrcon Versionsinformationen
mcrcon Versionsinformationen

RCON aktivieren

RCON (Remote Console) ist ein Protokoll, das es erlaubt, administrative Kommandos an einen laufenden Minecraft-Server über das Netzwerk zu schicken – ohne dass du direkt im Terminal oder Spiel eingeloggt bist.

Du kannst RCON z. B. benutzen, um:

  • den Minecraft Server herunterzufahren 
  • Spieler zu kicken oder bannen
  • Nachrichten an Spieler zu schicken
  • u. v. m.

Um RCON zu aktivieren, muss die Datei server.properties im Verzeichnis des Servers angepasst werden. Folgenden Zeilen müssen in der Datei geändert bzw. ergänzt werden:

				
					enable-rcon=true
rcon.password=<passwort>
rcon.port=25575
				
			

Ersetze <passwort> mit einem Passwort deiner Wahl. Dieses Passwort wird für die Verbindung zum Minecraft Server über RCON benötigt. 

Jetzt können wir schon testen, ob die Verbindung funktioniert. Starte dazu deinen Minecraft und führe folgendes Kommando aus (Bitte <passwort> mit dem Passwort ersetzen, welches du in deiner server.properties gesetzt hast):

				
					mcrcon -H 127.0.0.1 -P 25575 -p <passwort> stop
				
			

Wenn alles funktioniert hat, sollte Server nun gestoppt worden sein.

Über den Parameter -H gibt man übrigens den Host bzw. die IP-Adresse des Hosts an, auf dem der Minecraft Server läuft. 127.0.0.1 ist eine spezielle IP-Adresse, die immer auf den eigenen Hosts verweist (localhost). Du könntest diesen Befehl aber auch einfach von einem anderen Rechner aus dem Netzwerk ausführen und hier die IP-Adresse des Servers angeben.

Stop-Script erstellen

Wenn im vorherigen Schritt alles geklappt können wir nun ein Stop-Script für den Minecraft erstellen. Dazu legen wir eine neue Datei mit dem Namen stop.sh im Verzeichnis des Minecraft Servers mit folgendem Inhalt an: 

				
					#!/bin/bash
/usr/local/bin/mcrcon -H 127.0.0.1 -P 25575 -p <passwort> stop
				
			

Die Datei enthält den gleichen Befehl wie oben bei unserem Test. Auch hier muss wieder darauf geachtet werden, dass <passwort> mit deinem eigenen Passwort ersetzt wird. Außerdem geben wir auch hier den kompletten Pfad zu mcrcon an.

Wie schon beim Start-Script müssen wir auch hier noch das Ausführungsrecht für die Datei setzen:

				
					chmod +x stop.sh
				
			

Start -und Stop-Test

Bevor wir zum letzten Schritt – das Einrichten des Systemdienstes  – kommen, sollten wir noch einen Test der beiden Scripts durchführen.

Dazu stellen wir zunächst sicher, dass unser Minecraft Server gestoppt ist und geben folgenden Befehl ein:

				
					ps -fe | grep java
				
			

Was macht dieses Kommando?

  • ps gibt eine Liste aller aktiven Prozesse des Systems aus
  • Mit der | (Pipe) können wir die Ausgabe eines Befehls auf einen anderen Befehl umleiten
  • grep java filtert die Liste der Prozesse nach dem Wort java

Die Ausgabe sieht dann z. B. so aus, wenn der Server gestartet ist:

Prozesse unter Linux anzeigen und filtern mit ps und grep
Prozesse unter Linux anzeigen und filtern mit ps und grep

In der ersten Zeile sehen wir einen Prozess, der genau unseren Start-Befehl für den Minecraft Server enthält. Diese Zeile würde nicht angezeigt werden, wenn der Server gestoppt wäre.

Somit können wir den Server über unsere beiden Script starten und stoppen und das Ergebnis mit dem ps-Kommando überprüfen.

Wir prüfen also mit den folgenden drei Befehlen, ob unsere Start- und Stop-Scripte sauber funktionieren:

				
					ps -fe | grep java
./start.sh
./stop.sh
				
			

Linux Systemdienst für den Minecraft Server einrichten

Im letzten Schritt werden wir einen Linux Systemdienst einrichten, der unsere oben erstellen Start- und Stop-Scripte verwendet. Sofern alles korrekt eingerichtet ist, startet der Minecraft Server automatisch beim Booten des Systems. Außerdem wird er auch wieder gestoppt, wenn wir unser System herunterfahren.

Zunächst müssen wir eine Konfigurationsdatei für den Dienst im Verzeichnis /etc/systemd/system/ anlegen.

Der Dateiname ist gleichzeitig auch der Name des Dienstes. Die Endung der Datei ist immer .service. Darum nennen wir die Datei minecraft.service.

Da auf den Ordner nur der Benutzer root Zugriff hat, müssen wir mit sudo arbeiten. Möchtest du die Datei direkt editieren, kannst du z. B. mit vi oder nano arbeiten:

				
					sudo vi /etc/systemd/system/minecraft.service
sudo nano /etc/systemd/system/minecraft.service
				
			

Wir fügen folgenden Inhalt in unsere neue Datei ein und ersetzen die Platzhalter wie folgt:

  • <benutzer> ⇒ Hier muss der Name deines Linux-Benutzers, mit dem du immer den Minecraft Server startest, eingetragen werden
  • <pfad-zum-minecraft-server>  ⇒ Trage hier den absoluten Pfad zu deinem Minecraft Server ein (z. B. /opt/minecraft-server)
  • <pfad-zum-start-script> ⇒ Trage hier den absoluten Pfad zu deinem Start-Script ein (z. B. /opt/minecraft-server/start.sh)
  • <pfad-zum-stop-script> 
  • ⇒ Trage hier den absoluten Pfad zu deinem Stop-Script ein (z. B. /opt/minecraft-server/stop.sh)
				
					[Unit]
Description=Minecraft Server
After=network.target

[Service]
User=<benutzer>
WorkingDirectory=<pfad-zum-minecraft-server>
ExecStart=<pfad-zum-start-script>
ExecStop=<pfad-zum-stop-script>
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
				
			

Jetzt müssen wir den Systemdienst noch aktivieren. Dies erfolgt über die folgenden Befehle:

				
					sudo systemctl daemon-reload
sudo systemctl enable minecraft
sudo systemctl start minecraft
				
			
  • sudo systemctl daemon-reload: Lädt die Systemdienst-Dateien neu ein
  • sudo systemctl enable minecraft: Aktiviert unseren neuen Systemdienst
  • sudo systemctl start minecraft: Startet unseren neuen Systemdienst minecraft

Und mit diesen Befehlen kannst du den Dienst manuell starten, stoppen und überprüfen:

				
					sudo systemctl start minecraft
sudo systemctl stop minecraft
sudo systemctl status minecraft
				
			

Das ganz sollte dann bei dir in etwas so aussehen:

Linux Systemdienst für Minecraft Server einrichten
Linux Systemdienst für Minecraft Server einrichten

Damit ist die Einrichtung des Systemdienstes abgeschlossen und der Minecraft Server startet und stoppt automatisch.

Fazit

In diesem Artikel habe ich dir gezeigt, wie du für deinen Minecraft Server unter Linux (z. B. auf dem Raspberry Pi) einen Systemdienst einrichten kannst. Das hat den Vorteil, dass der Server automatisch beim Booten des Betriebssystems gestartet und beim Herunterfahren wieder gestoppt wird.

Lass mich gerne in den Kommentaren wissen, ob du mit meinem Tutorial klargekommen ist. Wenn du auf Probleme gestoßen bist, lass es mich auch gerne wissen. Ich helfe dir gerne weiter und kann dann meinen Artikel auch entsprechende ergänzen.

Alle Themen dieser Artikelserie

Picture of Daniel Hillwig
Daniel Hillwig

Hi, mein Name ist Daniel und ich bin Software-Entwickler. Hier schreibe ich über technische Themen zu Minecraft. Seit über 20 Jahren programmiere ich mit Java und liebe Open-Source-Software und Linux.

Schreibe einen Kommentar

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

  • Wer schreibt hier?

    mineTekki PortraitHi, ich bin Daniel und Software-Entwickler. Zu Minecraft bin ich über meinen Sohn gekommen. Er ist ein leidenschaftlicher Spieler und hat schon viele Welten gebaut. Mittlerweile spielen wir zusammen und programmieren Minecraft Plugins.

  • Alle Inhalte meines Blogs sind keine offiziellen Minecraft-Produkte und stehen in keiner Verbinung zu Mojang.

  • Artikel-Serie

    Minecraft Plugins programmieren lernen

  • mineTekki Minecraft Blog