Установка сервера CS:GO на Linux с помощью steamCMD

Для создания сервера Counter-Strike: Global Offensive понадобится сервер с минимум 2 ядрами, 2 гигабайтами оперативной памяти и 30 гигабайтами дискового пространства. Само программное обеспечение занимает больше 20 гигабайт. В этой статье пошагово разберём, как сделать такой сервер.

Доступы и начальные приготовления

Для начала необходимо заказать сервер с перечисленными параметрами. Рекомендуем сделать у нас: "Заказать VPS". В качестве операционной системы используем Debian (или Ubuntu). На дистрибутивах Linux игровые серверы будут работать быстрее, чем на Windows (в подавляющем большинстве случаев все серверы работают на Linux из за его стабильности и меньшем потреблении ресурсов, по сравнения с Windows).

После покупки сервера Вы получите доступы к серверу: логин (root) и пароль. Зайдите на сервер через ssh. Если работаете на windows, то используйте клиент PuTTY. Если вы работаете на дистрибутивах Linux, то откройте консоль и используйте команду "ssh root@ip_адрес_сервера", чтобы подключиться к серверу с логином root.

После получения доступа к серверу необходимо первым делом выполнить команду для обновления уже установленного программного обеспечения от лица root пользователя:
apt-get update
apt-get -y install htop
apt-get -y install screen
apt-get -y install nano
apt-get -y install sudo
apt-get -y install wget
После чего можно приступить к установке 32 разрадной библиотеки, без которой steamcmd не будет работать.
sudo apt install lib32stdc++6

Создание пользователя в Linux

На серверах крайне не рекомендуют запускать игровые (и иные) приложения от лица суперпользователя (root). Потому что при появлении уязвимости в приложении, которое запущено из-под root пользователя, злоумышленник может получить полный доступ к системе. Лучше создать пользователя с меньшими правами и запускать игровой сервер из-под него. Для этого зайдите на сервер через консоль, в учётную запись root. И создайте нового пользователя командой:
sudo useradd -m steam
В нашем случае пользователь будет иметь имя "steam". Ключ "-m" в команде означает, что будет создан домашний каталог /home/steam/. Теперь введём команду, чтобы перейти из сеанса суперпользователя в пользователя "steam":
su - steam
Перейдём к загрузке нужного ПО.
Рекомендуем ознакомиться со статьёй "Загрузка файлов на сервер с помощью FileZilla", в которой описан процесс работы с программой, которая может загрузить файл с вашего компьютера на сервер. А так же с одной из статей, описывающих редактор файлов на сервере: "Средство разработки: Notepad++" или "Средство разработки: Atom"

Загрузка сервера CS:GO на Linux через steamCMD

Создадим директории для загрузки программного обеспечения в домашней папке пользователя "steam", то есть в /home/steam/
mkdir ~/steamcmd && mkdir ~/steamcmd/csgo
Войдём в первую созданную директорию:
cd ~/steamcmd
Скачиваем в эту директорию архив с steamCMD, используя команду:
wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
Распакуем скачанный архив командой:
tar xvfz *.tar.gz
Теперь создадим небольшой скрипт, который будет автоматически обновлять сервер игры. Назовём его "updateCSGO.sh". Для создания этого скрипта можно выполнить такую команду:
echo "STEAMEXE=steamcmd ./steamcmd.sh +login anonymous +force_install_dir /home/steam/steamcmd/csgo +app_update 740 validate +quit" > updateCSGO.sh
Теперь необходимо разрешить выполнение этого файла. Делается это такой командой:
chmod +x updateCSGO.sh
Всё готово. Теперь попробуем запустить наш скрипт. Он загрузит и установит сервер CS:GO. Весь процесс займёт примерно 20 минут.
./updateCSGO.sh

Создание токена для CS:GO

По текущим правилам платформы Steam невозможно создать сервер CS:GO без специального пароля-токена. Для этого необходимо следовать инструкции на этой странице: steamcommunity.com/dev/managegameservers. Создание токена возможно только на аккаунте с подтверждённым номером телефона. Подтвердить свой номер телефона можно через SMS код в настройках профиля Steam.

Запуск сервера CS:GO

Сделаем предварительную небольшую настройку, которая поможет серверу загрузить steamclient.so. Для этого выполним следующие команды:
cd /home/steam/.steam/
mkdir sdk32
ln -s /home/steam/steamcmd/linux32/steamclient.so /home/steam/.steam/sdk32/
Теперь перейдём в папку с сервером:
cd /home/steam/steamcmd/csgo
Создадим скрипт для запуска классического сервера в фоновом режиме. Назовём файл скрипта для запуска сервера "start.sh". Создать этот скрипт можно следующей командой:
printf '#!/bin/sh \n./srcds_run srcds -game csgo -console -hostport 27015 -usercon +sv_setsteamaccount QDPNZR9LX3XCRJ3JKJSJ -net_port_try 1 +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2 > /dev/null 2>&1 &' > start.sh
В этой команде после ключа sv_setsteamaccount вместо "QDPNZR9LX3XCRJ3JKJSJ" введите свой токен, который получили в предыдущем параграфе. Иначе сервер выдаст ошибку на стадии проверки токена и не запустится.

Обратите внимание на ключи в команде "+game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2". Вы можете убрать и совсем или изменить их значение. В этой статье, в конце, будет рашифровка некоторых ключей. В зависимости от значений game_type и game_mode меняется и стиль матча на сервере:
  • Классический режим игры - game_type 0, game_mode 0
  • Соревновательный режим игры - game_type 0, game_mode 1
  • Гонка вооружений - game_type 1, game_mode 0
  • Уничтожение - game_type 1, game_mode 1
  • Deathmatch - game_type 1, game_mode 2
После создания файла "start.sh" необходимо дать ему права для запуска, используя команду:
chmod +x start.sh
Всё готово. Можно запускать сервер. Для этого выполним команду:
./start.sh
В будущем можно будет использовать эту команду для запуска игрового сервера в фоновом режиме:
cd /home/steam/steamcmd/csgo && ./start.sh
Но не забудьте, что запускать сервер стоит из-под пользователя "steam", а не из-под "root" . После запуска подождите пару минут, чтобы сервер смог соединиться с сервисом Steam. Если не подождать это время, то при подключении к серверу из клиента игры может возникать ошибка:
Failed to connect to games server. this games server restricts client to connect from internal local area network only
Чтобы остановить сервер необходимо убить процесс "srcds_linux". В консоли введите команду "top", появится список запущенных на сервере процессов. В первой колонке, под название "PID" будет стоят уникальный номер процесса. Необходимо найти процесс с значением в последнем столбце "COMMAND" равным "srcds_linux" и убить процесс, используя команду:
kill 1234
Где вместо 1234 подставьте PID процесса.

Конфигурация сервера CS:GO через файл server.cfg

Создадим файл конфигурации сервер с названием "server.cfg" в папке "/home/steam/steamcmd/csgo/csgo/cfg/". Для этого выполним команду:
nano /home/steam/steamcmd/csgo/csgo/cfg/server.cfg
Теперь откроем файл в текстовом редакторе Nano и вставим в него следующее содержание:
sv_setsteamaccount "261477B60DBDB63AF2B91F3401C2CAB4"
hostname "MouseDC.ru - server CS:GO" //название вашего сервера
host_name_store 1
host_info_show 1
host_players_show 2
sv_lan 0
sv_region 3
sv_tags "rank, ffa, msk, spb, ekb, nsk, dd2, dust2, ru, rus"
motdfile 1

// RCON
rcon_password "w7WMEbFXI8bEbVK0ZPbIqQ6d7" // пароль команды rcon, после которой можно выполнять серверные команды

// Баланс
mp_autoteambalance 1 // автоматический баланс игроков по командам

// Чат
sv_alltalk 1 // 1 - разрешаем разговоры между обеими командами. 0 - только свои
sv_deadtalk 0 // 1 - разрешаем разговоры живых и мертвых
sv_ignoregrenaderadio 1 // игнорируем сообщения броска гранаты
sv_spec_hear 1 // наблюдатели слышат других

// Действие в конце матча
mp_endmatch_votenextmap 0 // 0 - отключаем стандартное голосование на смену карты в конце матча
mp_endmatch_votenextleveltime 15 // время на голосование за новую карту
mp_match_end_changelevel 1 // 1 - в конце матча смена карты
mp_endmatch_votenextmap_keepcurrent 0 // 1 - убрать отыгранную карту из голосования

// Игровые настройки сервера
mp_forcecamera 1 // разрешать ли смотреть за игроками другой команды после смерти? 0-да 2-нет 
mp_freezetime 5 // задержка до начала раунда (в секундах) 
mp_startmoney 800 // деньги, с которыми игрок начинает играть после присоединения к игре 
mp_maxmoney 16000 // максимальное количество денег
mp_timelimit 30 // время до конца карты в минутах
mp_buytime 0.25 // изменить время закупки (в минутах) (по умолчанию 15 секунд - 0.25) 
mp_c4timer "35" // изменить время, на которое закладывается бомба на de_ картах (в секундах) 

// Рейты сервера
sv_maxrate 128000 // максимальное количество байт за одну секунду времени, которые сервер посылает клиенту
sv_minrate 128000 // минимальное количество байт за одну секунду времени, которые сервер посылает клиенту
sv_minupdaterate 20 // минимальная частота отсылки обновлений от сервера к клиенту. Влияет на фпс и загрузку сервера. Если сервер отошлёт клиенту, к примеру, 40 обновлений за 1 секунду, у клиента фпс будет 40 либо ниже.

// Огонь по своим
mp_friendlyfire 1 // включен ли friendlyfire (атака по своим) 1-да, 0-нет 

// Управление ботами
bot_quota 0 // установить минимальное количество ботов на сервере
bot_difficulty 2 // сложность бота: 0 - Легкий, 1 - Нормальный, 2 – Тяжелый, 3 - Профессионал.
bot_chatter "off" // как часто бот использует радиокоманды
bot_join_after_player 1 // бот ждет, когда человек подключится и только тогда подключается сам.

// Бэкапы (отключены, чтобы не занимать место на диске)
mp_backup_round_file 0
mp_backup_round_file_last 0
mp_backup_round_file_pattern 0
Обратите внимание, что первой строкой в файле конфигураций стоит параметр sv_setsteamaccount. Его значение надо заменить на ваш токен.

Устранение неисправностей

Большое количество ошибок во время установки сервера CS:GO может быть связано с тем, что установка идёт на 64 разрядной системе без поддержки 32 разрядных библиотек. Для этого достаточно просто установить эти библиотеки. Если установка была на Debian, то введите команду:
sudo apt-get install ia32-libs
Если используется CentOS, то введите команду:
sudo yum install glibc.i686 libstdc++.i686
Помимо проблем с отсутствие 32 битных библиотек, возникают проблемы с файлами srcds_run и srcds_linux. В таком случае этим файлам необходимо установить права на выполнения с помощью команд:
sudo chmod +x /opt/csgo_server/srcds_linux
И
sudo chmod +x /opt/csgo_server/srcds_run
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Была ли эта статья полезна? Есть вопрос?
Cмотрите другие статьи: