Benutzer-Werkzeuge

Webseiten-Werkzeuge


installation:dedicated_server_standalone

Dies ist eine alte Version des Dokuments!


Dedicated Server

Der vom Steam unabhängige Source Dedicated Server lässt sich für Linux und Windows bei Steampowered.com herunterladen. Es wird wie früher kein gültiger Steam-Acount voraus gesetzt.

Linux

Voraussetzung um einen Server installieren zu können ist der direkte Zugriff auf die Konsole oder der Zugriff auf eine Shell über eine SSH-Verbindung auf den Host. Die wichtigen Grundbefehle unter Linux sollten bekannt sein, damit ein sicherer Umgang mit dem Server gewährleistet ist. Es ist davon absolut abzuraten den Server mit Root-Rechten einzurichten.

User einrichten

Um einen neuen Benutzer einrichten zu können, muss man mit „root“ eingeloggt sein. Mit dem folgenden Befehl erstellt man zuerst einen User, für den dann auch direkt ein Homeverzeichnis eingerichtet wird. Der 2. Befehl legt das Passwort für den User fest. Wird kein Passwort festgelegt, kann sich der neue User nicht einloggen.

useradd -m srcds
passwd srcds

hldsupdatetool installieren

Es ist darauf zu achten, dass man bereits mit dem neuen User eingeloggt ist. Man kann sich entweder mit PuTTY neu verbinden oder mit dem Befehl su username sich mit dem neu angelegten User umloggen. Um zu sehen mit welchen User man zur Zeit eingeloggt ist, kann man mit dem Befehl whoami sehen.
Für die Übersicht kann man ein Verzeichnis für den Download und den Steam-Installer erstellen.

mkdir steam
cd steam

Das Programm hldsupdatetool.bin kann mittels wget heruntergeladen werden. Das Programm wget ist nicht Bestandteil jeder Linux-Distribution. Unter Debian installiert man wget mittels apt-get install wget

wget http://storefront.steampowered.com/download/hldsupdatetool.bin

Das Programm hldsupdatetool.bin, welches den Steam-Installer beinhaltet, muss gestartet werden. Zuvor muss die Datei mit chmod u+x für den Besitzer ausführbar gemacht werden.

chmod u+x hldsupdatetool.bin
./hldsupdatetool.bin


Nachdem hldsupdatetool.bin ausgeführt wurde, muss yes bestätigt werden, damit der Installer, der steam heißt, entpackt wird.
Steam muss einmal gestartet werden, damit sich der Installer selber updatet. Der Installer hat nichts mit Steam unter Windows gemeinsam. Unter Linux ist es lediglich ein Kommandozeilen-Tool um Server zu installieren.

./steam

Fehlerquellen

Treten nach dem Ausführen vom hldsupdatetool.bin Fehler auf, liegt es am fehlenden „uncompress“. Manche Distributionen haben es Standardmäßig nicht mit drin.

Der Befehl ln -s $(which gunzip) $(dirname $(which gunzip))/uncompress legt eine symbolische Verknüpfung Namens uncompress zu gunzip im gleichern Verzeichnis an.

Server installieren

Mithilfe des Steam-Installers können bestimmte Modifikationen per Kommandozeile bequem installiert und aktualisiert werden. Neben den offiziellen Modifikationen können auch Modifikationen von anderen Entwicklern eingerichtet werden. Der Download besteht immer aus der Engine und der zugehörigen Modifikationen. Bei dem „Source Dedicated Server“ ist man in der Lange mehrere Modifikationen nebeneinander zu installieren. Da Modifikationen für „Orange Box Engine“ in dem zusätzlichen Unterverzeichnis oranagebox mit installiert werden, kann man diese auch in das gleiche Verzeichnis mit installieren.

Offizielle Modifikationen

Der Steam-Installer kann eine Liste vorhandener Spiele bzw. Modifikationen anzeigen. Der Befehl ./steam -command list listet alle verfügbaren Modifikationen auf.

Um z.B. einen Server für CS:S im Verzeichnis css-public im Homeverzeichnis anzulegen, sind folgende Schritte notwendig.

mkdir ~/css-public
./steam -command update -game "Counter-Strike Source" -dir ~/css-public/ -retry

Anmerkung: Das Tilde-Zeichen “~“ zeigt immer auf das Homeverzeichnis des zur Zeit eingeloggten Users. Man kann es auch weglassen, wenn man sich im Homeverzeichnis befindet.


Die Installation nimmt etwas Zeit in Anspruch. Nachdem die Installation beendet ist, kann der Server konfiguriert und gestartet werden.

Modifikationen von Drittanbietern

Viele Anbieter stellen für ihre Modifikationen auch Dateien für Linux-Server zur Verfügung. Da es gegen die Lizenz verstößt, die Dateien vom SRCDS-Server so anzubieten, muss der Server zuerst mit dem Steam-Installer heruntergeladen werden. In den meisten Fällen reicht es aus die Modifikation Half-Life 2 Deathmatch „hl2mp“ zu verwenden, um den SRCDS herunterzuladen. Bei diesem Beispiel richten wir einen Server für „Eternal Silence“ ein. Dieses Mod benötigt och die alte „Source Engine“. Sollte eine andere Modifikationen eingerichtet werden, die die „Orange Box Engine“ benötigt, muss mit dem Steam-Installer anstatt „hl2mp“ „tf“ (Team Fortress 2) eingerichtet werden.

mkdir ~/eternal_silence
cd ~/steam
./steam -command update -game "hl2mp" -dir ~/eternal_silence -retry

Durch diesen Befehl wird der SRCDS-Server mit der Modifikationen „Half-Life 2 Deathmatch“ heruntergeladen. Nach Beendigung, des Downloads, kann die Eternal Silence heruntergeladen werden und direkt in das passende Verzeichnis entpackt werden. Um die Übersicht zu behalten, wird noch das Verzeichnis download/mods angelegt. Fehlt das Verzeichnis download, wird es mit angelegt. Der Parameter -p sorgt für dieses Verhalten von mkdir.

mkdir -p ~/download/mods
cd ~/download/mods
wget http://downloads.gbs-clan.de/hl2/mods/Eternal_Silence/3.x/Eternal_Silence_3_0_server.tar.gz
tar -xzf Eternal_Silence_3_0_server.tar.gz -C ~/eternal_silence

Server starten

Es gibt verschiedene Wege den Server zu starten. Da die meisten Server mittels Fernzugriff gestartet werden, ist dafür zu sorgen, dass sich nicht beendet werden, wenn man die SSH-Verbindung schließt. Das sind die Fehler, die jeder Anfänger einmal gemacht hat.

Startparameter

Die Startparameter vom Server sind unter Linux und Windows fast identisch.

In dem Beispiel starten wir einen CS:S-Server mit der IP 123.123.123.123 auf dem Standard-Port 27015:

cd ~/css-public
./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -tickrate 66 -autoupdate -debug +map de_dust2


Die Fehlermeldungen sind zum Teil ganz normal und lassen sich nicht beseitigen. Wird das Fester jetzt geschlossen, die PuTTY-Session also beendet, schließt sich auch automatisch der Server, da er ein Kind-Prozess von der Shell ist, die geschlossen wird. Es gibt 2 Methoden dies zu verhindern.

nohup

Der Befehl nohup veranlasst andere Programme, die durch nohup gestartet worden sind, das Hangup-Signal der Konsole zu ignorieren. Mit dem Kaufmanns-Und am Ende der Zeile wird die Anwendung, in diesem Fall der Server, im Hintergrund gestartet.
Ein Beispiel:

nohup ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -tickrate 66 -autoupdate -debug +map de_dust2 &
screen

Screen ist ein Fenstermanager, der es erlaubt, erzeugte Fenster auch im Hintergrund nach Beendigung der SSH-Verbindung, laufen zu lassen. Die Fenster können mit dem screen-Befehl wieder geholt werden. Zu dem Befehl screen gibt es im Internet eine vielzahl an Anleitungen. Bei den meisten Distributionen muss es nachträglich installiert werden.
Ein Beispiel:

nohup ./srcds_run -game cstrike -maxplayers 10 -ip 123.123.123.123 -port 27015 -tickrate 66 -autoupdate -debug +map de_dust2 2>&1 >/dev/null &

Häufige Fehler

Es kann durchaus mal passieren, dass ein Server ausversehen zwei mal oder öfters gestartet wurde, ohne dass der Admin anfangs etwas bemerkt. Erst nachdem sich bestimmte Ports nicht mehr belegen lassen, fängt man an zu suchen. Ein sehr hilfreiches Tool ist lsof. Es zeigt alle geöffneten Dateien und Verbindungen an. Ist z.B. mal ein Port durch einen Server belegt, kann man diesen bei bedarf auch beenden. In diesem Beispiel wurde der Server z.B. durch ein Missgeschick 2 mal gestartet. Da auch noch die Angabe vom Port im Startparameter vergessen wurde, läuft der gleiche Server jetzt auf Port 27015 und 27016. Wir möchten den Server, der auf Port 27016 lauscht, beenden.
Mit losf finden wir zuerst die PID des Server heraus:

lsof -i 27016

Der Befehl gibt uns folgendes aus:

COMMAND     PID   USER   FD   TYPE     DEVICE SIZE NODE NAME
srcds_amd 27850 server    4u  IPv4 4072257777       UDP *:27016
srcds_amd 27850 server    7u  IPv4 4072257780       TCP xxxxxx.net:27016 (LISTEN)

Nun wissen wir, um welchen Prozess es sich handelt, der den Port 27016 belegt. Da der Server durch das Script srcds_run gestartet wird, ist dies der Eltern-Prozess. Dieser Eltern-Prozess, in diesem Fall das Shell-Script srcds_run, sollte zuerst beendet werden, da es sonst den Server ggf. neustartet, wenn den Kind-Prozess beendet.
So lässt sich der Eltern-Prozess finden:

ps -o ppid 27850

Die Parameter -o mit dem Wert ppid gibt zu der gegeben PID den Eltern-Prozess (PPID = parent process id) aus.
Das sieht dann so aus:

PPID
28171

Jetzt beenden wir den Eltern-Prozess:

kill 28171

Dadurch, dass der Prozess beendet wird, wird dem Kind-Prozess automatisch der Eltern-Prozess mit der PID 1 zugewiesen. Auf jedem *NIX-System ist dies der INIT-Prozess.
Danach beenden wir den eigentlichen Prozess, welcher den Port belegt:

kill 27850

Zur Kontrolle kann man nochmals mittels lsof -i 27016 nachsehen, ob der Port weiterhin belegt ist.

Server updaten

Falls Updates der Source Engine oder der Modifikation herauskommen, müssen die Server meistens auch aktualisiert werden. In den seltensten Fällen können die Spieler auf einem veralteten Server spielen.

offizielle Modifikationen

Um einen Server mit einer offiziellen Modifikation zu aktualisieren, wird der gleiche Befehl verwendet, der auch für die Installation des Servers, verwendet wurde. Bei Problemen kann auch noch der Parameter -veryfy_all verwendet werden. Es werden dann alle Dateien überprüft. Hier unser Beispiel:

./steam -command update -game "Counter-Strike Source" -dir ~/css-public/ -retry

Modifikationen von Drittherstellern

Das Aktualisieren der Server, die Modifikationen von Drittherstellern nutzen, welche über den Steam-Installer nicht zu bekommen sind, muss das Update in zwei Schritten erfolgen.

  1. Source Engine updaten
    Beispiel für einen Eternal-Silence-Server:
    ./steam -command update -game "hl2mp" -dir ~/eternal_silence -retry
  2. Die Modifikation updaten
    Bei unserem Beispiel müsste dann, falls vorhanden, die neue Version der Modifikation heruntergeladen werden und im Installationsverzeichnis des Servers entpackt werden.

Windows

Unter Windows lässt sich der Server auch mit normalen Benutzerrechten installieren. Wenn der Server per RDP-Verbindung auf einem Root-Server installiert werden soll, ist darauf zu achten nicht mit Administrator-Rechten zu arbeiten, auch wenn es einfacher ist mit dem Administrator zu arbeiten. Es sollte zuvor ein zusätzlicher Benutzer mit eingeschränkten Rechten eingerichtet werden. Die Anleitung bezieht sich auf Windows 2008 Server, ist aber auch auf ältere Versionen und Nicht-Server-Versionen übertragbar.

Benutzer einrichten

Dieser Schritt kann übergangen werden, wenn es der eigene PC Zuhause im LAN ist.
Um einem neuen Benutzer anlegen zu können, muss man als Administrator angemeldet sein. Über Start > Verwaltung soll die Computerverwaltung geöffnet werden. Diese kann man auch über Start > Ausführen > compmgmt.msc direkt geöffnet werden.

Nachdem die Computerverwaltung geöffnet wurde, wechselt man über Lokale Benutzer und Gruppen auf Benutzer. Mit einem Rechtsklick auf (dort wo schon Administrator drin steht) die freie Fläche erscheint ein Menü, mit dem man den Menüpunkt Neuer Benutzer auswählt. Ein Fenster Neuer Benutzer öffnet sich.
Hier ein Beispiel:

Nachdem der neue Benutzer erfolgreich hinzugefügt wurde, muss er noch zur Gruppe der Remotedesktopbenutzer hinzugefügt werden. Es müssen die Eigenschaften des neu erstellten Benutzers aufgerufen werden (Rechtsklick > Eigenschaften). Unter dem Reiter Mitglied von bzw. Mitgliedschaft klickt man auf den Button Hinzufügen. Es öffnet sich ein neuer Dialog. Man kann direkt die Gruppe Remotedesktopbenutzer eintragen oder über Erweitert > Jetzt suchen die Gruppe Remotedesktopbenutzer direkt auswählen.


Danach sollte die Gruppe in der Liste stehen.

Jetzt muss nur noch mit OK bestätigt werden und der neue Benutzer kann sich per RDP auf den Root-Server einloggen.

hldsupdatetool installieren

Handelt es sich nicht um Windows 2008 Server, kann dieser Schritt übersprungen werden.


Seit der Version von Windows 2008 Server wird mehr Wert auf Sicherheit gelegt.

Es kann folgende URL im Internet Explorer geöffnet werden: http://store.steampowered.com/about/

Um das Windows HLDS Update Tool als Nicht-Administrator herunterladen zu können, muss die Seite als Vertrauenswürdig hinzugefügt werden.
Doppelklick auf und danach im neuen Fenster Vertrauenswürdige Sites auswählen und auf Sites klicken. Die URL http://store.steampowered.com sollte schon im Eingabefeld stehen. Diese sollte durch http://*.steampowered.com ersetzt werden, welche danach durch Hinzufügen hinzugefügt werden soll. Danach kann man den Dialog Schließen und mit OK den Dialog Internetsicherheit schließen.


Das Windows HLDS Update Tool kann direkt über http://storefront.steampowered.com/download/hldsupdatetool.exe heruntergeladen werden.

Fehlerquellen

Server installieren

Offizielle Modifikationen

Modifikationen von Drittanbietern

Server starten

Startparameter

Häufige Fehler

Server updaten

offizielle Modifikationen

Modifikationen von Drittherstellern

Server konfigurieren

Da es ein Vielzahl von Modifikationen gibt kann man zur Konfiguration keine einheitliche klare Aussage treffen. Dennoch gibt es bei dem „Source Dedictad Server“ einige Techniken, die bei jedem Server gleich sind. Die ausführbaren Konfigurationsdateien befinden sich in bei der Source Engine 2007 in ./$mod/cfg/ und bei der Orange Box Engine in ./orangebox/$mod/cfg/. Mit $mod ist das Verzeichnis der Modifikation gemeint. Die Zeichenfolge ./ gibt das Installationsverzeichnis des Servers an.

Auflistung wichtiger Dateien:

Datei Speicherort Beschreibung
valve.rc $mod/cfg/ Wird nach dem Start des Servers ausgeführt. Der Befehl exec autoexec.cfg führt die Datei autoexec.cfg aus. Der Befehl stuffcmds führt die Konsolen-Variablen und Befehle aus, die von der Kommandozeile durch das Pluszeichen übergeben worden sind. Die meisten Admins ändern nichts an dieser Datei, es ist aber dennoch gut zu wissen, dass es die erste Konfigdatei ist, die ausgeführt wird
autoexec.cfg $mod/cfg/ Wird vor dem Laden der ersten Map ausgeführt. Da es ein paar Konsolen-Variablen gibt, die erst Effekt nach einem Mapchange erzielen, ist es angebracht diese in der autoexec.cfg festzulegen.
server.cfg $mod/cfg/ Nachdem eine Map geladen wurde, wird die server.cfg ausgfeührt. So lassen sich Konsolen-Variablen auf einen selber vorgegeben Wert ändern. Es kann durch die Konsolen-Variablen servercfgfile definiert werden, welche Konfig-Datei nach einem Mapchange ausgeführt wird.
mapname.cfg $mod/maps/cfg/ Es lassen sich so für die unterschiedlichen Maps bestimmte Konfigurationen ausführen. Die Konfiguration für jede Map wird erst nach der server.cfg ausgeführt. So lassen sich z.B. Konsolen-Variablen, die zuvor in der server.cfg festgelegt wurden, überschreiben. Bei de_dust2 wird z.B. die Konfigurationsdatei $mod/maps/cfg/de_dust2.cfg geladen.
motd.txt $mod/ Mit dieser Datei wird die „Message of the day“ festgelegt. Das ist das Fenster, dass nach dem Verbinden auf einen Server angezeigt wird. Die Anzeige geschieht In-Game mit dem Internet Explorer. Der Inhalt der motd.txt ist HTML und lässt sich beleibig verändern. Bilder können nachgeladen werden oder Umleitungen auf externen Webspace können stattfinden.
maplist.txt $mod/ Verschiedene Addons nutzen diese Datei, um die Maps in einem Menü anzeigen zu können. Der reine SRCDS braucht diese Datei nicht. In der Datei werden die verfügbaren Maps ohne Dateierweiterung untereinander aufgelistet
mapcycle.txt $mod/ Damit lässt sich eine bestimmte Reihenfolge festlegen, in der die Maps geladen werden. Das Format ist das gleiche wie bei der Datei maplist.txt. Das Verhalten ohne das Eingreifen von Addons ist recht einfach zu erklären. Läuft eine bestimmte Map, die in der mapcycle.txt steht, wird die nächste Map der darunterliegende Eintrag genommen. Ist die Schreibweise falsch oder fehlt der Eintrag, wird die erste Map aus dem Mapcycle genommen. Die Konsolen-Variablen mapcyclefile definiert welche Datei für den Mapcycle genommen wird. Standardmäßig ist es die Datei mapcycle.txt

Es können auch andere Konfigurationsdateien in der server.cfg oder autoexec.cfg durch den Befehl exec geladen werden. Diese müssen sich aber im Verzeichnis $mod/cfg/ befinden. Z.B. führt der Befehl exec sourceTV.cfg die Konfigurationsdatei $mod/cfg/sourceTV.cfg aus. In Konfigurationsdateien können Konsolen-Variablen und Befehle stehen. Eine neue Zeile leitet den nächsten Befehl ein. Das Semikolon ermöglicht es mehrere Befehle in einer Zeile zu schreiben. Die Argumente einer Konsolen-Variablen oder eines Befehls werden mit einem Leerzeichen getrennt. So muss z.B. der Servername in Anführungszeichen eingeschlossen werden, damit auch Leerzeichen verwendet werden können. Kommentare werden mit zwei Schrägstrichen eingeleitet.

autoexec.cfg

Ein Beispiel für eine autoexec.cfg: Hier wird der Servername festgelegt Sporadischer Eintrag. sv_pure 0 Es können hier z.B. noch Scripte für Eventscripts geladen werden. ==== server.cfg ==== Ein Beispiel für eine server.cfg: Hier wird der Servername festgelegt hostname „Server von sourceserver.info“

Legt das Rcon-Passwort fest, dass zum Fernsteuern benötigt wird. rcon_password „test“ Führt die Datei $mod/cfg/netsettings.cfg aus. Dient nur als Beispiel. exec netsettings.cfg</code>

mapcycle.txt

Ein Beispiel für den Mapcycle:

de_dust2
de_dust
de_aztec

motd.txt

Ein Beispiel für die „Nachricht des Tages“:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Cstrike MOTD</title>
<style type="text/css">
pre     {
                font-family:Verdana,Tahoma;
                color:#FFB000;
        }
body    {
                background:#000000;
                margin-left:8px;
                margin-top:0px;
                }
a       {
        text-decoration:    underline;
        }
a:link  {
    color:  #FFFFFF;
    }
a:visited   {
    color:  #FFFFFF;
    }
a:active    {
    color:  #FFFFFF;
    }
a:hover {
    color:  #FFFFFF;
    text-decoration:    underline;
    }
</style>
</head>
<body scroll="no">
<pre>
Willkommen auf unseren Gameserver
<a href="http://sourceserver.info">Besucht mal sourceserver.info</a>
</pre>
</body>
</html>

Addons einrichten

Für die einfachere Administration des Servers und für Änderungen des Gameplays, können Addons bzw. Plugins installiert werden. Das Spektrum reicht von einfachen Scripts bis hin zu komplexen Plugins mit einer Datenbankanbindung und einer Vielzahl von Funktionen.

installation/dedicated_server_standalone.1225136212.txt.gz · Zuletzt geändert: 2009/10/24 13:48 (Externe Bearbeitung)