Get Rewarded! We will reward you with up to €50 credit on your account for every tutorial that you write and we publish!

Installieren eines CSGO Game Servers

profile picture
Author
Markus
Published
2019-04-05
Time to read
6 minutes reading time

Einleitung

In diesem Beitrag, geht es um die Installation und Konfiguration eines CSGO Game Servers auf Linuxsystemen.

Voraussetzungen

  • Ein x86/x64 kompatibles System
  • Ubuntu 16.04 LTS
  • Installiertes steamcmd
  • Ein CX21 Server oder besser

Step 1 - Vorbereitungen

Erstellen des CSGO Server Ordners, hier befinden sich später die Server Dateien:

mkdir /opt/csgo/
chown steamcmd:steamcmd /opt/csgo/

Alle Befehle sollten im kontext des steamcmd Benutzers ausgeführt werden.

su --shell /bin/bash steamcmd

Step 2 - Installation

Herunterladen der Server Dateien per steamcmd:

steamcmd +login anonymous +force_install_dir /opt/csgo/ +app_update 740 +quit

Sobald der Server heruntergeladen wurde, können die Server Einstellungen gesetzt werden.

Die CSGO Server Konfigurationsdatei, befindet sich unter /opt/csgo/csgo/cfg/server.cfg. Hier kann die untenstehende Beispielkonfiguration bearbeitet und eingefügt werden.

// ************************************************************************** //
//     Counter-Strike: Global Offensive - server.cfg                          //
//     Version 240917                                                         //
// ************************************************************************** //
// .................................. Basic ................................. //

// Hostname - Name of the server.
hostname "SERVERNAME"

// RCON - remote console password.
rcon_password "ADMINPASSWORD"

// Server password - for private servers.
sv_password ""

// Email - Server admin email.
// Example: sv_contact "email@example.com"
sv_contact ""

// LAN mode - If set the server will not show on the internet.
// Default: sv_lan 0
sv_lan 0

// ............................. Server Logging ............................. //

// Enable log - Enables logging to file, console, and udp < on | off >.
// Recommended: log on
log on

// Log bans - Log server bans in the server logs.
// Default: sv_logbans 1
// Recommended: sv_logbans 1
sv_logbans 1

// Log echo - Display log information to the server console.
// Default: sv_logecho 1
// Recommended: sv_logecho 1
sv_logecho 1

// Log file - Log server information in the log file.
// Default: sv_logfile 1
// Recommended: sv_logfile 1
sv_logfile 1

// One file log - Log server information to only one file.
// Default: sv_log_onefile 0
// Recommended: sv_log_onefile 0
sv_log_onefile 0

// Server Hibernation
sv_hibernate_when_empty 1
sv_hibernate_ms 5

// ............................. Server Query ............................. //
// More info at: https://www.gametracker.com/games/csgo/forum.php?thread=91691
host_name_store 1
host_info_show 1
host_players_show 2

// ................................ Ban List ................................ //

// User ban - Server banlist based on user steam ID.
// Recommended: exec banned_user.cfg
exec banned_user.cfg

// IP ban - Server banlist based on user IP.
// Recommended: exec banned_ip.cfg
exec banned_ip.cfg

// Write ID - Writes a list of permanently-banned user IDs to banned_user.cfg.
writeid

// Write IP - Save the ban list to banned_ip.cfg.
writeip

Step 3 - Server Verwaltung

Um den Server zu Verwalten (starten, stoppen, updaten), wird das folgende Script benötigt.

Die meisten Einstellungen können unverändert übernommen werden, nur der Eintrag GAMETOKEN muss abgeändert werden. Hier muss ein gültiger Server Token hinterlegt werden. Server Token können hier angefordert werden: Steam Game Server Account Management

(Auf leistungsschwachen Servern sollte der Eintrag TICK auf 64 reduziert werden.)

#!/bin/bash

################# SET VARs #################

DIR="/opt/csgo"
SCREENNAME="csgo"

GAMETOKEN=""
TICK=128
GAMETYPE=0
GAMEMODE=1
MAPGROUP="mg_bomb"
MAP="de_dust2"
MAXPLAYER=10

################# DO NOT MODIFY #################

DEAMON="srcds_run"
PARAMS="-game csgo -ip 0.0.0.0 -port 27015 +maxplayers $MAXPLAYER +map $MAP -tickrate $TICK +game_type $GAMETYPE +game_mode $GAMEMODE +mapgroup $MAPGROUP +sv_setsteamaccount $GAMETOKEN"

function start_server {
    if [[ `screen -ls | grep $SCREENNAME` ]]; then
        echo "Der Server laeuft bereits unter dem Screentab $SCREENNAME"
    else
        echo "Starte $SCREENNAME"
        if [ -d $DIR ]; then
           cd $DIR
           screen -d -m -S $SCREENNAME ./$DEAMON $PARAMS
        else
           echo "Das Server Verzeichnis wurde nicht angegeben"
        fi
    fi
}

function stop_server {
    if [[ `screen -ls | grep $SCREENNAME` ]]; then
        echo -n "Stoppe $SCREENNAME"
        kill `screen -ls | grep $SCREENNAME | awk -F . '{print $1}'| awk '{print $1}'`
        echo " ... done."
    else
        echo "Konnte den Screentab $SCREENNAME nicht finden"
    fi
}

function update_server {
    stop_server
    steamcmd +login anonymous +force_install_dir $DIR +app_update 740 +quit
    start_server
}

case "$1" in
start)
    start_server
;;

stop)
    stop_server
;;

restart)
    stop_server
    start_server
;;

update)
    update_server
;;

  *)
    echo "Usage: $0  (start / stop / update)"
esac

exit 0

Das Skript kann zum Beispiel unter /opt/steamcmd/csgo.sh abgelegt werden.

Danach müssen noch Berechtigungen zum Ausführen des Scripts erteilt werden:

chmod +x /opt/steamcmd/csgo.sh

Jetzt wird noch ein Systemd Service Eintrag benötigt.

Der Eintrag erfolgt unter: /etc/systemd/system/csgo.service:

[Unit]
Description=Counter-Strike: Global Offensive Server (SRCDS)
After=local-fs.target network.target

[Service]
User=steamcmd
Group=steamcmd

ExecStart=/opt/steamcmd/csgo.sh start
ExecStop=/opt/steamcmd/csgo.sh stop
Type=forking

[Install]
WantedBy=multi-user.target

Der eben erstellte Eintrag, muss nun mit dem Befehl systemctl daemon-reload aktiviert werden. Jetzt kann der CSGO Server mit systemctl start csgo und systemctl stop csgo gestartet oder gestoppt werden.

Um die automatische Serveraktualisierung einzurichten, wird folgender Eintrag unter crontab -e benötigt:

0 4 * * * systemctl stop csgo && su --shell /bin/bash steamcmd -c "/opt/steamcmd/csgo.sh update" && systemctl start csgo >/dev/null 2>&1

Dieser Eintrag würde so jeden Tag um 4:00 Uhr ausgeführt werden.

Fehlerbehebung

Sollte es Probleme geben, sich mit dem screen zu verbinden:

Cannot open your terminal '/dev/pts/0' - please check.

Genügt es den folgenden Befehl in der aktuellen Sitzung auszuführen:

script /dev/null

Danach ist eine Verbindung mit der screen session wieder möglich.

Fazit

Solltest du den Beitrag bis hierhin verfolgt haben, besitzt du einen eigenen CSGO Server, der selbstständig nach Updates sucht.

License: MIT
Want to contribute?

Get Rewarded: Get up to €50 in credit! Be a part of the community and contribute. Do it for the money. Do it for the bragging rights. And do it to teach others!

Report Issue

Discover our

Dedicated Servers

Configure your dream server. Top performance with an excellent connection at an unbeatable price!

Want to contribute?

Get Rewarded: Get up to €50 credit on your account for every tutorial you write and we publish!

Find out more