Counter Strike 1.6 – Server unter Linux aufsetzen

Es existieren zwar zig HowTOs im Netz, welche das beschreiben, aber da ich es vor ein paar Tagen gemacht habe, wird’s auch hierhin gekritzelt 😉

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. csserver:
useradd -m -s /bin/bash csserver
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.

Verzeichnis erstellen

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

Danach ein Verzeichnis für den CS-Server erstellen und hineinwechseln:
mkdir cs16war
cd cs16war

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

Installation

Dann kann die Installation auch schon beginnen:
./steam -command update -game cstrike -dir /home/csserver/cs16war
Am besten führt man diesen Befehl 2-3 Mal aus, bis man die Bestätigung vom Installer bekommt, dass alles auf dem neusten Stand ist, was ungefähr so aussieht:
./steam -command update -game cstrike -dir /home/csserver/cs16war
Checking bootstrapper version ...
Updating Installation
Checking/Installing 'Counter-Strike Base Content' version 35
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 wir können den Server starten:
./hlds_run -game cstrike +maxplayers 11
Sieht die Ausgabe folgendermaßen aus, ist der Server gestartet, hat sich bei Steam angemeldet und ist per VAC gesichert:
Auto detecting CPU
Using Pentium II Optimised binary.
Auto-restarting the server on crash
Console initialized.
scandir failed:/home/csserver/cs16war/./valve/SAVE
scandir failed:/home/csserver/cs16war/./platform/SAVE

Protocol version 48
Exe version 1.1.2.6/Stdio (cstrike)
Exe build: 16:56:12 Mar 8 2010 (4883)
STEAM Auth Server
Server IP address xxx.xx.xx.xxx:27015
Server logging data to file logs/L1205000.log
couldn't exec listip.cfg
couldn't exec banned.cfg
scandir failed:/home/csserver/cs16war/./valve/SAVE
scandir failed:/home/csserver/cs16war/./platform/SAVE

Server logging data to file logs/L1205001.log
[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-markierten Zeilen können ignoriert werden. Sie haben keinen Einfluss auf den Betrieb des Servers. „Abschalten“ kann man sie, indem man die entsprechenden Verzeichnisse/Dateien anlegt.
Der Server ist nun unter Server-IP:27015 erreichbar. Möchte man den Port ändern, um mehrere CS-Server auf einem Rechner laufen zu lassen, gibt man dem Startbefehl folgende Option mit:
-port 270XX
Für XX natürlich 2 Zahlen einsetzen 😉

Grundkonfiguration

Die Datei /home/csserver/cs16war/cstrike/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 cstrike
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 cstrike +maxplayers 12 &
exit 0

Das &-Zeichen bewirkt, dass der Prozess im Hintergrund ausgeführt wird, sodass das Konsolenfenster bei Remotezugriff geschlossen werden kann, ohne dass der CS-Server beendet wird.
Updaten:
#!/bin/bash
./steam -command update -game cstrike -dir /home/csserver/cs16war/
exit 0

Share

Kommentar verfassen

1 Trackback von "Counter Strike 1.6 – Server unter Linux aufsetzen"

  1. am 7. Februar 2011 um 23:11