Day of Defeat – Server unter Linux aufsetzen

Heute habe ich spaßeshalber mal ausprobiert, wie ein DoD-Server unter Linux zu realisieren ist. Die Installation verlief ebenso einfach wie die von CS 1.6.

User anlegen

Um diversen Sicherheitsproblemen aus dem Weg zu gehen, setzen wir den Server nicht als root, sondern als normaler User auf. Am besten legt man dafür einen neuen an, z.B. dodserver:
useradd -m -s /bin/bash dodserver
Die Option -m erstellt das Homeverzeichnis.
Die Option -s /bin/bash gibt an, in welcher Shell der neue User arbeitet, wenn man sich z.B. per SSH einloggt. Ohne diesen Parameter gab es bei mir zumindest keine korrekte Shellfunktionalität.

Einloggen am Server

Als nächstes loggen wir uns als dodserver am Server ein und wechseln in sein Homeverzeichnis (normalerweise sollte man sich dort schon befinden):
cd /home/dodserver

Installer laden

Anschließend laden wir das HLDS-Updatetool, machen es ausführbar, starten es, wobei wir die EULA mit yes beantworten (ncompress muss installiert sein!):
wget http://storefront.steampowered.com/download/hldsupdatetool.bin
chmod u+x hldsupdatetool.bin
./hldsupdatetool.bin

Danach ein Verzeichnis für den DoD-Server erstellen und hineinwechseln:
mkdir dodpub
cd dodpub

Installation

Dann kann die Installation auch schon beginnen:
./steam -command update -game dod -dir /home/dodserver/dodpub
Starte den Befehl ein paar Mal hintereinander, bis ihr die Bestätigung bekommt, dass alles auf dem neusten Stand ist:
Checking bootstrapper version ...
Updating Installation
Checking/Installing 'Day of Defeat Base Content' version 10
Checking/Installing 'Linux Server Engine' version 55
Checking/Installing 'Half-Life Base Content' version 12
HLDS installation up to date
CAsyncIOManager: 0 threads terminating. 0 reads, 0 writes, 0 deferrals.
CAsyncIOManager: 71 single object sleeps, 0 multi object sleeps
CAsyncIOManager: 0 single object alertable sleeps, 0 multi object alertable sleeps

Server starten

Die Installation wäre damit abgeschlossen und der DoD-Server kann gestartet werden:
./hlds_run -game dod -port 27016 +maxplayers 20 +map dod_caen &
Wenn der Parameter „-port“ weggelassen wird, startet der Server mit Port 27015.
Der Parameter „&“ am Ende des Befehls schiebt den Prozess in den Hintergrund, sodass auf der Konsole weitergearbeitet werden kann.

Die Ausgabe:
Auto detecting CPU
Using Pentium II Optimised binary.
Auto-restarting the server on crash
Console initialized.
Protocol version 48
Exe version 1.1.2.6/Stdio (dod)
Exe build: 16:56:12 Mar 8 2010 (4883)
STEAM Auth Server
Server IP address xxx.xx.xx.xxx:27016
[S_API FAIL] SteamAPI_Init() failed; unable to update local steamclient. Continuing with current version anyway.
Connection to Steam servers successful.
VAC secure mode is activated.

Die fett-markierte Zeile kann ignoriert werden.

„Fehlermeldungen“ wie diese hier:
couldn't exec listip.cfg
couldn't exec banned.cfg
scandir failed:/home/dodserver/dodpub/./valve/SAVE
scandir failed:/home/dodserver/dodpub/./platform/SAVE

können abgeschaltet werden, indem man die entsprechenden Dateien/Verzeichnisse anlegt. Mir ist bis jetzt nicht aufgefallen, dass der Spielbetrieb in irgendeiner Weise beeinträchtigt wird, wenn man es bei den Meldungen belässt…

Grundkonfiguration

Die Datei /home/dodserver/dodpub/dod/server.cfg wird beim Serverstart geladen. Dort legt man das rcon-Passwort ab (falls nicht standardmäßig eins eingestellt ist):
rcon_password "SecretPassword"
Folgende Zeile bestimmt das Passwort zum Betreten des Server, sofern gewünscht:
sv_password "SecretPassword"
Um den Namen des Servers zu ändern, sucht man den Parameter hostname und ändert ihn wunschgemäß ab.

Beenden/Neustarten

Nach Abändern der server.cfg muss der Server neu gestartet werden. Dazu suche ich mir die entsprechende PID (ProzessID) raus und kille diese:
ps aufx | grep dod
kill PID

Sorry, mir ist z.Z. keine andere Möglichkeit bekannt 😉

Hilfreiche Scripts

Um nicht jedes Mal den Befehl zum Starten und Updaten des CS-Servers raus zu suchen, habe ich mir 2 Scripts geschrieben.

Starten:
#!/bin/bash
./hlds_run -game dod -port 27016 +maxplayers 20 +map dod_caen &
exit 0

Updaten:
#!/bin/bash
./steam -command update -game dod -dir /home/dodserver/dodpub
exit 0

Share

2 Kommentare von "Day of Defeat – Server unter Linux aufsetzen"

  1. R. Scheidler's Gravatar R. Scheidler
    19. Januar 2014 - 17:05 | Permalink

    Hallo,

    ich versuche schon seit langem auf unserem Rootserver DoD 1.3 zu installieren. Nach ihrer oberen Prozedur kommt jedesmal diese fehlermeldung:

    Hello! Unfortunately this tool has reached its end-of-life. For updating dedicated server installs, you will now need to use SteamCMD.
    For more info on SteamCMD, see https://developer.valvesoftware.com/wiki/SteamCMD
    removing stale semaphore last operated on by process 9959 with name 0eBlobRegistryMutex_BA780619697363B1C798B4372A38F28B
    removing stale semaphore last operated on by process 9959 with name 0eBlobRegistrySignal_BA780619697363B1C798B4372A38F28B

    Was mache ich denn da bloß falsch? Auch Killingfloor oder andere Serverinstallationen sind nicht möglich…;-(

    vielleicht weiß ja einer Rat…

    Grüße

  2. 11. Juli 2011 - 08:14 | Permalink

    Heyho!
    Also erstmal: Coole Site! Verdammt viele Themen und Probleme dehnen ich mich auch allen mal stellen wollte/gestellt habe. Und die Lösungen hier.. Respekt!

    Zum beenden des Servers:
    Theoretisch kann man, meine ich, mit dem Parameter „-console“ eine Konsole mit der Serverinstanz ausgeben lassen. Wenn man dann alles in einen screen packt, könnte man auf diese Screen-Instanz zugreifen und mit „exit“ den Server sauber beenden. Ich meine so oder so ähnlich hab ich früher meine Server gekillt.
    Ansonsten einfach mit HLSW und dem RCON-PW auf den Server verbinden und dann mit „exit“ killen. Geht immer und ist eine „saubere“ Lösung zum beenden 😉

Kommentar verfassen