Hier will ich es euch kurz erklären, wie das Ganze bei mir funktioniert. Viele Anleitungen im Internet beziehen sich auf ältere Versionen des Spiels und somit auch des Servers. Da ich erst seit Kurzem auf den Geschmack des Games gekommen bin, ist diese Anleitung im Jahr 2024 gültig und bezieht sich auf die Terraria Version 1.4.4.9 (derzeit aktuell).
Jedenfalls wollte ich mit meinem Raspberry diesen Spiele-Server ausprobieren. Funktioniert das denn eigentlich gescheit auf dem kleinen Rechner? Ist das praxistauglich? Wie hoch sind die Hürden bis zum fertigen Server? Diese Fragen haben mich beschäftigt und ich kann sie nun beantworten. Ja, ja und "klein" sind die Antworten auf die Schnelle. Es ist also relativ einfach, diesen Server auf dem Raspi zu installieren. Klein deshalb in Anführungszeichen, da ich davon ausgehe, das jemand, der einen Raspberry besitzt, schon etwas Ahnung von Linux und der Kommandozeile hat. Für Neulinge kann sich dies schon etwas aufregender und schwerer anfühlen, wenn man die nachfolgenden Befehle ins Terminal einhämmert. Nochmals sei das Wiki hier erwähnt, in dem man gute Hilfe findet.
Jetzt soll es aber losgehen und dazu meldet man sich am Raspi entweder per SSH (bei einem Headless System, wie in meinem Fall) oder normal über Tastatur und Bildschirm mit seinem Benutzernamen an. Im Terminal bzw. der Konsole bringt man das System erstmal auf den neusten Stand:
sudo apt update
sudo apt upgrade
Für den Terraria-Server benötigen wir Mono auf dem Raspi. Mono ist sozusagen eine Implementierung des Microsoft NET Framework. Also Mono so installieren:
sudo apt install mono-complete
Jetzt legen wir ein Verzeichnis an, in dieses wir das aktuelle Terraria-Server-Paket herunterladen und anschließend entpacken.
mkdir terrariaserver
cd terrariaserver
Legte den Ordner an und mit cd sind wir in den neuen Ordner hinein gewechselt. Nun laden wir mit wget das Paket mit dem folgenden Befehl herunter:
wget https://terraria.org/api/download/pc-dedicated-server/terraria-server-1449.zip
Entpackt wird das Ganze so:
unzip terraria-server-1449.zip
Ab in den richtigen Ordner geht es mit den folgenden Kommandos:
cd 1449
cd Linux
ausführbar machen. Das ist hier überflüssig, da wir die *.exe Datei mit Mono starten wollen. Doch zuvor laden wir noch zwei Pakete ins System, falls nicht schon vorhanden. Einmal sqlite3 und einmal screen. sudo apt install sqlite3
sudo apt install screen
Zum Test kann man den Server nun einmal mit diesem Befehl starten:
mono --server --gc=sgen -O=all ./TerrariaServer.exe
Bei mir hat dies genau einmal funktioniert. Danach bekam ich merkwürdige Fehlermeldungen beim Serverstart. Dagegen hilft es einige Dateien mittels der folgenden Befehle zu entfernen. Vorsicht, unbedingt schauen das man im richtigen Verzeichnis ist (/home/USERNAME/terrariaserver/1449/Linux).
rm System*
rm Mono*
rm monoconfig
rm mscorlib.dll
Es sollten dann in etwa, wie bei mir auf dem Bild, nur noch diese Dateien und nur noch die FNA.dll & WindowsBase.dll als einzige DLL's vorhanden sein. Ebenfalls fehlt noch die serverconfig, zu dieser Konfigurationsdatei komme ich gleich. Übrigens, das Bild zeigt einen Ausschnitt des Midnight-Commander (mc). Der Dateimanager läuft in der Konsole und erinnert stark an den früheren Norton-Commander (nc). Durch die zwei Fensteransicht lassen sich Dateien praktisch hin- und her-kopieren. Gerade auf dem Raspi, ohne grafische Oberfläche, bieten sich solche Tools an. Über ein sudo apt get install mc bringt man das Paket auf den Rechner.
Nun benötigen wir noch eine Konfigurationsdatei (in diesem Fall nenne ich diese serverconfig), in der ein paar Werte für den Serverstart hinterlegt werden. Hatte man den obigen Befehl zum Start des Servers erfolgreich ausgeführt, so müsste man jetzt bereits eine "Terraria-Welt" haben, wenn nicht, dann diesen Befehl hier einmal ausführen:
mono TerrariaServer.exe
Jetzt bekommt man ein paar Fragen gestellt, die das Server-Setup betreffen. Z.B. wie groß soll die Welt werden (klein und mittel empfohlen, ab neueren Raspi mit mehr Ram auch mal groß), wie soll die Welt heißen? Danach wird die "Terraria-Welt" generiert. Das kann schon mal eine Weile dauern (halbe Stunde?), zumindest bei Auswahl small dauert es nicht ganz so lange. Nachdem die Welt erstellt wurde, wird man gefragt, mit welcher Welt man starten möchte. In diesem Falle 1 für die eben generierte Welt. Die Anzahl der maximalen Spieler kann man angeben (Standard müssten es 16 sein). Den Serverport ggf. anpassen (Standard 7777) und ein paar andere Fragen (die man getrost unbeantwortet lassen kann = also Standard) beantworten. Danach startet auch schon der Server und man steht am Serverprompt, quasi die Eingabezeile vom Server. Hier empfiehlt es sich den Befehl help einzugeben, so erfährt man ein paar Kommandos, die der Serer versteht. Mit exit wird der Server schließlich beendet.
Jetzt können wir die serverconfig Datei anlegen.
nano serverconfig
In diese Datei schreibt man die folgenden Zeilen hinein. BENUTZERNAME und natürlich der WELTNAME sind entsprechend zu ersetzen und ebenfalls die anderen Parameter müsst ihr an euer System anpassen.
maxplayers=8
port=7777
worldpath=/home/BENUTZERNAME/.local/share/Terraria/Worlds
world=/home/BENUTZERNAME/.local/share/Terraria/Worlds/WELTNAME.wld
upnp=1
Mit Strg+X schließt man die Datei und wird gefragt, ob man die Änderungen abspeichern möchte, was man mit J bejaht. Ab jetzt kommt noch das Programm Screen ins Spiel. Mit diesem kann man mehrere Terminalfenster öffnen und zwischen diesen hin- und her-springen. So ist es möglich den Terraria-Server zu starten und dennoch weiter auf dem Raspi zu arbeiten. Mittels dem folgenden Befehl startet man eine neue Screen-Sitzung:
screen -S terarria
Jetzt ist man sozusagen auf einem neuen Terminalfenster und startet den Terraria-Server mit dem folgenden Befehl:
mono TerrariaServer.exe -config serverconfig
Automatisch lädt der Server nun mit unserer voreingestellten Welt, ohne weiteres Zutun. Jetzt wechselt man mit der Tastenkombination Strg+A und danach D zurück zum ursprünglichen Eingabefenster, somit läuft der Server im Hintergrund. Mit der Eingabe von screen -r terraria kommt man, falls gewünscht, auf den laufenden Terraria-Server zurück, um z.B. diesen herunterzufahren oder neu zu starten. Strg + D würde die aktuelle Screen-Sitzung beenden, deshalb lieber Strg+A und D, um den Server im Hintergrund laufen zu lassen.
Der Test war also erfolgreich und man könnte nun schon mit dem Spiel beginnen. Doch will man ja mit seinen Freunden zocken, gibt es noch weitere Schritte, die man unternehmen muss. Der Server soll für alle erreichbar sein. Um dies zu bewerkstelligen muss man einerseits eine Portweiterleitung im Router freigeben und zweitens noch einen Dyn-DNS Dienst einrichten. Dyn-DNS oder besser Dynamic-DNS ist eine Funktion, damit der eigene Router aus dem Internet immer über die gleiche Internetadresse angesprochen werden kann. Ich benutze diesen hier und bin bisher sehr zufrieden, kann ihn demnach nur weiterempfehlen. Wie man den Dienst im Router einrichtet steht dort sehr ausführlich in der Hilfe. Im Endeffekt erhält man eine Internetadresse wie z.B. meineadresse.goip.de und diese wird dann auch im Mehrspieler Modus, wie oben genannt, Über IP beitreten eingesetzt. Die benötigte Portfreigebe für den Port 7777 richtet man ebenfalls sehr einfach im Router ein. Auf dem Bild sieht man die Einstellungen in meiner Fritzbox.
Puh, das war gar nicht so kurz diese Anleitung zu schreiben. Ich hoffe es war einigermaßen verständlich und alle Schritte nachvollziehbar. Jedenfalls wünsche ich euch viel Erfolg mit diesem Projekt beim Nachmachen. Was ich noch vergessen habe, ist eine automatische Startfunktion des Servers, wenn mal der Raspi neu gestartet werden muss. Oder wenn der Raspi mal abstürzt, dass sich der Server automatisch wieder aktiviert. Dies baue ich eventuell später noch hier ein. Bin mir nämlich noch nicht sicher, wie ich das Problem löse. Wahrscheinlich über ein Script, welches mit einem Systemd-Dienst gestartet wird.
Jetzt erstmal fix aufs ...
Keine Kommentare:
Kommentar veröffentlichen
Vielen Dank für Ihren Kommentar. Die Veröffentlichung erfolgt umgehend nach meiner Prüfung. Ich bitte um etwas Geduld. MfG Mintnix