IT Projekte / Home Lab / Smart Home / Games

Allgemein, Games, Proxmox

Minecraft 1.19 Server unter Debian installieren

Du spielst gerne Minecraft und würdest am liebsten mit Deinen Freunden zusammen spielen? Ebenfalls verfügst Du über einen Linux Server? Dann ließ Dir doch diesen Beitrag durch.

Was Du benötigst:

  • Minecraft auf einem Computer zum spielen.
  • Wenn Du mit Freunden online über das Internet spielen möchtest, eine Port-Freigabe in Deinem Router.
  • Einen Prozessor mit mindestens 2 GHz.
  • Arbeitsspeicher von mindestens 4 GB, empfehle Dir aber eher 6 GB bis 8 GB.
  • Als Speichermedium empfehle ich Dir eine SSD mit mindestens 20 GB freiem Speicherplatz. Bei regelmäßigen Backups 50 GB und mehr.
  • Eine Internetverbindung von mindestens 8 MBit/s Upload und 4 MBit/s Download.
  • Eine bereits installierte Linux Distribution.

Die Angaben beziehen sich auf das spielen mit 3 bis 5 Spielern.

Debian 11 VM unter Proxmox erstellen

1. Minecraft Server Installation

Erstelle zunächst einen Ordner, in dem Dein Server gespeichert und betrieben werden soll:

mkdir minecraftserver
Minecraft Ordner erstellen
Ordner erstellen

1.1 Dem aktuellem Nutzer Root Rechte vergeben

Um die weiteren Installationen durchführen zu dürfen, musst Du dem Nutzer erst noch die benötigte Berechtigung vergeben. Die Umsetzung erfolgt mit folgenden Befehlen.

su -
visudo /etc/sudoers
<username>  ALL=(ALL) NOPASSWD:ALL
Administratoren anlegen
Administratoren anlegen
Nutzer als Administrator mit anlegen.
Nutzer als Administrator mit anlegen.

Nachdem Du Deinen Benutzer mit angelegt hast, speicherst und schließt Du die Datei mit Strg + S und Strg + X. Mit exit logst Du Dich aus dem root Nutzer aus und bist wieder als Dein Nutzer angemeldet.

exit

1.2 Java installieren

Da Dein Nutzer nun über alle Berechtigungen verfügt, kannst Du im Anschluss das OpenJDK 17 von Java installieren, welches Du für das spielen von Minecraft benötigst.

sudo apt-get install software-properties-common
Software Properties Common installieren
Software Properties Common installieren
sudo apt-get install openjdk-17-jre
sudo apt-get install openjdk-17-jdk openjdk-17-demo openjdk-17-doc openjdk-17-jre-headless openjdk-17-source

Die Installation der einzelnen Programme kann eine Weile in Anspruch nehmen. Die Frage, ob das Programm auch installiert werden darf, beantwortest Du mit einem Y oder J für Ja.

1.3 Minecraft Server Downloaden

Der neuste Minecraft Server kann immer von der offiziellen Minecraft Seite heruntergeladen werden.

Mittels Rechtsklick und ‘Adresse des Links kopieren’, kopierst Du die URL der Datei und fügst Sie hinter einem wget im Terminal ein.

cd minecraftserver
wget <url>
Server downloaden
Server downloaden

Die indessen heruntergeladene server.jar Datei muss ausgeführt werden, um den Server installieren zu können. Hierbei führen wir dies ohne die GUI aus.

java -jar server.jar --nogui
Installationsabbruch
Installationsabbruch

Wie Du sehen kannst, wird die erste Installation fehlschlagen, da Du zunächst die EULA akzeptieren musst, mit einem true.

Auch hier speicherst und schließt Du die Datei mit Strg + S und Strg + X.

Du siehst, dass weitere Dateien hinzugekommen sind. Um den Server aber erfolgreich zu starten, führst Du ein weiteres Mal den Befehl aus.

java -jar server.jar --nogui
Serverversion, Spielmodus und Port angaben.
Serverversion, Spielmodus und Port angaben.

Im Nu ist der Server gestartet, mit der Version 1.19 in meinem Beispiel, dem Modus Survival und auf dem Port 25565.

Den Server kannst Du mit einem einfachen Strg + C oder der Eingabe stop stoppen.

2. Screen installieren

Damit der Server nicht immer im Vordergrund laufen muss, installierst Du Screen. Ein Programm, welches es Dir ermöglicht, Aufgaben im Hintergrund unter Linux ausführen zu können. Die Frage, ob das Programm auch installiert werden darf, beantwortest Du mit einem Y oder J für Ja.

sudo apt-get install screen

Nun kannst Du anhand folgendem Befehl den Server im Hintergrund ausführen. Hierbei nennst Du den Screen minecraft.

screen -dmS minecraft java -jar ~/minecraftserver/server.jar
Starte den Server im screen.
Starte den Server im Screen.

Über screen -r minecraft kannst Du Deinen Server aufrufen. Im Screen beendest Du diesen über ein einfaches stop.

screen -r minecraft

# Über die Tasten Strg + A und Strg + D schließt Du den Screen wieder.

3. Start-, Stop-Skript erstellen

Um nicht immer die einzelnen Befehle eingeben zu müssen, erstellst Du jetzt zwei Dateien. Einmal eine zum starten des Servers und die andere zum stoppen. Die Inspiration hierzu und Vorlagen habe ich von folgenden Skripten. In den Skripten wird ebenfalls die Funktion mit eingebaut, dass die Welten in einem Ordner separat, als Backup, gespeichert werden, wenn Du den Server startest. Für die Backups musst Du aber zunächst noch einen Backup-Ordner anlegen.

mkdir ~/minecraftserver/backups/

3.1 Start Skript erstellen und ausführen

Für das Start-Skript habe ich folgende Zeilen herausgenommen und entsprechend angepasst. Allerdings musst Du zunächst das Skript an sich selbst erstellen.

nano start.sh
#!/bin/bash
# Author: James A. Chambers - https://jamesachambers.com/
# More information at https://jamesachambers.com/raspberry-pi-minecraft-server-script-with-startup-service/
# GitHub Repository: https://github.com/TheRemote/RaspberryPiMinecraft
# Minecraft Server startup script using screen -- view the console with screen -r minecraft

# Check to make sure we aren't running as root
if [ $(id -u) = 0 ]; then
   echo "This script is not meant to run as root or sudo.  Please run as a normal user with ./start.sh.  Exiting..."
   exit 1
fi

# Check if server is already running
if screen -list | grep -q "\.minecraft"; then
    echo "Server is already running!  Type screen -r minecraft to open the console"
    exit 1
fi

# Switch to server directory
cd ~/minecraftserver/

# Back up server
if [ -d "world" ]; then
    if [ -n "$(which pigz)" ]; then
        echo "Backing up server (all cores) to cd minecraftserver/backups folder"
        tar -I pigz --exclude='./backups' --exclude='./cache' --exclude='./logs' --exclude='./jre' --exclude='./paperclip.jar' -pvcf backups/$(date +%Y.%m.%d.%H.%M.%S).tar.gz ./*
    else
        echo "Backing up server (single core, pigz not found) to cd minecraftserver/backups folder"
        tar --exclude='./backups' --exclude='./cache' --exclude='./logs' --exclude='./jre' --exclude='./paperclip.jar' -pzvcf backups/$(date +%Y.%m.%d.%H.%M.%S).tar.gz ./*
    fi
fi

# Rotate backups -- keep most recent 10
if [ -e "dirname/minecraft/backups" ]; then
    Rotate=$(
        pushd dirname/minecraft/backups
        ls -1tr | head -n -10 | xargs -d '\n' rm -f --
        popd
    )
fi

echo "Starting Minecraft server.  To view window type screen -r minecraft."
echo "To minimize the window and let the server run in the background, press Ctrl+A then Ctrl+D"
screen -dmS minecraft java -jar ~/minecraftserver/server.jar
sh start.sh

Mittels sh start.sh startest Du den Server und mit sh stop.sh stoppst Du diesen wieder. Wie auch im Skript angeben, kann der Screen mittels folgendem Befehl aufgerufen werden.

screen -r minecraft
Screen des Servers.
Screen des Servers.

3.2 Stop-Skript erstellen und ausführen

Das Stop-Skript habe ich ebenfalls aus den zuvor angegeben Quellen genommen. Das Erstellen des Skriptes wird ebenfalls über folgenden Befehl durchgeführt.

nano stop.sh
# Author: James A. Chambers - https://jamesachambers.com/
# More information at https://jamesachambers.com/raspberry-pi-minecraft-server-script-with-startup-service/
# GitHub Repository: https://github.com/TheRemote/RaspberryPiMinecraft
# Minecraft Server stop script - primarily called by minecraft service but can be ran manually with ./stop.sh

# setup for my sittuation

# Check to make sure we aren't running as root
if [ $(id -u) = 0 ]; then
   echo "This script is not meant to run as root or sudo.  Please run as a normal user with ./stop.sh.  Exiting..."
   exit 1
fi

# Check if server is running
if ! screen -list | grep -q "\.minecraft"; then
  echo "Server is not currently running!"
#  exit 1
fi

# Stop the server
echo "Stopping Minecraft server ..."
screen -Rd minecraft -X stuff "say Closing server (stop.sh called)...$(printf '\r')"
screen -Rd minecraft -X stuff "stop$(printf '\r')"

# Wait up to 30 seconds for server to close
StopChecks=0
while [ $StopChecks -lt 30 ]; do
  if ! screen -list | grep -q "\.minecraft"; then
    break
  fi
  sleep 1;
  StopChecks=$((StopChecks+1))
done

# Force quit if server is still open
if screen -list | grep -q "\.minecraft"; then
  echo "Minecraft server still hasn't closed after 30 seconds, closing screen manually"
  screen -S minecraft -X quit
fi

echo "Minecraft server stopped."

# Sync all filesystem changes out of temporary RAM
sync
sh stop.sh
Server starten und stoppen.
Server starten und stoppen.

4. Server Login

Nach dem Dein Server nun läuft, kannst Du Dich mit diesem verbinden. Hierzu benötigst Du die IP-Adresse des Servers und den Port, falls Du diesen geändert haben solltest.

Zunächst einmal ist es wichtig, dass Du die richtige Version nutzt.

Java Edition und die passende Server Nummer.
Java Edition und die passende Server Nummer.

Über Mehrspieler richtest Du Deinen Server ein. Auch hier noch mal die Version kontrollieren.

Mehrspieler auswählen.
Mehrspieler auswählen.
Server hinzufügen auswählen.
Server hinzufügen auswählen.
Namen und IP-Adresse angeben.
Namen und IP-Adresse angeben.

Nach dem Bestätigen über Fertig sollte Dein Server auch als online angezeigt werden.

Dein Server
Dein Server

Mittels Server Beitreten trittst Du Deinem Server bei und kannst jetzt beginnen zu spielen. Vorher musst Du Dich allerdings noch in der Whitlist mit hinzufügen, falls Du diese in den server.properties aktiviert hast.

Auf Deinem Server kannst Du auf dem Screen mit screen -r minecraft sehen, dass Du Dich mit Deinem Namen und Deiner UUID auf dem Server versucht hast einzuloggen. Um Dich nun auf die Whitelist zu setzen und den Server betreten zu können, gibst Du Folgendes in dem Screen ein:

whitelist add <Deine UUID oder Deinen Namen>

5. Server Grundfunktionen

Während der Installation hat das Skript unterschiedliche Dateien und Ordner in dem von Dir gewähltem Ordner angelegt.

Minecraft Ordner
Minecraft Ordner

5.1 Server starten oder stoppen

Der Server kann unter anderem mithilfe der jeweiligen Datei gestartet und gestoppt werden.

cd ~/minecraftserver
sh start.sh
sh stop.sh

5.2 Backups einspielen

In dem Ordner backups legt bei jedem ausführen der start.sh Datei das Skript eine Sicherung Deines Servers / Deiner Ordner world, world_nether und world_the_end in einer tar.gz-Datei an.
Um ein Backup einspielen zu können stoppst Du den Server und löschst zunächst die Ordner world, world_nether und world_the_end. Im Anschluss entpackst Du das Backup in Deinen Minecraft Ordner.

cd ~/minecraftserver
# server stoppen
sh stop.sh

# Ordner löschen
rm -rf world world_nether world_the_end

# Das gewünschte Backup wieder entpacken / einspielen
tar -xf backups/2019.02.15.22.06.30.tar.gz
# Den Server wieder starten
sh start.sh

5.3 Upgrade

Wenn, Du Deinen Server mit der neusten Version spielen möchtest ist es am einfachsten die server.jar-Datei erneut herunterzuladen und mit der alten zu ersetzen. Danach kannst Du einfach das start.sh Skript ausführen, welches den neusten Server installiert.
Achtung, vor jedem Update einmal den gesamten minecraft-Ordner sichern bzw. kopieren.

  1. minecraft-Ordner kopieren
  2. server.jar herunterladen
  3. Anpassungen vornehmen, falls Du Anpassungen am Skript vorgenommen hast.
  4. start.sh Datei ausführen

5.4 Downgrade

Wenn, Du merkst, dass das Update auf die neuere Version nicht funktioniert und es Probleme gibt, dann kommen hier nun Deine Backups von Deinen minecraft-Ordnern ins Spiel. Da es elementare Änderungen zum Beispiel von Version 1.16 zu 1.17 gibt, kannst Du nicht einfach zurück. Hier für musst Du Deinen minecraft-Ornder nutzen, welchen Du von Deinem letzten 1.16 Server als Backup gespeichert hast. Also den gesamten Ordner nicht ein Backup in einer tar.gz-Datei. Sondern den gesamten minecraft-Ordner.

Quellen:

Titelbild: https://www.freepnglogos.com/images/minecraft-logo-1013.html