Свой сервер CS2: установка через SteamCMD

Игровые серверы
Свой сервер CS2: установка через SteamCMD

Свой сервер CS2 — это тренировки команды без посторонних, свои конфиги и карты, праки и миксы в любое время. Аренда готового кс2 сервера у игровых хостингов стоит дороже обычного VPS, а гибкости даёт меньше: вы ограничены панелью и не можете поставить свои плагины или второй сервер на то же железо. В этом руководстве поднимем выделенный сервер Counter-Strike 2 на VPS с Ubuntu 24.04 через SteamCMD: скачаем app 730, получим GSLT-токен, запустим с параметром -dedicated и оформим автозапуск. Все команды проверены и готовы к копированию.

Требования: сколько ресурсов нужно серверу CS2

CS2 на движке Source 2 заметно тяжелее старого CS:GO — и по диску, и по процессору. Реальная картина такая:

  • Диск: файлы сервера занимают около 35 ГБ, плюс нужно место под систему и обновления — итого минимум 50–60 ГБ. NVMe обязателен: на медленном диске загрузка карт и валидация обновлений растягиваются на десятки минут;
  • RAM: один матч 5x5 потребляет 2–4 ГБ; вместе с системой закладывайте от 8 ГБ, чтобы не упереться в память при смене карт;
  • CPU: симуляция матча нагружает в основном 1–2 ядра, поэтому важна производительность каждого ядра, а не только их количество;
  • Сеть: 10 игроков — это единицы Мбит/с, канала 100 Мбит/с с безлимитным трафиком хватает с большим запасом.

Один сервер под миксы с друзьями нормально живёт на VPS с 8–16 ГБ RAM. Если же вы строите комьюнити-проект — несколько серверов (retake, execute, DM) на одной машине — считайте по 2–4 ГБ RAM и 1–2 ядра на каждый инстанс. Для таких сценариев у Cheap-Host есть тариф Ultra: 20 vCPU, 32 ГБ RAM и 192 ГБ NVMe за 1500 ₽/мес — на нём помещаются 4–6 инстансов CS2. Сравнить аппетиты разных игр можно в статье «Сколько ресурсов нужно игровому серверу».

И про локацию: для шутера пинг важнее всего. Если игроки из России — берите сервер в Москве: 5–30 мс против 40–80 мс до Европы. Как измерить задержку до площадки заранее, описано в статье «Как проверить пинг и скорость VPS».

Шаг 1. Подготовка Ubuntu 24.04 и установка SteamCMD

Подключаемся к VPS по SSH и обновляем систему. SteamCMD — 32-битное приложение, поэтому сначала добавляем архитектуру i386 и репозиторий multiverse:

sudo apt update && sudo apt upgrade -y
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install -y steamcmd lib32gcc-s1

При установке нужно принять лицензионное соглашение Steam. Дальше создаём отдельного пользователя — запускать игровой сервер под root не стоит:

sudo useradd -m -s /bin/bash cs2server
sudo su - cs2server

Шаг 2. Загрузка сервера CS2 (app_update 730)

Важный нюанс, на котором спотыкаются почти все: в отличие от CS:GO, у CS2 нет отдельного приложения выделенного сервера. Серверные файлы входят в состав основного app 730, и анонимный вход (login anonymous) их не скачает — нужен реальный Steam-аккаунт. Владеть игрой не обязательно (CS2 бесплатна), но разумно завести отдельный аккаунт без Steam Guard на почте или с настроенным мобильным подтверждением.

Запускаем SteamCMD и скачиваем сервер (замените ВАШ_ЛОГИН на логин Steam; при первом входе SteamCMD спросит пароль и код Steam Guard):

steamcmd +force_install_dir /home/cs2server/cs2 +login ВАШ_ЛОГИН +app_update 730 validate +quit

Загрузка ~35 ГБ на канале 100 Мбит/с занимает около часа — можно спокойно идти за кофе. Параметр validate проверяет целостность файлов; используйте его и при последующих обновлениях. Обратите внимание: +force_install_dir указывается до +login, иначе SteamCMD проигнорирует путь установки.

Шаг 3. GSLT-токен: пропуск в интернет

Без Game Server Login Token сервер CS2 запустится, но подключиться к нему извне будет нельзя. Токен выдаётся бесплатно:

  1. Откройте https://steamcommunity.com/dev/managegameservers под своим аккаунтом;
  2. В поле App ID укажите 730, в memo — любую пометку (например, «msk-mix-1»);
  3. Нажмите «Create» и скопируйте полученный токен.

Один токен — один запущенный сервер. Для нескольких инстансов создайте несколько токенов. Учтите, что аккаунт должен быть без ограничений (не limited): для этого на нём должна быть хотя бы одна покупка в Steam.

Шаг 4. Первый запуск с -dedicated

Серверный бинарник лежит в game/bin/linuxsteamrt64/. Запускаем классический competitive-сервер на de_dust2:

cd /home/cs2server/cs2/game/bin/linuxsteamrt64
./cs2 -dedicated -port 27015 +map de_dust2 +sv_setsteamaccount ВАШ_GSLT_ТОКЕН

Полезные параметры запуска и консольные переменные:

  • -dedicated — обязательный флаг запуска выделенного сервера;
  • -port 27015 — игровой порт (стандартный для Source-игр);
  • +game_type 0 +game_mode 1 — соревновательный режим; +game_mode 2 — Wingman, +game_type 1 +game_mode 2 — Deathmatch;
  • +sv_password "пароль" — закрыть сервер паролем для своих;
  • +exec server.cfg — подхватить свой конфиг из game/csgo/cfg/.

Когда в консоли появится строка о успешном входе с игровым токеном (logged on / VAC secure), сервер готов. Игроки подключаются из консоли клиента командой connect IP_сервера:27015.

Шаг 5. Файрвол и автозапуск через systemd

Открываем игровой порт по TCP и UDP (и SSH, чтобы не потерять доступ):

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

Чтобы сервер переживал перезагрузки VPS и сам поднимался после падений, оформим его как службу. Создаём файл /etc/systemd/system/cs2.service (от root):

[Unit]
Description=Counter-Strike 2 Dedicated Server
After=network.target

[Service]
User=cs2server
WorkingDirectory=/home/cs2server/cs2/game/bin/linuxsteamrt64
ExecStart=/home/cs2server/cs2/game/bin/linuxsteamrt64/cs2 -dedicated -port 27015 +map de_dust2 +sv_setsteamaccount ВАШ_GSLT_ТОКЕН
Restart=on-failure
RestartSec=15

[Install]
WantedBy=multi-user.target

Активируем:

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

Директивы Restart=on-failure и RestartSec=15 означают, что после падения сервер автоматически перезапустится через 15 секунд — вручную ничего поднимать не придётся.

Обновления и обслуживание

После каждого патча Valve версия сервера должна совпадать с клиентской, иначе игроки не подключатся. Обновление — та же команда, что и установка:

sudo systemctl stop cs2
sudo su - cs2server -c "steamcmd +force_install_dir /home/cs2server/cs2 +login ВАШ_ЛОГИН +app_update 730 validate +quit"
sudo systemctl start cs2

Ещё несколько практических советов:

  • Плагины. Экосистема Metamod: Source и CounterStrikeSharp даёт админ-меню, retake-режимы и статистику — аналог SourceMod из времён CS:GO;
  • RCON. Задайте +rcon_password в параметрах запуска, чтобы управлять сервером удалённо без захода в SSH;
  • Защита. Публичный игровой сервер — магнит для сканеров и флуда. Базовая DDoS-фильтрация L3/L4 на стороне хостинга обязательна, остальные меры описаны в статье «Защита игрового сервера от атак и гриферов»;
  • Мониторинг. Следите за htop во время матчей: если ядро, на котором крутится симуляция, стабильно упирается в 100 %, игроки почувствуют потерю тиков.

FAQ

Можно ли скачать сервер CS2 анонимным входом?

Нет. Сервер входит в app 730, и login anonymous его не загрузит — нужен реальный Steam-аккаунт. Игру покупать не требуется, CS2 бесплатна.

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

Матч 5x5 — это 2–4 ГБ RAM и 1–2 загруженных ядра, файлы занимают ~35 ГБ. Минимум для одного сервера — VPS с 8 ГБ RAM и NVMe; для нескольких инстансов — 16–32 ГБ.

Что такое GSLT и обязателен ли он?

Это токен, привязывающий сервер к вашему Steam-аккаунту. Без него к серверу нельзя подключиться из интернета. Создаётся бесплатно на странице управления игровыми серверами Steam для App ID 730; один токен — один инстанс.

Какой пинг будет у игроков из России?

С московского VPS — 5–30 мс, этого хватает для соревновательной игры. Из Европы (например, Германии) — уже 40–80 мс, в шутере такая задержка заметна.

Как обновлять сервер после патчей?

Остановить службу, выполнить app_update 730 validate в SteamCMD и запустить снова. Это стоит автоматизировать скриптом, который дергается после выхода обновлений.

Вывод

Поднять свой сервер CS2 через SteamCMD — час работы, большую часть которого занимает загрузка 35 ГБ: подготовка системы, app_update 730 под своим аккаунтом, GSLT-токен, запуск с -dedicated и systemd-служба. Дальше сервер живёт сам: праки, миксы и retake без посторонних и очередей. Если железа ещё нет — у Cheap-Host под один сервер хватит тарифа Pro (12 vCPU, 16 ГБ RAM, 128 ГБ NVMe) за 750 ₽/мес, а под комьюнити-проект с несколькими инстансами подойдёт Ultra за 1500 ₽/мес: 20 vCPU, 32 ГБ RAM, 192 ГБ NVMe, безлимитный трафик и московская локация с низким пингом для игроков из РФ. Сервер выдаётся за 45–60 секунд, а ресурсы при росте проекта расширяются без переустановки. Кстати, если ваша команда играет не только в CS2 — посмотрите разбор установки сервера Minecraft на VPS: обе игры спокойно уживаются на одной машине с 32 ГБ RAM.

Читайте также