Нам понадобится бокс с тарифом 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
Для подключения к серверу:
- Запускаем CS:GO и нажимаем «Играть»
- Вместо «Официальный подбор игр» выбираем «Список серверов сообществ»
- Переходим во вкладку «Избранное»
- Добавляем сервер с IP-адресом вашего бокса и подключаемся