Project Zomboid Dedicated-Server GOG-Version

DAS TUTORIAL FUNKTIONIERT NICHT MEHR MIT VERSION 41.65!!!!

Diese Anleitung soll erklären wie man einen Project Zomboid Server unter Linux erstellt. Es gibt bereits einige Anleitungen, allerdings sind diese entweder veraltet oder beziehen sich auf die Steamversion.
Dieses Tutorial wurde mit Project Zomboid 40.43 auf Ubuntu 20.04.02 erstellt. Andere Kombinationen funktionieren wahrscheinlich auch.

Vorbereitung

Abhängigkeiten installieren

Im diesem Tutorial wird wget verwendet. Sollte es nicht installiert sein, kann es mit folgendem Befehl installiert werden.

root@zomboid:~# apt install wget

Ein Benutzer für den Server

Es empfiehlt sich einen eigenen Nutzer für den Server zu erstellen um dessen Zugriffsmöglichkeiten einzuschränken.

root@zomboid:~# adduser zomboid
Adding user `zomboid' ...
Adding new group `zomboid' (1001) ...
Adding new user `zomboid' (1001) with group `zomboid' ...
Creating home directory `/home/zomboid' ...
Copying files from `/etc/skel' ...

Mit dem Befehlt adduser wurde der Benutzer zomboid erstellt. Der Name des Benutzers spielt keine Rolle.
Die Ausgabe zeigt das außerdem eine Gruppe mit dem Namen zomboid und ein Benutzerordner unter /home/zomboid erstellt wurde.

Dann mit folgendem Befehl zu dem Benutzer wechseln

root@zomboid:~# su -l zomboid
zomboid@zomboid:~$

su -l zomboid wechselt zu dem Benutzer zomboid und an der zweiten Zeile sieht man, dass man nicht länger root@zomboid ist sondern zomboid@zomboid. Also der Benutzer zomboid auf dem Server zomboid.

Download

Um den Installer auf den Server zu bekommen, kann dieser entweder erst auf eine lokalen Computer herunter geladen werden und von da aus auf den Server.
Alternativ lässt er sich mit einem Trick direkt von GOG herunterladen.
Für den Trick einfach den Installer mit einem Browser herunterladen und während des Downloads den Download Link kopieren. Den kopierten Link dann mit wget nutzen.

zomboid@zomboid:~$ wget -O project_zomboid_40_43_26055.sh https://cdn.gog.com/secure/linux_offlines/ SEHR_LANGER_LINK_DER_AUS_DEM_BROWSER_KOPIERT_WURDE

In diesem Beispiel wird wget gesagt, dass es den Download in der Datei, -o, mit dem Namen project_zomboid_40_43_26055.sh speichern soll. https://cdn.gog.com/secure/linux_offlines……… ist der Link der aus dem Browser kopiert wurde.

Die Ausgabe könnte dann so aussehen

Resolving cdn.gog.com (cdn.gog.com)... 192.229.220.97
Connecting to cdn.gog.com (cdn.gog.com)|192.229.220.97|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1557099126 (1.4G) [application/octet-stream]
Saving to: ‘project_zomboid_40_43_26055.sh’

project_zomboid_40_43_260 100%[=====================================>]   1.45G  6.44MB/s    in 3m 45s  

2021-08-15 12:08:57 (6.60 MB/s) - ‘project_zomboid_40_43_26055.sh’ saved [1557099126/1557099126]

Installation und kleine Fehlerbehebung

Installation

Als erstes muss die heruntergeladene Datei ausführbar gemacht werden. Dies geschieht mit folgendem Befehl

zomboid@zomboid:~$ chmod +x project_zomboid_40_43_26055.sh 

chmod passt Berechtigungen an, +x fügt das Recht hinzu die Datei ausführen zu können und project_zomboid_40_43_26055.sh ist die Datei die ausgeführt werden soll.

Gestartet wird die Installation dann mit:

zomboid@zomboid:~$ ./project_zomboid_40_43_26055.sh

Der Installer zeigt dann folgendes

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

(1-21 of 1062 lines, see more?) [Y/n]: n

Type 'back' to go back.
Press enter to continue.
> 
Accept this license? [y/N]: y

Hier wurde zunächst mit n die Darstellung der Nutzungsbedingungen beendet und dann mit y diese Akzeptiert.

Destination
   1  /home/zomboid/GOG Games/Project Zomboid

Choose install destination by number (hit enter for #1), or enter your own.
Type 'back' to go back.
> /home/zomboid/z-server

Hier wird /home/zomboid/GOG Games/Project Zomboid als Installationsziel vorgeschlagen. Ich habe aber alternativ /home/zomboid/z-server angegeben.
Der Pfad ist egal man muss dann nur im weiteren Verlauf den selbst angegebenen statt /home/zomboid/z-server verwenden.

Options
 1  [X]  Create a desktop shortcut
 2  [X]  Create a menu item

Choose number to change.
Type 'back' to go back.
Press enter to continue.
> 1


Options
 1  [ ]  Create a desktop shortcut
 2  [X]  Create a menu item

Choose number to change.
Type 'back' to go back.
Press enter to continue.
> 2


Options
 1  [ ]  Create a desktop shortcut
 2  [ ]  Create a menu item

Choose number to change.
Type 'back' to go back.
Press enter to continue.
> 
Installing
Project Zomboid

Letztlich habe ich noch abgewählt das Menu Items und ein Desktop Shortcut erstellt werden. Also erst Option 1, dann Option 2 und zum Schluss noch einmal Enter.
Jetzt sollte Text über den Bildschirm schießen. Könnte so aussehen:

...
ambientInsideWindRain.wav: 2% (total progress: 65%)
ambientOutsideCricketsNight.ogg: 26% (total progress: 65%)
ambientOutsideCricketsNight.wav: 1% (total progress: 65%)
ambientOutsideCricketsOwlNight.ogg: 27% (total progress: 66%)
ambientOutsideCricketsOwlNight.wav: 1% (total progress: 66%)
ambientOutsideDayBirds.ogg: 25% (total progress: 66%)
ambientOutsideDayBirds.wav: 2% (total progress: 66%)
ambientOutsideDayWoods.ogg: 10% (total progress: 66%)
ambientOutsideDayWoods.wav: 1% (total progress: 66%)
ambientOutsideForestEvening.ogg: 16% (total progress: 66%)
ambientOutsideForestEvening.wav: 1% (total progress: 66%)
ambientOutsideHeavyRain.ogg: 30% (total progress: 67%)
ambientOutsideHeavyRain.wav: 3% (total progress: 67%)
ambientOutsideLightRainWoods.ogg: 28% (total progress: 67
...
config.lua: 100% (total progress: 99%)
localization.lua: 61% (total progress: 99%)
mojosetup_init.lua: 100% (total progress: 99%)
mojosetup_mainline.lua: 100% (total progress: 99%)
libmojosetupgui_ncurses.so: 100% (total progress: 99%)
libmojosetupgui_gtkplus2.so: 100% (total progress: 99%)
Project Zomboid.lua: 5% (total progress: 99%)
Project Zomboid.xml: 7% (total progress: 100%)
Project Zomboid.txt: 21% (total progress: 100%)
Installation was successful.

Wie die letzte Zeile zeigt, ist die Installation abgeschlossen. Das Spiel ist jetzt spielbar aber noch kein Server.

Als nächstes das Spiel einmal starten um nötige Konfigurationsdateien zu erstellen.

zomboid@zomboid:~$ /home/zomboid/z-server/start.sh

Dies schlägt fehl wenn es keinen Bildschirm gibt oder es startet normal. Wenn es gestartet sein sollte, dann einfach beenden.

start-server.sh

Die aktuelle Version von Project Zomboid wird leider in einem etwas verwirrenden und kaputten Zustand ausgeliefert.
Die Datei start-server.sh ist in zwei Versionen vorhanden von denen beide kaputt sind.
Es gibt folgende:

/home/zomboid/z-server/game/start-server.sh
/home/zomboid/z-server/game/projectzomboid/start-server.sh

und Sie unterscheiden sich in nur einer Zeile

/home/zomboid/z-server/game/start-server.sh
 JARPATH="./:./jinput.jar:./lwjgl.jar:./lwjgl_util.jar:./sqlite-jdbc-3.8.10.1.jar:./uncommons-maths-1.2.3.jar:./guava-23.0.jar

/home/zomboid/z-server/game/projectzomboid/start-server.sh
 JARPATH="./:./jinput.jar:./lwjgl.jar:./lwjgl_util.jar:./sqlite-jdbc-3.8.10.1.jar:./trove-3.0.3.jar:./uncommons-maths-1.2.3.jar"

Der Oberen fehlt trove-3.0.3.jar und der Unteren guava-23.0.jar. Was diese genau machen kann uns egal sein.

Damit der Server startet muss zu /home/zomboid/z-server/game/projectzomboid/start-server.sh :./guava-23.0.jar hinzugefügt werden.

#!/bin/bash

INSTDIR="`dirname $0`" ; cd "${INSTDIR}" ; INSTDIR="`pwd`"
JARPATH="./:./jinput.jar:./lwjgl.jar:./lwjgl_util.jar:./sqlite-jdbc-3.8.10.1.jar:./trove-3.0.3.jar:./uncommons-maths-1.2.3.jar:./guava-23.0.jar"

if "${INSTDIR}/jre64/bin/java" -version > /dev/null 2>&1; then
        echo "64-bit java detected"
        export PATH="${INSTDIR}/jre64/bin:$PATH"
        export LD_LIBRARY_PATH="${INSTDIR}/linux64:${INSTDIR}:${INSTDIR}/jre64/lib/amd64:${LD_LIBRARY_PATH}"
        JSIG="libjsig.so"
        LD_PRELOAD="${LD_PRELOAD}:${JSIG}" "${INSTDIR}/jre64/bin/java" \
                -cp "${JARPATH}" -Xms2048m -Xmx2048m \
                -Dzomboid.steam=0 -Dzomboid.znetlog=1 \
                -Djava.library.path=linux64/:./ \
                -XX:-UseSplitVerifier -Djava.security.egd=file:/dev/urandom \
                zombie/network/GameServer "$@"
elif "${INSTDIR}/jre/bin/java" -client -version > /dev/null 2>&1; then
        echo "32-bit java detected"
        export PATH="${INSTDIR}/jre/bin:$PATH"
        export LD_LIBRARY_PATH="${INSTDIR}/linux32:${INSTDIR}:${INSTDIR}/jre/lib/i386:${LD_LIBRARY_PATH}"
        JSIG="libjsig.so"
        LD_PRELOAD="${LD_PRELOAD}:${JSIG}" "${INSTDIR}/jre/bin/java" -client \
                -cp "${JARPATH}" -Xms768m -Xmx768m \
                -Dzomboid.steam=0 -Dzomboid.znetlog=1 \
                -Djava.library.path=linux32/:./ \
                -XX:-UseSplitVerifier -Djava.security.egd=file:/dev/urandom  \
                zombie/network/GameServer "$@"
else
        echo "couldn't determine 32/64 bit of java"
fi
exit 0                                    

In Zeile 4, die mit JARPATH=”. beginnt, wurde :./guava-23.0.jar hinzugefügt. Wichtig ist das :./guava-23.0.jar vor dem leztten ” (Anführungszeichen) eingefügt wird. Im Zweifel kann man auch den gesamten Inhalt löschen und durch den Block über diesem Abschnitt ersetzen.

Erster Start und Anpassung

Erster Start

/home/zomboid/z-server/game/projectzomboid/start-server.sh -servername "Maschinenraum"

Der Server wird mit über die Angepasste Datei /home/zomboid/z-server/game/projectzomboid/start-server.sh gestartet und der Name mit der Option -servername auf “Maschinenraum” vergeben. Hier ist natürlich ein anderer Name anzugeben. Der Name bezieht sich nur auf die Konfiguration und Datenbank. Es ist nicht der Name der später in der Serverliste angezeigt wird.

64-bit java detected
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option UseSplitVerifier; support was removed in 8.0
1629032693332 versionNumber=40.43 demo=false
1629032693332 server name is "Maschinenraum"
1629032693333 map_t.bin does not exist, cannot determine the server's WorldVersion.
1629032693334 Loading networking libraries...
1629032693334 Loading RakNet64...
1629032693334 Loading ZNetNoSteam64...
1629032693335 znet: ZNet loaded
1629032693335 SteamUtils started without Steam
1629032693341 translator: language is EN
1629032693365 reading /home/zomboid/Zomboid/Server/Maschinenraum.ini
1629032693365 writing /home/zomboid/Zomboid/Server/Maschinenraum.ini
1629032693368 user database "/home/zomboid/Zomboid/db/Maschinenraum.db"
User 'admin' not found, creating it 
Command line admin password: null
Enter new administrator password: 
SuperGeheim123
Confirm the password: 
SuperGeheim123
Administrator account 'admin' created.
1629032708075 Router detection/configuration starting.
1629032708075 If the server hangs here, set UPnP=false.

Beim ersten Start wird man dann noch nach dem Administrator Passwort gefragt. Hier wurde SuperGeheim123 angegeben. Wer das gleiche Passwort verwendet ist übrigens doof!!!.

1629032708075 Router detection/configuration starting.
1629032708075 If the server hangs here, set UPnP=false.
No UPnP-enabled Internet gateway found, you must configure port forwarding on your gateway manually in order to make your server accessible from the Internet.

Es kann passieren das eine Meldung zu UPnP angezeigt wird. Diese hier zeigt das die nötigen Ports nicht automatisch geöffnet werden konnten und der Server warscheinlich nicht vom Internet aus erreichbar ist.

Ausserdem wird eine Konfigurationsdatei passenden zum Servernamen erstellt.

1629032722988 writing /home/zomboid/Zomboid/Server/Maschinenraum.ini

Um sich mit dem Server zu verbinden, muss dieser als Favorit hinzugefügt werden. Standardmäßig sind Server nicht öffentlich.

Bei IP muss des Servers eingetragen werden, meine war 10.162.52.243, bei Account admin und bei Passwort SuperGeheim123.
IP und Passwort natürlich entsprechend anpassen. Die richtige IP ist zu 99.999999999% NICHT 10.162.52.243.

Anpassung

Nachdem Startregion, Character und Traits ausgewählt worden sollte man sich in ein Häusschen wieder finden. Als Name steht an der Figur Adminadmin

JenniferCooper

Einstellungen können im Admin Panel angepasst werden. Dieses ist via ESC und dann Admin Panel zu öffnen und sieht so aus.

Admin Panel und Server Options

Geht man im Admin Panel auf See Server Options kann Zumbeispiel der öffentliche Name angepasst und der Server “veröffentlich” (mir ist da jetzt kein besseres Wort für eingefallen) werden.

Der Server ist öffentlich und heisst MaschinenRaum
und taucht auch so in der Serverliste auf. Die IP ist eine andere da hier die öffentliche und nicht meines Internetanschlusses und nicht meines Computers angezeigt wird

Weitere Einstellungen und Backup

Einstellungen

Im Prinzip lassen sich auch Einstellungen ausserhalb des Spiels und ohne das der Server läuft angepassen.

Hierfür ist die Datei die beim ersten start angezeigt wurde anzupassen /home/zomboid/Zomboid/Server/Maschinenraum.ini bzw /home/<Benutzer>/Zomboid/Server/<Servername>
<Benutzer> ist der Benutzer der mit adduser erstellt wurde und <Servername> ist der Name der bei start-server.sh -servername “” angegeben wurde.
könnte so aussehen

nightlengthmodifier=1.0
PVP=true
PauseEmpty=false
GlobalChat=true
ChatStreams=s,r,a,w,y,sh,f,all
Open=true
ServerWelcomeMessage=Welcome to Project Zomboid Multiplayer! <LINE> <LINE> To interact with the Chat panel: press Tab, T, or Enter. <LINE> <LINE> The Tab key will change the target stream of the message. <LINE> <LINE> Global Streams: /all <LINE> Local Streams: /say, /yell <LINE> Special Steams: /whisper, /safehouse, /faction. <LINE> <LINE> Press the Up arrow to cycle through your message history. Click the Gear icon to customize chat. <LINE> <LINE> Happy surviving!
LogLocalChat=false
AutoCreateUserInWhiteList=false
DisplayUserName=true
SpawnPoint=0,0,0
SafetySystem=true
ShowSafety=true
SafetyToggleTimer=2
SafetyCooldownTimer=3
SpawnItems=
DefaultPort=16261
ResetID=2032288
Mods=
Map=Muldraugh, KY
DoLuaChecksum=true
Public=true
PublicName=MaschinenRaum
PublicDescription=
MaxPlayers=64
PingFrequency=10
PingLimit=400
HoursForLootRespawn=0
MaxItemsForLootRespawn=4
ConstructionPreventsLootRespawn=true
DropOffWhiteListAfterDeath=false
NoFire=false
AnnounceDeath=false
MinutesPerPage=1.0
SaveWorldEveryMinutes=0
PlayerSafehouse=false
AdminSafehouse=false
SafehouseAllowTrepass=true
SafehouseAllowFire=true
SafehouseAllowLoot=true
SafehouseAllowRespawn=false
SafehouseDaySurvivedToClaim=0
SafeHouseRemovalTime=144
AllowDestructionBySledgehammer=true
KickFastPlayers=false
ServerPlayerID=29305491
RCONPort=27015
RCONPassword=
DiscordEnable=false
DiscordToken=
DiscordChannel=
DiscordChannelID=
Password=
MaxAccountsPerUser=0
SleepAllowed=false
SleepNeeded=false
SteamPort1=8766
SteamPort2=8767
WorkshopItems=
SteamScoreboard=true
SteamVAC=true
UPnP=true
UPnPLeaseTime=86400
UPnPZeroLeaseTimeFallback=true
UPnPForce=true
CoopServerLaunchTimeout=20
CoopMasterPingTimeout=60
VoiceEnable=true
VoiceComplexity=5
VoicePeriod=20
VoiceSampleRate=24000
VoiceBuffering=8000
VoiceMinDistance=10.0
VoiceMaxDistance=300.0
Voice3D=true
PhysicsDelay=500
SpeedLimit=50.0
server_browser_announced_ip=
UseTCPForMapDownloads=false
PlayerRespawnWithSelf=false
PlayerRespawnWithOther=false
FastForwardMultiplier=40.0
PlayerSaveOnDamage=true
SaveTransactionID=false
DisableSafehouseWhenPlayerConnected=false
Faction=true
FactionDaySurvivedToCreate=0
FactionPlayersRequiredForTag=1
AllowTradeUI=true
HoursForWorldItemRemoval=0.0
WorldItemRemovalList=Base.Vest,Base.Shirt,Base.Blouse,Base.Skirt,Base.Shoes
ItemRemovalListBlacklistToggle=false
DisableRadioStaff=false
DisableRadioAdmin=true
DisableRadioGM=true
DisableRadioOverseer=false
DisableRadioModerator=false
DisableRadioInvisible=true
ClientCommandFilter=-vehicle.*;+vehicle.damageWindow;+vehicle.fixPart;+vehicle.installPart;+vehicle.uninstallPart
ItemNumbersLimitPerContainer=0
BloodSplatLifespanDays=0
AllowNonAsciiUsername=false
BanKickGlobalSound=true
RemovePlayerCorpsesOnCorpseRemoval=false
ZombieUpdateMaxHighPriority=300
ZombieUpdateDelta=0.5
ZombieUpdateRadiusLowPriority=0.0
ZombieUpdateRadiusHighPriority=15.8

Backup

Hierfür den gesamten Zomboid Ordner /home/zomboid/Zomboid irgendwo anders hin kopieren.

Ich habe allerdings noch nicht herausgefunden wie man ein Savegame läd nachdem ein Server aus einer Sicherung wiederhergestellt wurde.