Coun­ter Strike – Eige­ner CS:GO Ser­ver unter Debi­an erstellen

Counter Strike: Global Offensive

Da eini­ge Freun­de von mir das Spiel „Coun­ter Strike: Glo­bal Offen­si­ve” spie­len, habe ich mal ein eige­nen CS:GO Ser­ver instal­liert. Wie das unter Debi­an funk­tio­niert, kann man hier nachlesen.

Spon­tan hat­te ich beschlos­sen, das Spiel „Coun­ter Strike: Glo­bal Offen­siv” auf Linux als Ser­ver zu instal­lie­ren. Somit hos­te ich das Spiel selbst und kann indi­vi­du­ell alles ein­stel­len. Ande­re Mit­spie­ler kön­nen sich dar­auf ver­bin­den und schon kann man zusam­men spielen.

Ich weiß, dass das Spiel schon eini­ge Jähr­chen hin­ter sich hat. Aber den­noch gibt es immer noch sehr vie­le Spie­ler, die die­ses Spiel spie­len und das nicht schlecht. Auch bei mir im Freun­des­kreis spie­len es eini­ge und hat­te daher beschlos­sen, uns ein eige­nen CS:GO Ser­ver zur Ver­fü­gung zu stellen.

Das hat näm­lich den Vor­teil, dass wir selbst alles indi­vi­du­ell ein­stel­len kön­nen, nicht von ande­ren abhän­gig sind und es schon etwas „per­sön­li­cher” wirkt. Zudem kann man auch so ruhi­ge Momen­te zusam­men ver­brin­gen, ohne irgend­wel­che frem­de Mitspieler.

Nun, wer mit den­sel­ben Gedan­ken spielt, kann ja hier wei­ter­le­sen, wenn man wis­sen möch­te, wie man bei sich selbst das Spiel instal­liert und als Ser­ver bereit­stellt. Wie immer bezie­he ich mich auf mei­ne Umge­bung. Sprich, Linux Debi­an 8.3 sta­ble (Jes­sie, sta­ble, 64bits).

Das Spiel herunterladen:
Zunächst muss man ein neu­en Benut­zer stel­len. Das macht man am bes­ten mit „addu­ser –dis­ab­led-log­in steam”. Natür­lich kann man sich auch ein ande­ren Benut­zer­na­men aus­su­chen, aber in die­sem Fall passt „steam” doch schon ganz gut. Man wird es spä­ter her­aus­le­sen, wieso.

Nach­dem man den Benut­zer erstellt hat, wech­selt man zu den Benut­zer via „su steam”. Anschlie­ßend „cd” ein­ge­ben und ein neu­en Ord­ner via „mkdir srcds” erstel­len. Nach­dem der Ord­ner erstellt wur­de, wech­sel man via „cd srcds” dar­ein. Zum Schluss lädt man noch die Steam-CMD her­un­ter via „wget http://media.steampowered.com/client/steamcmd_linux.tar.gz” und ent­packt es via „tar xfvz steamcmd_linux.tar.gz”.

Wenn die Steam-CMD her­un­ter­ge­la­den und ent­packt wur­de, star­tet man sie via „STEAMEXE=steamcmd ./steam.sh”. Es kann sein, dass vor­her noch nach Updates und/oder ähn­li­ches gesucht wird. Wenn das der Fall ist, ein­fach war­ten. Solan­ge, bis am Ende „Steam>” ange­zeigt wird.

Ist das der Fall, loggt man sich anonym via „log­in anony­mous” bei Steam ein und teilt Steam erst­mal via „force_install_dir /home/steam/” mit, wohin das Spiel her­un­ter­ge­la­den wer­den soll. Zum Schluss lädt man das Spiel via „app_update 740 vali­da­te” her­un­ter. Das kann eini­ge Momen­te dau­ern. Ist das abge­schlos­sen, ein­fach „exit” und danach „cd /home/steam/” eingeben.

Das Spiel starten:
Ist der Down­load kom­plett abge­schlos­sen, kann via „./srcds_run ‑game csgo ‑con­so­le ‑user­con +game_type 0 +game_mode 0 +map­group mg_bomb +map de_dust” aus­pro­bie­ren, ob der Ser­ver schon funk­tio­niert. Ver­folgt pro­vi­so­risch ein­fach mit, was so in der Kon­so­le ange­zeigt wird.

Danach star­tet man das Spiel CS:GO auf dem Desk­top und sucht über den Favo­ri­ten sein eige­nen Ser­ver. Man muss nach der eige­nen Ser­ver-IP suchen und anschlie­ßend als Favo­rit hin­zu­fü­gen. Besitzt man meh­re­re IP-Adres­sen (Fail­over-IP), sucht sich sei­ne Root-IP her­aus und ver­wen­det diese.

Wenn man ver­bun­den ist, kann sich sicher sein, dass alles tadel­los funk­tio­niert hat. Aber natür­lich war es das nicht schon. Man muss vor­her ein paar Sachen erledigen.

Das Spiel dau­er­haft lauf­fä­hig machen:
Funk­tio­niert soweit schon alles, gibt ein­fach in der Konsole/dem Ter­mi­nal „STRG + C” ein und been­det den CS:GO Ser­ver. Wür­de man das nicht machen und schließt ein­fach so irgend­wann die Kon­so­le (das Ter­mi­nal), wird auch der Ser­ver been­det. Um das zu ver­hin­dern, muss man paar Din­ge erledigen.

Unter Debi­an gibt es schon ein fer­ti­ges Script, womit man im spä­te­ren Ver­lauf ein­fach via „ser­vice csgo-ser­ver-laun­cher start” den Ser­ver star­ten las­sen kann und das dau­er­haft. Ganz gleich, ob man irgend­wann spä­ter die Kon­so­le 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-ser­ver-laun­cher –no-check-cer­ti­fi­ca­te”, danach „chmod +x csgo-ser­ver-laun­cher” und zum Schluss „update-rc.d csgo-ser­ver-laun­cher defaults” ein.

Danach „mkdir /et­c/cs­go-ser­ver-laun­cher/” 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-cer­ti­fi­ca­te”.

Damit hat man nun das Script her­un­ter­ge­la­den und rich­tig „ein­ge­stellt”. Aber bevor man nun den Ser­ver star­tet, muss vor­her noch paar „tech­ni­sche Details” vor­neh­men, damit das auch alles läuft. Dazu öff­net man die Datei „csgo-server-launcher.conf” in „/et­c/cs­go-ser­ver-laun­cher”.

Die wesent­lich wich­ti­gen Ein­stel­lun­gen sind die­se hier:
IP=„127.0.0.1” < Hier kommt die eige­ne IP rein, auf wel­che IP-Adres­se der CS:GO Ser­ver hören und sich Leu­te ver­bin­den soll
PORT=„27015” < Der Port 27015 ist der Stan­dard-Port und kann so blei­ben, kann man aber auf Wunsch natür­lich auch ändern
GSLT=„SERVER-KEY” < Unter http://steamcommunity.com/dev/managegameservers muss man sich ein Ser­ver-Key gene­rie­ren und dort ein­tra­gen. Jeder Ser­ver muss sein eige­nen Key haben
DIR_STEAMCMD=”/home/steam” < Die­sen Pfad verwenden
DIR_ROOT=”$DIR_STEAMCMD” < Eben­falls die­sen Pfad verwenden
API_AUTHORIZATION_KEY=„API-KEY” < Unter http://steamcommunity.com/dev/apikey sein eige­nen API-Key gene­rie­ren und dort eintragen
MAXPLAYERS=„10” < Maxi­mal zehn Mit­spie­ler kön­nen auf den Ser­ver, die­ser Wert kann aber belie­big geän­dert wer­den. Ich hab zehn genom­men für ein „Fünf gegen Fünf”
TICKRATE=„128” < Wenn man ein klei­nen vSer­ver und/oder ähn­li­ches hat, auch mit wenig Band­brei­te, dann den Wert auf „64” ändern. Am bes­ten ist jedoch „128”
EXTRAPARAMS=”-nohltv +sv_pure 0 +game_type 0 +game_mode 0 +map­group mg_bomb +map de_dust2 +host­na­me SEINHOSTNAME +sv_tags SEINE,SERVER,TAGS,PRO,TAG,EIN,WORT,UND,MIT,KOMMA,TRENNEN +rcon_password IRGENDEINPASSWORT” < Das ein­fach kom­men­tar­los über­neh­men, aber logi­scher­wei­se mit den eige­nen Daten aus­tau­schen. „+game_type ZAHL” und „+game_mode ZAHL” defi­niert den Ser­ver-Modus. Clas­sic Casu­al hat 0/1, Clas­sic Com­pe­ti­ti­ve hat 0/1, Arms Race hat 1/0, Demo­li­ti­on hat 1/1 und Death­match hat 1/2

Hat man die Kon­fi­gu­ra­ti­on ent­spre­chend ange­passt, über­prüft noch­mal, ob man auch genau mei­ne Wer­te über­nom­men hat. Eben­so, ob die feh­len­den Sachen ein­ge­tra­gen wur­den und „Platz­hal­ter” von mir mit den eige­nen Daten aus­ge­tauscht wur­den. Ist das der Fall, spei­chert die Datei und gib danach in der Kon­so­le „exit” ein, sodass man den Benut­zer „steam” ver­lässt und wie­der als „root” da ist.

Nun kann man mit „ser­vice csgo-ser­ver-laun­cher start” den Ser­ver star­ten. Das Script öff­net nun alles im Hin­ter­grund und lässt es kon­ti­nu­ier­lich lau­fen. Somit ist der CS:GO Ser­ver solan­ge online, wie auch der eige­ner Linux Ser­ver es ist. Mit „ser­vice csgo-ser­ver-laun­cher stop” been­det man den Ser­ver und mit „restart” statt „stop” macht der Ser­ver ein Neustart.

Glück­wunsch, schon könn­te man rein theo­re­tisch los­le­gen! Aber natür­lich gibt es noch paar ande­re, net­te Sachen, die ich nie­man­den nicht vor­ent­hal­ten möchte.

Ser­ver-Admin-Rech­te erlangen:
Natür­lich kann man auch diver­se Admin-Rech­te bean­spru­chen, ist ja schließ­lich sein eige­ner Ser­ver. Damit kann man bei­spiels­wei­se Leu­ten aus dem CS:GO-Server ban­nen, kicken, töten, die Map wech­seln und eini­ges mehr. Wie das funk­tio­niert, beschrei­be ich auch und näm­lich so, wie ich es gelöst habe. Von Haus aus ist es etwas schwie­rig (man muss sonst alles über die CS:GO-Konsole mana­gen, biss­chen nervig).

Zunächst wech­selt man wie­der den Benut­zer zu steam mit „su steam”. Anschlie­ßend „cd /home/steam/csgo/” ein­ge­ben, 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 ent­pa­cken. Nun ladet noch etwas her­un­ter mit „wget http://www.sourcemod.net/smdrop/1.7/sourcemod‑1.7.3‑git5298-linux.tar.gz” und ent­packt es mit „tar xfvz sourcemod‑1.7.3‑git5298-linux.tar.gz”.

Damit hat man ein AddOn her­un­ter­ge­la­den, der die Admi­nis­tra­ti­on erheb­lich ver­ein­facht und nicht stän­dig sich Befeh­le mer­ken und in die CS:GO Kon­so­le ein­ge­ben muss. Aber um das Plug­in letzt­end­lich zu ver­wen­den, muss man vor­her noch eine klei­ne Ände­rung vornehmen.

Zuerst öff­net man die Datei „admins_simple.ini” in „/home/steam/csgo/addons/sourcemod/configs”. Ganz am Ende gibt man „„SEINESTEAMID” „z”” ein. Beim Kopie­ren bit­te die dop­pel­ten „” am Anfang und Ende ent­fer­nen oder halt nicht mit­ko­pie­ren. Außer­dem muss „SEINESTEAMID” noch mit sei­ne per­sön­li­che ID aus­ge­tauscht wer­den. Wie man die her­aus­be­kommt lässt sich schnell über irgend­ei­ne Such­ma­schi­ne her­aus­fin­den. Irgend­wel­che Web­sei­ten, die das für jemand macht zu ver­lin­ken, mag ich nicht.

Hat man sei­ne ID ein­ge­tra­gen, öff­net noch­mal das Spiel und geht oben rechts auf „OPTIONEN”, „TASTATUR / MAUS” und ver­gibt irgend­ei­ne Tas­te bei der Opti­on „Kon­so­le öff­nen”. Ich hab die „F1” dafür genommen.

Nun ver­bin­det man sich zum eige­nen CS:GO Ser­ver und drückt die Kon­so­len-Tas­te (F1 in mei­nem Fall). Dort gibt man zuerst „rcon_password IRGENDEINPASSWORT” ein. Was das Pass­wort ist, hat man ganz oben im Tuto­ri­al fest­ge­legt („+rcon_password IRGENDEINPASSWORT”). Danach zum Über­prü­fen noch­mal „rcon” ein­ge­ben. Kommt kei­ne Mel­dung, ist das Pass­wort rich­tig. Kommt „Bad RCON pass­word”, ist das Pass­wort falsch.

Nach­dem das rich­ti­ge Pass­wort ein­ge­ge­ben wur­de, gibt man „bind „p” „sm_admin”” ein. Hier beim Her­aus­ko­pie­ren wie­der die dopp­l­ten „” am Anfang und Ende ent­fer­nen oder nicht mit kopie­ren. Nun kann man mit dem Buch­sta­ben „P” das Admin-Menü auf­ru­fen. Natür­lich kann man auch ein ande­ren Buch­sta­ben ver­wen­den. Ein­fach den Buch­sta­ben beim Befehl aus­tau­schen. Aber bevor man das Admin-Menü auf­ru­fen möch­te, schließt man vor­her die Kon­so­le. Dann klappt das auch mit dem Menü.

Jetzt kann man so gut wie die wich­tigs­ten Sachen über das Spiel selbst admi­nis­trie­ren, ohne, dass man sich Befeh­le mer­ken und in der Kon­so­le ein­ge­ben muss. Glückwunsch.

Aber natür­lich bin ich immer noch nicht fer­tig. Man kann noch so eini­ges mehr machen, bei­spiels­wei­se meh­re­re CS:GO Ser­ver auf­set­zen. Wenn man dar­an Inter­es­se hat, ein­fach weiterlesen.

Meh­re­re CS:GO Ser­ver erstellen:
Möch­te man meh­re­re Ser­ver erstel­len, muss ein biss­chen trick­sen. Der nor­ma­le Weg mit „ser­vice csgo-ser­ver-laun­cher start” funk­tio­niert logi­scher­wei­se nicht. Kommt bit­te auch nicht auf die Idee, statt­des­sen irgend­was ande­res einzugeben.

Wenn man das Linux-Pro­gramm namens „screen” nicht besitzt, instal­liert man es als root mit „apt-get install screen”. Ist man noch als Benut­zer „steam”, gibt man ein­fach „exit” ein und schon ist man wie­der der Benut­zer „root”.

Nach­dem screen instal­liert wur­de, öff­net man eine zwei­te Kon­so­le (Ter­mi­nal). Im zwei­ten Ter­mi­nal gibt man nun „su steam”, anschlie­ßend „cd /home/steam” und „screen ‑S csgo2” ein. „csgo2” kann auch irgend­was ande­res sein, solan­ge es nicht „csgo” heißt. Denn so heißt der screen vom ers­ten, regu­lä­ren Ser­ver, den man mit „ser­vice cgso-ser­ver-laun­cher start” gestar­tet hat.

Jetzt kommt eine Feh­ler­mel­dung, dass screen das Ter­mi­nal nicht öff­nen kann. Im ande­ren Ter­mi­nal, wo man als Benut­zer „root” ist, gibt man nun „chmod 777 /dev/pts/ZAHL” ein. Wobei „ZAHL” die Zahl steht, die bei der Feh­ler­mel­dung vom Benut­zer „steam” steht.

Nun gibt man wie­der im Ter­mi­nal vom Benut­zer „steam” „screen ‑S csgo2” ein und man wird fest­stel­len, dass es funk­tio­niert. Dort gibt man dann fol­gen­des ein:

„./srcds_run ‑game csgo ‑con­so­le ‑user­con ‑secu­re ‑auto­up­date ‑maxplayers_override ANZAHLDERSPIELER ‑tick­ra­te TICKRATEZAHL +host­port 27016 +ip SEINEIPADRESSE +net_public_adr NOCHMALSEINEIPADRESSE ‑nohltv +sv_pure 0 +game_type 0 +game_mode 1 +map­group mg_bomb +map de_dust2 +host­na­me SEINHOSTNAME +sv_tags SEINE,SERVER,TAGS,PRO,TAG,EIN,WORT,UND,MIT,KOMMA,TRENNEN +rcon_password IRGENDEINPASSWORT ‑auth­key SEINAPIKEY +host_workshop_collection 125499818 +workshop_start_map 125488374 +sv_setsteamaccount SEVERKEY”

Vor­her muss man aber natür­lich wie­der die rich­ti­gen Daten ein­tra­gen. Wel­che genau das sind, hat man oben schon fest­ge­legt. Wich­tig hier­bei ist aber, dass man nun ein ande­ren Port ver­gibt, als beim ers­ten Ser­ver. Eben­so ist es wich­tig, dass man nun ein zwei­ten Ser­ver-Key (sie­he oben, wie das geht) erstellt und dort ein­trägt. Jeder Ser­ver braucht sein eige­nen Server-Key!

Wenn alle Daten mit den eige­nen Daten aus­ge­tauscht wur­den, kann man den kom­plet­ten Befehl im Ter­mi­nal von dem Benut­zer „steam” ein­ge­ben. Anschlie­ßend star­tet der Ser­ver und wenn das erfolg­reich, dann kann man ein­fach das Ter­mi­nal schlie­ßen. Hier läuft der zwei­te CS:GO Ser­ver nun im Hintergrund.

Möch­te man im spä­te­ren Ver­lauf den Ser­ver stop­pen, muss man mit dem Benut­zer „steam” zuerst „screen ‑R” ein­ge­ben. Mög­li­cher­wei­se kommt wie­der die Feh­ler­mel­dung wegen kei­ne Rech­te. Wie man das behebt, steht etwas oben (hab ich bereits schon erklärt). Nun ein­fach dort „STRG + C” ein­ge­ben und der CS:GO Ser­ver been­det sich. Anschlie­ßend „exit” ein­ge­ben und der screen ist zu.

Das kann man so oft machen, wie man lus­tig ist. Ich bei­spiels­wei­se hab aktu­ell sechs Ser­ver par­al­lel am lau­fen. Wich­tig hier­bei ist aber halt nur, dass der ers­te Ser­ver über „ser­vice csgo-ser­ver-laun­cher” gestar­tet wird und jeder wei­te­rer Ser­ver über „screen”. Eben­so ist es sehr wich­tig, dass jeder zusätz­li­cher Ser­ver sein eige­nen Ser­ver-Key hat. Hat man das alles beach­tet, kann prak­tisch 1.000 Ser­ver pro Steam-Benut­zer­ac­count erstellen.

Sons­ti­ges:
Ich knab­be­re hier um die 1.900 Wör­ter für das Tuto­ri­al. Dem­entspre­chend hof­fe ich stark, dass das Tuto­ri­al von mir sehr, sehr ein­fach und ver­ständ­lich war, sodass auch „der letz­te Unwis­sen­de” bes­tens infor­miert ist, WAS genau er da tut und WIE es funktioniert.

Wenn ich irgend­was ver­ges­sen habe oder sonst irgend­was ist, dann nutzt ein­fach unten die Kom­men­tar-Funk­ti­on. Natür­lich gewähr­leis­te ich nichts, aber so in die­sem Fall hat es bei mir auf mei­nem Linux Debi­an 8.3 funktioniert.

Anmer­kun­gen zum Bei­trag? Hin­weis an die Redak­ti­on sen­den.