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

Установка игрового сервера CSGO

profile picture
Author
Markus
Published
2019-11-29
Time to read
5 minutes reading time

Введение

В данной статье рассмотрим установку и настройку игрового сервера CSGO в ОС Linux.

Требования

  • x86 / x64 совместимое оборудование
  • Ubuntu 16.04 LTS
  • Установленный steamcmd
  • сервер CX21 или мощнее

Шаг 1 - Подготовка

Создайте папку для CSGO сервера, все файлы сервера будут находиться здесь:

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

Все команды должны выполняться от пользователяsteamcmd.

su --shell /bin/bash steamcmd

Шаг 2 - Установка

Скачайте файлы сервера через steamcmd:

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

Как только загрузка закончится, можем приступать к настройке.

Файл конфигурации сервера CSGO расположен по следующему пути /opt/csgo/csgo/cfg/server.cfg. Вы можете его отредактировать и вставить нижеследующий пример.

// ************************************************************************** //
//     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

Шаг 3 - Администрирование сервера

Для управления сервера (запуск, останов, обновление) необходим нижеследующий скрипт.

Многие настройки могут применяться без изменений, необходимо изменить только параметр GAMETOKEN. Действующий токен сервера должен быть сдан на хранение. Токены сервера могут быть запрошены здесь: Steam Game Server Account Management

(На слабых серверах, параметр TICK следует уменьшить до 64)

#!/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 "The server is already running $SCREENNAME"
    else
        echo "Starte $SCREENNAME"
        if [ -d $DIR ]; then
           cd $DIR
           screen -d -m -S $SCREENNAME ./$DEAMON $PARAMS
        else
           echo "The server directory was not specified"
        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 "Could not find the screen $SCREENNAME"
    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

Скрипт можно разместить по следующему пути /opt/steamcmd/csgo.sh.

После этого должны быть выданы разрешения на запуск скрипта:

chmod +x /opt/steamcmd/csgo.sh

Теперь необходимо создать сервис в systemd. Создаем запись со следующим содержимым: /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

Активируем запись, которую мы только что создали, командой systemctl daemon-reload. Теперь сервер CSGO можно запускать и останавливать командами systemctl start csgo и systemctl stop csgo.

Для автоматического обновления сервера требуется добавить следующую запись через crontab -e:

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

Команда будет запускаться каждый день в 04:00.

Поиск и устранение проблем

Если при подключении к screen возникают проблемы и вы получаете ошибку:

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

Для решения проблемы выполните следующую команду в текущей сессии:

script /dev/null

После этого подключение к screen сессии станет возможно.

Заключение

Если вы следовали этому руководству, то теперь у вас должен быть свой сервер CSGO, который обновляется автоматически.

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