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.