Einen Online-Minetest-Server hosten

Aktualisierte Fassung einer Anleitung, die ich 2016 hier erstellt habe: https://thomas-ebinger.de/2016/10/wie-richtet-man-einen-online-minetest-server-ein/

In einem Webinar zum Corona-Minetest-Server wurde das ausführlich erläutert und kann es weiterhin ansehen. Danke an Stogromi fürs Aufzeichnen und Bearbeiten!

Ein Server in einem lokalen Netzwerk lässt sich mit Minetest sehr leicht einrichten. Einfach im Tab “Spiel starten” das Feld “Server hosten”, Name und Passwort für den admin-Spieler vergeben und fertig. Dann muss man nur noch die IP-Adresse des eigenen Rechners herausfinden und den anderen Spielern bekannt machen. Das geht am einfachsten über die Windows-Taste, dann cmd eintippen, Enter, dann in die Konsole ipconfig schreiben und die passende IP-Adresse auslesen.

Online-Server

Natürlich kann man seinen privaten Rechner auch ins Netz hängen und den Server dort bekannt machen (Häkchen setzen). Dann muss man aber per Dyn-DNS dafür sorgen, dass sich die IP von außen nicht ändert. Aber das kostet nicht nur viel Strom, jedenfalls dann, wenn der Rechner die notwendige Leistung für einen größeren Server hat. Die Netzanbindung eines echten  Online-Servers ist auch deutlich schneller und belastbarer.

Server mieten

Es gibt viele Anbieter von günstigen vServern (virtuelle Server), die nicht teuer sind. Die besten Erfahrungen habe ich mit einem vServer bei netcup gemacht, siehe https://www.netcup.de/vserver/vps.php#features. Die einfachste Lösung reicht für 30-35 Personen völlig aus, wenn man nicht zu viele Mods installiert, und ist jederzeit kündbar. In der Voreinstellung hat man einen Debian-Server, leichter ist es, wenn man einen Ubuntu-Server konfiguriert.

Linux-Grundkenntnisse sind dafür unerlässlich.

Minetest auf den Server bekommen

minetestserverEs gibt mehrere Möglichkeiten zu einem lauffähigen Minetest zu kommen.

Am einfachsten ist es, wenn man minetest aus den üblichen Paketquellen installiert. Leider ist die Minetest-Version dort veraltet. Aktueller wird es, wenn man die PPA-Version wählt. Wie das geht, steht hier: https://wiki.ubuntuusers.de/Spiele/Minetest/

 

Erst einmal muss man sich einloggen. Das geht per ssh. Unter Linux: ssh root@zugewiesene-IP, dann Passwort eingeben. Unter Windows wird meist PuTTY als
ssh-Client empfohlen (http://www.putty.org/). Man kann aber auch unter Windows 10 eine Linux Kommandozeile installieren und hat es dann bequemer (https://docs.microsoft.com/de-de/windows/wsl/install-win10).

Und dann hat man die volle Kontrolle – aber oh Schreck: nur auf einer Kommandozeile. Wie man sich da zurechtfindet, kann ich hier nicht ausführlich erklären. Ein paar Befehle sollte man schon beherrschen (cd, ls, top, ps -A) sind die wichtigsten. Eine Einführung findet man z. B. hier: https://wiki.ubuntuusers.de/Shell/Einf%C3%BChrung/

Nun aktualisiert man mit apt-get update die Paketquellen und installiert den minetest mit apt-get install minetest

Einen eigenen Benutzer anlegen

Es ist nicht empfehlenswert, Minetest als Root-Benutzer laufen zu lassen. Mit “adduser minetest” legt man einen Benutzer minetest an und loggt sich dann ein mit “su minetest”.

Den Server starten

Nun kann man einen Server starten, indem man dem Programm zwei wichtige Informationen mitgibt: Welche Welt soll gestartet werden mit welcher Konfiguration (= Aufruf der Datei minetest.conf).

Damit der Server auch weiterläuft, wenn man sich wieder ausloggt, muss man sich etwas überlegen. Am besten ist es, man installiert “screen” (sudo apt-get install screen), startet es einmal (es läuft dann im Hintergrund). Dann kann man mit Strg-A und anschließend “d” das aktuelle Fenster in den Hintergrund schieben. Will man den Server mit seinen Meldungen wieder sehen, gibt man einfach “screen -r” ein. Mit Strg-C wird der Server wieder beendet. Die Datei “debug.txt” enthält alle Meldungen, was auf dem Server passiert und wo es evtl. Fehler gibt.

Die Konfigurationsdatei minetest.conf

Nicht jeder wird mit der Standard-Ausgangswelt glücklich. Im Unterverzeichnis worlds kann man andere Welten hochladen, die bereits erstellt wurden. Am besten geht das per FTP (Filezilla, Port 22, u. U. muss vorher noch mit apt-get install vsftpd ein sicherer ftp-Server installiert werden). Oder man benutzt unter Linux scp (secure copy).

Die wichtigsten Einstellungen nimmt man in der Datei minetest.conf vor, die man neu anlegen muss im Verzeichnis .minetest/ (der Punkt vor minetest bedeutet, dass dies ein versteckter Ordner ist, auf der Kommandozeile macht das aber keinen Unterschied).

Um Dateien bearbeiten zu können, braucht man noch einen Editor. Ich empfehle nano, den man mit apt-get install nano installiert. Dann einfach im richtigen Verzeichnis nano minetest.conf eingeben, dann wird eine leere Datei angelegt, in die man die gewünschten Einstellungen hineinschreiben kann.

Leider scheint der Server die config-Datei nicht automatisch zu erkennen, deshalb muss man sie beim Starten ausdrücklich mit angeben. Ebenso die gewünschte Spielwelt mit vollem Dateipfad (da bin ich mehrfach daran gescheitert, weil er dann einfach eine gleichnamige Spielwelt im aktuellen Verzeichnis anlegt.

So sieht meine minetest.conf derzeit aus:

creative_mode = true //startet die Welt im Kreativ-Modus
enable_damage = false //startet eine friedliche Welt, in der man niemand wehtun kann
server_announce = false // wenn man hier true eingibt, kann jeder Client die Welt über die öffentliche Serverliste finden und spielen
port = 30000 // wenn man mehrere Welten gleichzeitig laufen lassen will, kann man einfach höhere Ports verwenden
static_spawnpoint = -9,1,-172 // das führt dazu, dass jeder, der neu in de Welt kommt, an diesem Startpunkt herauskommt
disallow_empty_password = true // ein Passwort wird zur Pflicht
name = thomas //der Spielername der hier steht hat im Spiel Administratorrechte, man kann auch mehrere Spieler angeben (durch Komma getrennt)

Der Befehl zum Starten des Servers sieht dann in etwa so aus:

minetest --config ~/.minetest/minetest.conf --world ~/.minetest/worlds/WUNSCHSPIELWELT

~ steht für das Benutzerverzeichnis. Man kann auf dem Server auch /root/ dafür angeben.

Mods installieren

Auf einem Server werden Mods, die verschiedene Welten verwenden, in den Ordner von .minetest/mods/ installiert. Am einfachsten geht das mit git clone und dann den Pfad eines Online Repositorys angeben. Mit einem git pull kann man die Mods dann sehr einfach aktualisieren. Wenn man die Welt startet, werden alle verfügbaren Mods automatisch in der Datei world.mt eingetragen und mit “= false” versehen. Wenn man sie aktiv haben will, muss man daraus einfach ein “= true” machen. Beim Serverstart wird gemeldet, welche Mods fehlende Abhängigkeiten haben und deshalb nicht geladen wurden. Diese muss man dann ggf. nachinstallieren.

Vorsicht: Zu viele Mods machen einen Server träge, weil alle Bausteine zum Spieler heruntergeladen werden müssen und alle Tiere und Monster die herumrennen Serverleistung kosten. Auch Flugrechte für alle kosten Serverleistung, hier sollte man nicht zu großzügig sein.

Automatischer Neustart

Manche Mods bringen den Server zum Absturz, da ist es praktisch, wenn er von allen wieder startet.

Dafür kann man eine Datei serverstart.sh anlegen, muss Ausführungsrechte vergeben (mit chmod), und dann mit einem Editor (ich nehme immer nano, s.z.) etwas wie das hier eintragen (Skript der Corona-Bildungswelt):

#!/bin/bash
while true; do
/home/minetest/minetest-5.2.0-dev-linux/bin/minetestserver –world   /home/minetest/minetest-5.2.0-dev-linux/worlds/4coronawelt/ –config   /home/minetest/minetest-5.2.0-dev-linux/worlds/4coronawelt/minetest.conf
done

Wie schwer muss mein Server arbeiten

Das sieht man am besten mit htop, einer verbesserten Variante von top (sudo apt-get install htop).

Man sieht schön, wie belastet die einzelnen Kerne sind. Bei 8 Kernen kann “Load Average” bis zur vollen Auslastung hochgehen bis 8.0″ Wenn man “t” drückt, sieht man schön die Threads, welches Programm durch welches aufgerufen wurde.

Serverpflege per App von unterwegs

Wenn einen unterwegs die Nachricht erreicht, der Server ist abgestürzt, sollte man handlungsfähig sein. Dafür nutze ich unter Android die App JuiceSSH (https://play.google.com/store/apps/details?id=com.sonelli.juicessh), die auch in der Kostenlos-Version einen ausreichenden Funktionsumfang bietet. Hier kann man sich dann z. B. die Datei debug.txt ausgeben lassen mit dem Befehl “tail -f debug.txt” und sieht dann in Echtzeit, was gerade auf dem Server gebaut wird.

Links