TürkiyeVPS

Как поднять сервер CS2: выделенный сервер Counter-Strike 2 на Linux через SteamCMD

Установите сервер Counter-Strike 2 для друзей или своего сообщества на Ubuntu 24.04: SteamCMD, серверные файлы, Game Server Login Token, server.cfg, игровые режимы, файрвол, служба systemd и автообновление.

6 мин чтения

Когда у вас есть собственный сервер Counter-Strike 2, вы сами решаете, какие будут настройки матча, ротация карт и кто сможет зайти. Для приватных игр с друзьями, тренировок команды или сервера сообщества надёжнее всего запускать его на Linux-сервере, который работает круглосуточно. В этом руководстве мы установим выделенный сервер CS2 на Ubuntu 24.04 с помощью официальных инструментов Valve.

Коротко: вы анонимно скачиваете серверные файлы CS2 (App ID 730) через SteamCMD, получаете в Steam токен Game Server Login Token и запускаете серверную программу cs2 с нужными параметрами игрового режима. Серверные файлы занимают много места — выделите не менее 60 ГБ свободного диска.

Сколько нужно ресурсов?

  • Диск: серверные файлы CS2 занимают десятки гигабайт (на момент написания — более 35 ГБ) и растут с каждым обновлением. Во время обновления нужно ещё и временное место. Выделите минимум 60 ГБ, а лучше 80 ГБ и больше. NVMe-диск ускоряет загрузку карт.
  • RAM: для соревновательного сервера или deathmatch на 10–12 игроков 4 ГБ — комфортная отправная точка. Если используете плагины, может понадобиться больше.
  • Процессор: сервер CS2 опирается на производительность одного ядра при расчёте тиков и очень чувствителен к задержкам. На сервере с разделяемым процессором в часы пик возможны подвисания; выбирайте сервер с выделенным процессором.

1. Подготовьте систему

Подключитесь к серверу по SSH. SteamCMD нужны 32-битные библиотеки, поэтому включаем архитектуру i386 и устанавливаем необходимые пакеты:

sudo dpkg --add-architecture i386
sudo apt update && sudo apt upgrade -y
sudo apt install -y lib32gcc-s1 lib32stdc++6 curl tmux

Не запускайте сервер от root. Создайте отдельного пользователя:

sudo adduser --disabled-password --gecos "" cs2

2. Установите SteamCMD

SteamCMD — это консольная утилита Valve для загрузки и обновления серверных файлов. Переключитесь на пользователя cs2 и скачайте официальный пакет:

sudo -iu cs2
mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -

3. Скачайте серверные файлы CS2

Серверные файлы CS2 используют тот же App ID, что и сама игра (730), и скачиваются с анонимным входом:

~/steamcmd/steamcmd.sh +force_install_dir /home/cs2/cs2-ds +login anonymous +app_update 730 validate +quit

В зависимости от скорости соединения загрузка может занять больше нескольких минут. По завершении вы должны увидеть строку Success! App '730' fully installed. Если возникла ошибка, обычно достаточно запустить команду ещё раз: SteamCMD продолжит с того места, где остановился.

Создайте ссылку на библиотеку, которая нужна серверу для подключения к Steam, в том месте, где он её ищет. Если пропустить этот шаг, при запуске сервер может выдать ошибку steamclient.so:

mkdir -p ~/.steam/sdk64
ln -sf ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so

4. Получите Game Server Login Token (GSLT)

Чтобы сервер был виден в интернете и игроки могли к нему подключиться, нужен GSLT. Откройте в браузере steamcommunity.com/dev/managegameservers под своим аккаунтом Steam, укажите App ID 730, добавьте заметку и создайте токен. Для доступа к этой странице Steam проверяет ряд условий (например, аккаунт не должен быть ограниченным и к нему должен быть привязан номер телефона). Скопируйте сгенерированный длинный код — на следующих шагах вы подставите его вместо TOKEN. Никому не передавайте токен.

5. Создайте файл server.cfg

Настройки сервера хранятся в файле game/csgo/cfg/server.cfg:

nano ~/cs2-ds/game/csgo/cfg/server.cfg

Базовая конфигурация:

hostname "Benim CS2 Sunucum"
sv_password ""
rcon_password "GucluBirRconSifresi"
sv_lan 0
sv_cheats 0
mp_autoteambalance 1

Если указать пароль в sv_password, сервер будет доступен только тем, кто его знает, — это удобно для приватных матчей. rcon_password позволяет удалённо управлять сервером прямо из игры; обязательно выберите надёжный пароль.

6. Откройте порты в файрволе

По умолчанию сервер CS2 использует порт 27015. Игровой трафик идёт по UDP, а RCON — по TCP. Вернитесь к своему пользователю (exit) и выполните:

sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw enable

7. Запустите сервер

Первый запуск проведём в сессии tmux:

sudo -iu cs2
tmux new -s cs2
~/cs2-ds/game/bin/linuxsteamrt64/cs2 -dedicated -usercon -port 27015 +game_type 0 +game_mode 1 +map de_dust2 +sv_setsteamaccount TOKEN +exec server.cfg

Замените TOKEN кодом, полученным на шаге 4. В консоли должны появиться строки о загрузке карты и подключении к Steam. Нажмите Ctrl+B, затем D, чтобы отключиться от сессии, — сервер продолжит работать.

Чтобы подключиться к игре, откройте в CS2 консоль разработчика (включается в разделе «Настройки > Игра») и введите connect SUNUCU_IP:27015, подставив IP-адрес сервера. Если вы задали пароль, сначала введите password SIFRE.

Игровые режимы

Игровой режим задаётся сочетанием параметров game_type и game_mode:

Режим game_type game_mode
Обычный (Casual) 0 0
Соревновательный (Competitive) 0 1
Напарники (Wingman) 0 2
Гонка вооружений (Arms Race) 1 0
Deathmatch 1 2

Например, для сервера deathmatch используйте в команде запуска +game_type 1 +game_mode 2.

8. Служба systemd и автоматическое обновление

Когда Valve обновляет CS2, игроки не могут подключиться к серверам со старой версией. Поэтому практичное решение — обновлять сервер перед каждым запуском. Сначала остановите сервер в tmux (tmux attach -t cs2, затем введите quit), а потом под своим пользователем создайте файл службы:

sudo nano /etc/systemd/system/cs2.service
[Unit]
Description=Counter-Strike 2 sunucusu
After=network-online.target
Wants=network-online.target

[Service]
User=cs2
WorkingDirectory=/home/cs2/cs2-ds
ExecStartPre=/home/cs2/steamcmd/steamcmd.sh +force_install_dir /home/cs2/cs2-ds +login anonymous +app_update 730 +quit
ExecStart=/home/cs2/cs2-ds/game/bin/linuxsteamrt64/cs2 -dedicated -usercon -port 27015 +game_type 0 +game_mode 1 +map de_dust2 +sv_setsteamaccount TOKEN +exec server.cfg
Restart=on-failure
RestartSec=15
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

TimeoutStartSec=0 не даёт systemd прервать запуск во время долгих обновлений. Включите службу:

sudo systemctl daemon-reload
sudo systemctl enable --now cs2
sudo journalctl -u cs2 -f

Когда выходит обновление, команда sudo systemctl restart cs2 сначала обновит сервер, а затем перезапустит его. При желании эту команду можно запускать каждую ночь через cron в час, когда игроков мало.

Коротко о плагинах

Для админ-меню, статистики или собственных режимов используются созданные сообществом платформы плагинов, такие как Metamod:Source и CounterStrikeSharp. Поскольку их установка часто меняется вместе с обновлениями игры, следуйте их официальной документации, а после крупного обновления CS2 дождитесь выхода совместимых версий плагинов.

Игровые серверы TürkiyeVPS для CS2

Серверу CS2 нужны и место на диске, и высокая производительность одного ядра. Наши тарифы игровых серверов включают выделенные vCPU на Intel Core i5-10400F, гарантированную RAM, диск на 60–100 ГБ, собственный IPv4-адрес и root-доступ; для CS2 комфортным стартом станет тариф с 4 ГБ RAM и диском на 80 ГБ. Серверы находятся в Стамбуле, поэтому для игроков из Турции задержка низкая. Из-за небольшого объёма диска наши стандартные тарифы VPS для CS2 не подходят. Для других игр загляните в наши руководства по установке сервера FiveM и по установке сервера Minecraft.

Часто задаваемые вопросы

Бесплатно ли поднять сервер CS2?

Серверное ПО CS2 и GSLT бесплатны. Вы платите только за машину, на которой работает сервер. Можно запустить сервер и на своём компьютере, но когда компьютер выключается, выключается и сервер.

Сколько места на диске нужно серверу CS2?

Серверные файлы занимают десятки гигабайт и растут с обновлениями. С учётом запаса под обновления выделите минимум 60 ГБ, а лучше 80 ГБ и больше.

Мой сервер не виден в списке или игроки не могут подключиться. Что делать?

Сначала проверьте командой sudo ufw status, что UDP-порт 27015 открыт. Затем убедитесь, что в команде запуска указан действующий GSLT и задан параметр sv_lan 0. Наконец, снова выполните команду app_update 730, чтобы убедиться, что сервер обновлён.

Можно ли сделать сервер со 128 тиками?

Вместо прежних настроек тикрейта CS2 использует систему под названием «sub-tick»; выбирать тикрейт, как в CS:GO, не нужно. На игровой опыт по-настоящему влияют стабильность процессора сервера и задержка до игроков.