База знаний

Часто задаваемые вопросы, на которые мы уже ответили

Установка сервера CS:GO

Нам понадобится бокс с тарифом XL и 48 ГБ дискового пространства. Сервер CS:GO при скачивании займет минимум 29 ГБ, но также нам надо еще место для самой операционной системы, да еще и останется место для карт и модов.

В статье установим сервер на бокс с Ubuntu 20.04.

Подготовка и установка SteamCMD

Подключаемся к боксу по SSH с данными, которые вы получили на почту после создания бокса. Устанавливаем на сервер нужный пакет для запуска SteamCMD:

apt install lib32gcc1

Создаем нового пользователя: от его имени уже и будет запускаться и работать сервер. Делаем это так:

sudo useradd -r -m -U -d /home/steam -s /bin/bash steam

Этот пользователь будет системным и без пароля: подключиться к боксу по SSH такой пользователь не сможет, скомпрометировать его не получится — это нам и нужно.

Переключаемся на него:

su steam

Создадим отдельную директорию для установки SteamCMD и игры:

mkdir ~/Steam && cd ~/Steam

Скачиваем SteamCMD для Linux:

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

Распаковываем архив:

tar -xvzf steamcmd_linux.tar.gz

Запускаем SteamCMD:

./steamcmd.sh

После этого произойдет обновление и установка SteamCMD.

Установка CS:GO

После запуска SteamCMD выбираем директорию для установки игры:

force_install_dir ./cs_go/

Далее нужно войти в аккаунт Steam, но для установки можно авторизоваться под анонимным пользователем:

login anonymous

Устанавливаем игровой сервер (у CS:GO при установке код игры 740):

app_update 740 validate

После установки выходим из SteamCMD:

quit

Получение GSLT токена

Для игры по интернету и запуска сервера нам нужно создать GSLT токен. Создать его можно на странице в Steam.

Заходим в свой аккаунт Steam, вводим код игры 730 (он отличается от используемого при установке), а также название ключа, чтобы вы могли различать их.

Запуск сервера в tmux

В долгосрочной перспективе лучше выбрать вариант с запуском сервера с помощью systemd. Если же нужно протестировать работу сервера или немного поиграть с друзьями, то можно запустить игровой сервер в tmux.

Все, что в них запущено, будет работать до тех пор, пока не будет завершена tmux-сессия или не выключен бокс. От сессии можно будет отключиться, как и от самого бокса: сервер при этом будет работать.

Создаем новую сессию:

tmux new

Она будет создана пользователем steam, поэтому в дальнейшем нужно будет переходить в него для подключения к сессии.

Далее нам нужно найти скрипт srcds_run, который используется для запуска. В данном случае он находится в директории cs_go, в которую мы устанавливали сервер:

cd cs_go

Запускаем сервер с картой de_dust2:

./srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount GSLT_TOKEN -net_port_try 1

Вместо GSLT_TOKEN укажите свой токен, который вы получили в Steam. Сервер после этого будет запущен, а также будет установлена карта. Также можно проверить статус сервера командой status, установить другую карту можно командой map [название_карты].

Отключиться от сессии tmux можно с помощью сочетания клавиш CTRL + B, затем D.

Запуск сервера в качестве сервиса

Для более стабильной работы и нашего удобства, мы можем добавить наш сервер CS:GO в качестве сервиса systemd.

Systemd — это система управления службами в Linux. С ее помощью можем настроить автоматический запуск сервера вместе с боксом, перезапуск в случае, если что-то пойдет не так.

Установка утилиты rcon

Для начала установим утилиту для работы с RCON. Выбор пал на одну из утилит на Github: https://github.com/n0la/rcon

Выходим из пользователя steam в пользователя root. Проверить кто вы сейчас можно с помощью команды whoami.

Установим необходимые пакеты для rcon:

apt install build-essential cmake check libbsd-dev libglib2.0-dev

Перейдем в директорию пользователя steam, скопируем проект с помощью git и перейдем в него:

cd /home/steam
git clone https://github.com/n0la/rcon
cd rcon

Далее приступаем к установке утилиты по инструкции из Github:

mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr
make
sudo make install

Проверяем, что утилита работает:

rcon -h

Добавление юнита systemd

Создадим файл нашего сервиса и перейдем к его редактированию с помощью vim или nano:

vim /etc/systemd/system/csgo.service

Заполним файл следующим содержимым:

[Unit]
Description=CSGO Server
After=network-online.target

[Service]
User=steam
WorkingDirectory=/home/steam/Steam/cs_go/

# Replace my_token_here, my_password_here with your own values
# MEMORY_LIMIT - max ram usage in megabytes
Environment="GSLT_TOKEN=my_token_here" "RCON_PASSWORD=my_password_here" "MEMORY_LIMIT=2560"

ExecStart=/home/steam/Steam/cs_go/srcds_run -game csgo -console -usercon +game_type 0 +game_mode 0 +mapgroup mg_active +map de_dust2 +sv_memlimit ${MEMORY_LIMIT} +sv_setsteamaccount ${GSLT_TOKEN} -net_port_try 1 +rcon_password "${RCON_PASSWORD}"
ExecStop=/usr/bin/rcon -H 127.0.1.1 -p 27015 -P ${RCON_PASSWORD} "quit"
Restart=always

[Install]
WantedBy=multi-user.target

В данном тексте вам нужно будет заменить два значения: my_token_here на свой GSLT токен, my_password_here на пароль, который будет использоваться для подключения к RCON. Не используйте для RCON простой или популярный пароль, придумайте посложнее.

При запуске игры параметр sv_memlimit (лимит оперативной памяти) будет указан со значением 2560 МБ. При достижении игровым сервером данного лимита и после завершения матча, сервер автоматически будет перезапущен. Таким образом мы оставляем некоторое количество оперативной памяти в запасе до завершения матча, а также оставляем память для работы самого бокса.

Сохраняем и закрываем файл, после чего сообщаем системе, что мы добавили новый сервис:

sudo systemctl daemon-reload

Запускаем сервер, проверяем его статус и включаем автозапуск:

sudo service csgo start
sudo service csgo status
sudo systemctl enable csgo

После выполнения второй команды вы должны заметить в ее выводе надпись «active (running)». Это значит, что сервер запущен, всё получилось.

Для управления сервером вы можете подключиться к RCON следующей командой:

rcon -H 127.0.1.1 -p 27015 -P my_password_here

Подключение к серверу CS:GO

Для подключения к серверу:

  1. Запускаем CS:GO и нажимаем «Играть»
  2. Вместо «Официальный подбор игр» выбираем «Список серверов сообществ»
  3. Переходим во вкладку «Избранное»
  4. Добавляем сервер с IP-адресом вашего бокса и подключаемся

Была ли эта инструкция полезной?