Da einige Freunde von mir das Spiel „Counter Strike: Global Offensive” spielen, habe ich mal ein eigenen CS:GO Server installiert. Wie das unter Debian funktioniert, kann man hier nachlesen.
Spontan hatte ich beschlossen, das Spiel „Counter Strike: Global Offensiv” auf Linux als Server zu installieren. Somit hoste ich das Spiel selbst und kann individuell alles einstellen. Andere Mitspieler können sich darauf verbinden und schon kann man zusammen spielen.
Ich weiß, dass das Spiel schon einige Jährchen hinter sich hat. Aber dennoch gibt es immer noch sehr viele Spieler, die dieses Spiel spielen und das nicht schlecht. Auch bei mir im Freundeskreis spielen es einige und hatte daher beschlossen, uns ein eigenen CS:GO Server zur Verfügung zu stellen.
Das hat nämlich den Vorteil, dass wir selbst alles individuell einstellen können, nicht von anderen abhängig sind und es schon etwas „persönlicher” wirkt. Zudem kann man auch so ruhige Momente zusammen verbringen, ohne irgendwelche fremde Mitspieler.
Nun, wer mit denselben Gedanken spielt, kann ja hier weiterlesen, wenn man wissen möchte, wie man bei sich selbst das Spiel installiert und als Server bereitstellt. Wie immer beziehe ich mich auf meine Umgebung. Sprich, Linux Debian 8.3 stable (Jessie, stable, 64bits).
Das Spiel herunterladen:
Zunächst muss man ein neuen Benutzer stellen. Das macht man am besten mit „adduser –disabled-login steam”. Natürlich kann man sich auch ein anderen Benutzernamen aussuchen, aber in diesem Fall passt „steam” doch schon ganz gut. Man wird es später herauslesen, wieso.
Nachdem man den Benutzer erstellt hat, wechselt man zu den Benutzer via „su steam”. Anschließend „cd” eingeben und ein neuen Ordner via „mkdir srcds” erstellen. Nachdem der Ordner erstellt wurde, wechsel man via „cd srcds” darein. Zum Schluss lädt man noch die Steam-CMD herunter via „wget http://media.steampowered.com/client/steamcmd_linux.tar.gz” und entpackt es via „tar xfvz steamcmd_linux.tar.gz”.
Wenn die Steam-CMD heruntergeladen und entpackt wurde, startet man sie via „STEAMEXE=steamcmd ./steam.sh”. Es kann sein, dass vorher noch nach Updates und/oder ähnliches gesucht wird. Wenn das der Fall ist, einfach warten. Solange, bis am Ende „Steam>” angezeigt wird.
Ist das der Fall, loggt man sich anonym via „login anonymous” bei Steam ein und teilt Steam erstmal via „force_install_dir /home/steam/” mit, wohin das Spiel heruntergeladen werden soll. Zum Schluss lädt man das Spiel via „app_update 740 validate” herunter. Das kann einige Momente dauern. Ist das abgeschlossen, einfach „exit” und danach „cd /home/steam/” eingeben.
Das Spiel starten:
Ist der Download komplett abgeschlossen, kann via „./srcds_run ‑game csgo ‑console ‑usercon +game_type 0 +game_mode 0 +mapgroup mg_bomb +map de_dust” ausprobieren, ob der Server schon funktioniert. Verfolgt provisorisch einfach mit, was so in der Konsole angezeigt wird.
Danach startet man das Spiel CS:GO auf dem Desktop und sucht über den Favoriten sein eigenen Server. Man muss nach der eigenen Server-IP suchen und anschließend als Favorit hinzufügen. Besitzt man mehrere IP-Adressen (Failover-IP), sucht sich seine Root-IP heraus und verwendet diese.
Wenn man verbunden ist, kann sich sicher sein, dass alles tadellos funktioniert hat. Aber natürlich war es das nicht schon. Man muss vorher ein paar Sachen erledigen.
Das Spiel dauerhaft lauffähig machen:
Funktioniert soweit schon alles, gibt einfach in der Konsole/dem Terminal „STRG + C” ein und beendet den CS:GO Server. Würde man das nicht machen und schließt einfach so irgendwann die Konsole (das Terminal), wird auch der Server beendet. Um das zu verhindern, muss man paar Dinge erledigen.
Unter Debian gibt es schon ein fertiges Script, womit man im späteren Verlauf einfach via „service csgo-server-launcher start” den Server starten lassen kann und das dauerhaft. Ganz gleich, ob man irgendwann später die Konsole schließt oder nicht.
Dazu gibt man nun „cd /etc/init.d/”, anschließend „wget https://raw.githubusercontent.com/crazy-max/csgo-server-launcher/master/csgo-server-launcher.sh ‑O csgo-server-launcher –no-check-certificate”, danach „chmod +x csgo-server-launcher” und zum Schluss „update-rc.d csgo-server-launcher defaults” ein.
Danach „mkdir /etc/csgo-server-launcher/” und zuletzt „wget https://raw.githubusercontent.com/crazy-max/csgo-server-launcher/master/csgo-server-launcher.conf ‑O /etc/csgo-server-launcher/csgo-server-launcher.conf –no-check-certificate”.
Damit hat man nun das Script heruntergeladen und richtig „eingestellt”. Aber bevor man nun den Server startet, muss vorher noch paar „technische Details” vornehmen, damit das auch alles läuft. Dazu öffnet man die Datei „csgo-server-launcher.conf” in „/etc/csgo-server-launcher”.
Die wesentlich wichtigen Einstellungen sind diese hier:
IP=„127.0.0.1” < Hier kommt die eigene IP rein, auf welche IP-Adresse der CS:GO Server hören und sich Leute verbinden soll
PORT=„27015” < Der Port 27015 ist der Standard-Port und kann so bleiben, kann man aber auf Wunsch natürlich auch ändern
GSLT=„SERVER-KEY” < Unter http://steamcommunity.com/dev/managegameservers muss man sich ein Server-Key generieren und dort eintragen. Jeder Server muss sein eigenen Key haben
DIR_STEAMCMD=”/home/steam” < Diesen Pfad verwenden
DIR_ROOT=”$DIR_STEAMCMD” < Ebenfalls diesen Pfad verwenden
API_AUTHORIZATION_KEY=„API-KEY” < Unter http://steamcommunity.com/dev/apikey sein eigenen API-Key generieren und dort eintragen
MAXPLAYERS=„10” < Maximal zehn Mitspieler können auf den Server, dieser Wert kann aber beliebig geändert werden. Ich hab zehn genommen für ein „Fünf gegen Fünf”
TICKRATE=„128” < Wenn man ein kleinen vServer und/oder ähnliches hat, auch mit wenig Bandbreite, dann den Wert auf „64” ändern. Am besten ist jedoch „128”
EXTRAPARAMS=”-nohltv +sv_pure 0 +game_type 0 +game_mode 0 +mapgroup mg_bomb +map de_dust2 +hostname SEINHOSTNAME +sv_tags SEINE,SERVER,TAGS,PRO,TAG,EIN,WORT,UND,MIT,KOMMA,TRENNEN +rcon_password IRGENDEINPASSWORT” < Das einfach kommentarlos übernehmen, aber logischerweise mit den eigenen Daten austauschen. „+game_type ZAHL” und „+game_mode ZAHL” definiert den Server-Modus. Classic Casual hat 0/1, Classic Competitive hat 0/1, Arms Race hat 1/0, Demolition hat 1/1 und Deathmatch hat 1/2
Hat man die Konfiguration entsprechend angepasst, überprüft nochmal, ob man auch genau meine Werte übernommen hat. Ebenso, ob die fehlenden Sachen eingetragen wurden und „Platzhalter” von mir mit den eigenen Daten ausgetauscht wurden. Ist das der Fall, speichert die Datei und gib danach in der Konsole „exit” ein, sodass man den Benutzer „steam” verlässt und wieder als „root” da ist.
Nun kann man mit „service csgo-server-launcher start” den Server starten. Das Script öffnet nun alles im Hintergrund und lässt es kontinuierlich laufen. Somit ist der CS:GO Server solange online, wie auch der eigener Linux Server es ist. Mit „service csgo-server-launcher stop” beendet man den Server und mit „restart” statt „stop” macht der Server ein Neustart.
Glückwunsch, schon könnte man rein theoretisch loslegen! Aber natürlich gibt es noch paar andere, nette Sachen, die ich niemanden nicht vorenthalten möchte.
Server-Admin-Rechte erlangen:
Natürlich kann man auch diverse Admin-Rechte beanspruchen, ist ja schließlich sein eigener Server. Damit kann man beispielsweise Leuten aus dem CS:GO-Server bannen, kicken, töten, die Map wechseln und einiges mehr. Wie das funktioniert, beschreibe ich auch und nämlich so, wie ich es gelöst habe. Von Haus aus ist es etwas schwierig (man muss sonst alles über die CS:GO-Konsole managen, bisschen nervig).
Zunächst wechselt man wieder den Benutzer zu steam mit „su steam”. Anschließend „cd /home/steam/csgo/” eingeben, danach „wget http://cdn.probablyaserver.com/sourcemod/mmsource‑1.10.6‑linux.tar.gz” und mit „tar xfvz mmsource‑1.10.6‑linux.tar.gz” es entpacken. Nun ladet noch etwas herunter mit „wget http://www.sourcemod.net/smdrop/1.7/sourcemod‑1.7.3‑git5298-linux.tar.gz” und entpackt es mit „tar xfvz sourcemod‑1.7.3‑git5298-linux.tar.gz”.
Damit hat man ein AddOn heruntergeladen, der die Administration erheblich vereinfacht und nicht ständig sich Befehle merken und in die CS:GO Konsole eingeben muss. Aber um das Plugin letztendlich zu verwenden, muss man vorher noch eine kleine Änderung vornehmen.
Zuerst öffnet man die Datei „admins_simple.ini” in „/home/steam/csgo/addons/sourcemod/configs”. Ganz am Ende gibt man „„SEINESTEAMID” „z”” ein. Beim Kopieren bitte die doppelten „” am Anfang und Ende entfernen oder halt nicht mitkopieren. Außerdem muss „SEINESTEAMID” noch mit seine persönliche ID ausgetauscht werden. Wie man die herausbekommt lässt sich schnell über irgendeine Suchmaschine herausfinden. Irgendwelche Webseiten, die das für jemand macht zu verlinken, mag ich nicht.
Hat man seine ID eingetragen, öffnet nochmal das Spiel und geht oben rechts auf „OPTIONEN”, „TASTATUR / MAUS” und vergibt irgendeine Taste bei der Option „Konsole öffnen”. Ich hab die „F1” dafür genommen.
Nun verbindet man sich zum eigenen CS:GO Server und drückt die Konsolen-Taste (F1 in meinem Fall). Dort gibt man zuerst „rcon_password IRGENDEINPASSWORT” ein. Was das Passwort ist, hat man ganz oben im Tutorial festgelegt („+rcon_password IRGENDEINPASSWORT”). Danach zum Überprüfen nochmal „rcon” eingeben. Kommt keine Meldung, ist das Passwort richtig. Kommt „Bad RCON password”, ist das Passwort falsch.
Nachdem das richtige Passwort eingegeben wurde, gibt man „bind „p” „sm_admin”” ein. Hier beim Herauskopieren wieder die dopplten „” am Anfang und Ende entfernen oder nicht mit kopieren. Nun kann man mit dem Buchstaben „P” das Admin-Menü aufrufen. Natürlich kann man auch ein anderen Buchstaben verwenden. Einfach den Buchstaben beim Befehl austauschen. Aber bevor man das Admin-Menü aufrufen möchte, schließt man vorher die Konsole. Dann klappt das auch mit dem Menü.
Jetzt kann man so gut wie die wichtigsten Sachen über das Spiel selbst administrieren, ohne, dass man sich Befehle merken und in der Konsole eingeben muss. Glückwunsch.
Aber natürlich bin ich immer noch nicht fertig. Man kann noch so einiges mehr machen, beispielsweise mehrere CS:GO Server aufsetzen. Wenn man daran Interesse hat, einfach weiterlesen.
Mehrere CS:GO Server erstellen:
Möchte man mehrere Server erstellen, muss ein bisschen tricksen. Der normale Weg mit „service csgo-server-launcher start” funktioniert logischerweise nicht. Kommt bitte auch nicht auf die Idee, stattdessen irgendwas anderes einzugeben.
Wenn man das Linux-Programm namens „screen” nicht besitzt, installiert man es als root mit „apt-get install screen”. Ist man noch als Benutzer „steam”, gibt man einfach „exit” ein und schon ist man wieder der Benutzer „root”.
Nachdem screen installiert wurde, öffnet man eine zweite Konsole (Terminal). Im zweiten Terminal gibt man nun „su steam”, anschließend „cd /home/steam” und „screen ‑S csgo2” ein. „csgo2” kann auch irgendwas anderes sein, solange es nicht „csgo” heißt. Denn so heißt der screen vom ersten, regulären Server, den man mit „service cgso-server-launcher start” gestartet hat.
Jetzt kommt eine Fehlermeldung, dass screen das Terminal nicht öffnen kann. Im anderen Terminal, wo man als Benutzer „root” ist, gibt man nun „chmod 777 /dev/pts/ZAHL” ein. Wobei „ZAHL” die Zahl steht, die bei der Fehlermeldung vom Benutzer „steam” steht.
Nun gibt man wieder im Terminal vom Benutzer „steam” „screen ‑S csgo2” ein und man wird feststellen, dass es funktioniert. Dort gibt man dann folgendes ein:
„./srcds_run ‑game csgo ‑console ‑usercon ‑secure ‑autoupdate ‑maxplayers_override ANZAHLDERSPIELER ‑tickrate TICKRATEZAHL +hostport 27016 +ip SEINEIPADRESSE +net_public_adr NOCHMALSEINEIPADRESSE ‑nohltv +sv_pure 0 +game_type 0 +game_mode 1 +mapgroup mg_bomb +map de_dust2 +hostname SEINHOSTNAME +sv_tags SEINE,SERVER,TAGS,PRO,TAG,EIN,WORT,UND,MIT,KOMMA,TRENNEN +rcon_password IRGENDEINPASSWORT ‑authkey SEINAPIKEY +host_workshop_collection 125499818 +workshop_start_map 125488374 +sv_setsteamaccount SEVERKEY”
Vorher muss man aber natürlich wieder die richtigen Daten eintragen. Welche genau das sind, hat man oben schon festgelegt. Wichtig hierbei ist aber, dass man nun ein anderen Port vergibt, als beim ersten Server. Ebenso ist es wichtig, dass man nun ein zweiten Server-Key (siehe oben, wie das geht) erstellt und dort einträgt. Jeder Server braucht sein eigenen Server-Key!
Wenn alle Daten mit den eigenen Daten ausgetauscht wurden, kann man den kompletten Befehl im Terminal von dem Benutzer „steam” eingeben. Anschließend startet der Server und wenn das erfolgreich, dann kann man einfach das Terminal schließen. Hier läuft der zweite CS:GO Server nun im Hintergrund.
Möchte man im späteren Verlauf den Server stoppen, muss man mit dem Benutzer „steam” zuerst „screen ‑R” eingeben. Möglicherweise kommt wieder die Fehlermeldung wegen keine Rechte. Wie man das behebt, steht etwas oben (hab ich bereits schon erklärt). Nun einfach dort „STRG + C” eingeben und der CS:GO Server beendet sich. Anschließend „exit” eingeben und der screen ist zu.
Das kann man so oft machen, wie man lustig ist. Ich beispielsweise hab aktuell sechs Server parallel am laufen. Wichtig hierbei ist aber halt nur, dass der erste Server über „service csgo-server-launcher” gestartet wird und jeder weiterer Server über „screen”. Ebenso ist es sehr wichtig, dass jeder zusätzlicher Server sein eigenen Server-Key hat. Hat man das alles beachtet, kann praktisch 1.000 Server pro Steam-Benutzeraccount erstellen.
Sonstiges:
Ich knabbere hier um die 1.900 Wörter für das Tutorial. Dementsprechend hoffe ich stark, dass das Tutorial von mir sehr, sehr einfach und verständlich war, sodass auch „der letzte Unwissende” bestens informiert ist, WAS genau er da tut und WIE es funktioniert.
Wenn ich irgendwas vergessen habe oder sonst irgendwas ist, dann nutzt einfach unten die Kommentar-Funktion. Natürlich gewährleiste ich nichts, aber so in diesem Fall hat es bei mir auf meinem Linux Debian 8.3 funktioniert.