Project Zomboid - eigenen Server aufsetzen
Ich habe vor kurzem mit einem Freund darüber gesprochen, dass wir doch mal eine Runde irgendwas spielen könnten. Jetzt muss man wissen, dass es gar nicht so einfach ist etwas zu finden, dass uns beiden gefällt. Wir konnten uns aber darauf einigen, dass wir mal Project Zomboid probieren. Wir haben beide das Spiel schon mal gespielt aber das ist schon eine Weile her.
Natürlich habe ich direkt überlegt, ob es nicht sinnvoll wäre einen eigenen dedizierten Server zu haben, damit wir zusammen spielen können aber auch mein Freund den nutzen kann falls ich mal keine Zeit habe. Da mich das außer ein wenig Zeit ja nix kostet, dass dachte ich zu dem Zeitpunkt zumindest noch, habe ich mich direkt ans Werk gemacht.
Als kleine Zusatzinformation noch der Hinweis, ich hatte schon mal einen funktionierenden Project Zomboid Server aufgesetzt. Das ist aber schon Jahre her (ca. 6 Jahre). Dieses mal bin ich mehrmals gescheitert. Das lag aber größtenteils daran, dass alle verfügbaren Informationen über dieses Unterfangen auch schon fast genau so alt sind, wie mein letzter Versuch. Den aktuellsten Beitrag habe ich aus dem Jahr 2019 gefunden aber auch dort war nicht alles beschrieben. Damit andere evtl. nicht genauso lange benötigen, schreibe ich hier meine Schritte zusammen. In dem letzten Artikel aus 2019 schrieb der Autor einen Satz den ich im Nachhinein ziemlich treffend finde. „Um ehrlich zu sein ist es ziemlich einfach, wenn man es ein paar mal gemacht hat.“.
Ich habe mich für einen Container mit Ubuntu 20.04 als OS entschieden. Mit Debian geht es aber genauso und ich packe ein paar Links dazu, wo das vorgehen auch für ein paar andere Distros erklärt wird. Es ist also egal ob ihr mit einem echten Server, einer VM oder einem Container (auch unprivilegiert) loslegen wollt.
Fangen wir an……..
Ich habe gelesen das der Project Zomboid Server Wert auf Arbeitsspeicher und Festplattenspeicher legt. Daher habe ich dem Container 40GB Plattenplatz und 4GB RAM spendiert. 4 Prozessorkerne runden den Container ab. Wie immer starten wir auf einem aktuellen System aber trotzdem können wir als erstes mal ein Update bzw. Upgrade machen.
apt update && apt upgrade
Wenn das Upgrade abgeschlossen ist, geht es auch schon weiter. Da wir die Steam Version des Servers installieren, es gibt noch eine nicht Steam Version welche dann aber auch nur von nicht Steam Installationen genutzt werden kann, benötigen wir SteamCMD. Hier empfehle ich sich an die Anleitung von Valve zu halten. An der Stelle können dann auch Informationen für andere Distros eingesehen werden – SteamCMD Wiki. Auch ich habe mich ab dem dritten Versuch an deren Anleitung gehalten. Daher erstellen wir uns erst mal einen eigenen User für SteamCMD. Hier bietet sich der User „steam“ an und springen direkt in das Homeverzeichnis des Users.
useradd -m steam
cd /home/steam
Jetzt kommt eine kleine Besonderheit. Auf einem 32 bit System könnten wir jetzt mit einem normalen apt install steamcmd installieren. Da ich, wie wohl die meisten, ein 64 bit System einsetze, müssen wir eigentlich noch ein Repository hinzufügen und über dpkg die Architektur hinzufügen. Auf einem Ubuntu 20.04 ist das Repository multiverse schon enthalten und ich kann mir diesen Step sparen. Der Befehl ist aber unter SteamCMD Wiki verfügbar. Somit müssen wir nur noch den dpkg Befehl ausführen und können, nach einem erneuten Update, schon die notwendigen Pakete installieren.
dpkg --add-architecture i386
apt update
apt install lib32gcc1 steamcmd
Bei mir wurden noch ein paar zusätzliche Pakete installiert und unter Debian wurde ich darauf hingewiesen, dass die Library veraltet und ersetzt wurde. Hier bitte einfach mal den Rückmeldetext lesen, sollte es nicht durchlaufen. Während SteamCMD installiert wird, müssen wir noch die Lizenzen bestätigen. Um die Sache noch etwas zu vereinfachen, erstellen wir uns noch einen Link zur ausführbaren Datei.
ln -s /usr/games/steamcmd steamcmd
Jetzt ist es Zeit SteamCMD zu starten. Dafür nutzen wir den steam User und führen das Programm aus.
su – steam
steamcmd
Nach dem Download und der Installation solltet ihr ein Steam> Prompt sehen. Der Project Zomboid Server den wir installieren wollen, kann nur über einen angemeldeten Nutzer installiert werden. Daher müssen wir uns jetzt mit unseren Steam Credentials einloggen. Ich habe bei meinen Tests keine anzeichen dafür gefunden, dass euer Passwort irgendwo im Klartext abgelegt oder übertragen wurde aber meine Hand würde ich dafür nicht ins Feuer legen. Ich habe meine Account mit einem zweiten Faktor abgesichert und würde euch das auch empfehlen. Diese 2FA kann auch über SteamCMD erfolgen.
login <username>
<password>
Außer einem schnöden OK sehen wir nicht viel. Auch das Prompt hat sich nicht verändert. Ob es geht, werden wir gleich raus finden. Als erstes werden wir das Installationsverzeichnis festlegen und danach direkt den Server installieren. Hier kommt mein größter Fehler. Ich habe mich an die Steam Liste mit den dedizierten Servern gehalten. Dort hat der Project Zomboid Server die app-id 108600. Dies ist aber der nicht Steam Server! Das findet man natürlich erst raus, wenn man sich nicht verbinden kann. Die richtige app-id lautet 380870.
force_install_dir /home/steam/pzs/
app_update 380870 validate
Nachdem der Download und die Installation abgeschlossen ist, können wir SteamCMD mit einem einfach quit verlassen. Jetzt kommt die zweite Besonderheit. Der Server muss einmal gestartet werden um die DB und die Konfigurationsdateien zu erstellen. Das machen wir also als nächstes.
/home/steam/pzs/./start-server.sh
Sobald dasteht „SERVER STARTED“, können wir diesen mit strg + c beenden. Jetzt haben wir im Ordner /home/steam/Zomboid/Server/, alle Konfigurationsdateien den Server betreffend. Am wichtigsten ist die Datei servertest.ini, dort könnt ihr ziemlich viel einstellen. Ich empfehle euch dort mal reinzuschauen. Ich setze für meinen Server auf jeden Fall ein Passwort! Eine nicht mehr ganz aktuelle und auch nicht super beschriebene Settingsseite findet ihr im Pzwiki.
Jetzt fragt ihr euch vermutlich, wie ihr den Server laufen lassen und auch ab und zu nach dem Status schauen könnt. Ich empfehle dafür eine Screen Session. Dazu müssen wir aber nochmal aus dem steam User raus und das entsprechende Paket installieren.
apt install screen
Nach der Installation loggen wir uns als Nutzer steam ein und erstellen eine neue Screen Session. Danach können wir dort den Server starten und die Session mit den Tastenkombinationen strg + a und danach strg + d wieder verlassen. Ein zurückspringen in den Screen ist dann mit einem simplen screen -r möglich.
screen -R
/home/steam/pzs/./start-server.sh
Als letztes fehlen uns noch die Portfreigaben um den Server auch zu erreichen. Hier ein kleiner Tipp am Rande, ich besitze einen UPNP fähigen Router und der Server kann per UPNP seine Portfreigaben selber erledigen. Das hat natürlich was. Man muss dem Server dann aber auch vertrauen. Ansonsten müssen die folgenden Ports freigegeben werden.
8766/UDP → Steam
8767/UDP → Steam
16261/UDP → Server Handshake
16262/TCP → Player Connection
16263/TCP → Payer Connection
............