MAATRIX GAMES / Блог / Как поднять сервер Counter-Strike 2: пошаговая инструкция

Как поднять сервер Counter-Strike 2: пошаговая инструкция

MAATRIX GAMES

Свой сервер CS2 нужен либо чтобы гонять с друзьями без рандомных тиммейтов из мэтчмейкинга, либо чтобы поднять коммьюнити-проект с нормальным античитом и своими правилами. Разворачивается всё за 20-30 минут, если не наступить на пару типовых граблей — а наступают на них почти все новички: забытый GSLT-токен, не тот app id для сервера и невнятная ошибка при первом запуске cs2.sh. Разберём по шагам, с командами, которые реально работают в 2026 году.

Системные требования

CS2 на движке Source 2 заметно легче того же Rust или ARK — сервер не рендерит картинку, вся нагрузка идёт на симуляцию физики, хитбоксов и сетевой код.

  • RAM: от 2 ГБ на пустой сервер с одной картой. Комфортный минимум для 10-слотового паблика — 3-4 ГБ, с запасом под ОС и логи.
  • CPU: важна частота одного ядра, а не их количество — Source 2 плохо параллелит игровой поток. Современный VPS с 2-4 виртуальными ядрами от 3 ГГц закрывает вопрос с головой.
  • Диск: SSD/NVMe желательно, но не критично так жёстко, как для игр с процедурной генерацией — карты CS2 статичные, лишней записи на диск немного.
  • Место на диске: от 45-50 ГБ под клиентские файлы сервера (сама игра весит по историческим меркам немало, особенно с учётом Workshop-карт, которые вы наверняка захотите добавить).
  • ОС: Ubuntu 22.04/24.04 LTS — под неё больше готовых зависимостей и меньше сюрпризов с библиотеками SteamCMD.

Если планируете турнирный сервер под 128-тик или несколько инстансов на одной машине — закладывайте RAM с запасом от 6-8 ГБ и следите за CPU steal, если VPS виртуализован жёстко: для шутера с точным сетевым кодом просадки по CPU ощущаются игроками сразу, в отличие от той же песочницы.

Установка сервера через SteamCMD

Здесь есть нюанс, который путает даже тех, кто раньше ставил CS:GO: у отдельного дедик-билда CS:GO был свой app id — 740, а у CS2 отдельного дедик-билда нет. Valve объединила клиент и серверные файлы под одним app id 730 — тем же, что у самой игры. Скачивается всё через анонимный логин, покупать ничего не нужно, CS2 free-to-play.

Ставим зависимости и создаём отдельного пользователя — не запускайте игровые сервисы под root, это касается вообще любого дедика:

sudo apt update && sudo apt install -y lib32gcc-s1 curl unzip
sudo useradd -m -s /bin/bash cs2server
sudo su - cs2server

Ставим SteamCMD:

mkdir -p ~/steamcmd && cd ~/steamcmd
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" -o steamcmd.tar.gz
tar -xvzf steamcmd.tar.gz

И качаем сам сервер CS2:

./steamcmd.sh +force_install_dir /home/cs2server/cs2 +login anonymous +app_update 730 validate +quit

Флаг validate в конце обязателен — сверяет контрольные суммы файлов. Без него после нестабильного соединения можно получить битый билд, который падает при старте без внятной ошибки в консоли. Загрузка — порядка 45-50 ГБ, на среднем канале уйдёт от получаса до пары часов.

Обновление сервера — та же команда без validate, SteamCMD докачает только разницу:

./steamcmd.sh +force_install_dir /home/cs2server/cs2 +login anonymous +app_update 730 +quit

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

Поднять сервер Counter-Strike 2 за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Конфигурация server.cfg

Внутри установленного сервера файл конфигурации лежит по пути game/csgo/cfg/server.cfg — да, папка называется именно csgo, это наследие движка, которое Valve не переименовала даже в CS2, и это нормально, а не баг установки.

Создаём или редактируем файл:

nano /home/cs2server/cs2/game/csgo/cfg/server.cfg

Минимальный рабочий набор:

hostname "Мой CS2 сервер"
sv_password ""
rcon_password "СЮДА_СЛОЖНЫЙ_ПАРОЛЬ"
sv_lan 0
sv_setsteamaccount "ВАШ_GSLT_ТОКЕН"
mp_maxrounds 24
mp_autoteambalance 1
mp_autokick 0
sv_cheats 0

Отдельно про GSLT (Game Server Login Token) — это то, что чаще всего забывают новички, и сервер потом либо не виден нормально, либо получает урезанный лимит подключений и отваливается через 30-60 минут работы. Токен получаете бесплатно на странице Steam для владельцев серверов (steamcommunity.com/dev/managegameservers), привязываете к app id 730, и прописываете значение в sv_setsteamaccount.

Режим игры задаётся через game_type/game_mode — пара значений, унаследованная ещё от CS:GO и в целом рабочая в CS2, но перед продакшен-запуском стоит свериться с актуальной вики Valve, если планируете нестандартный режим:

Режимgame_typegame_mode
Competitive01
Casual (Незаряженное)00
Wingman (2х2)02
Deathmatch12
Arms Race10

Задаются либо строкой в server.cfg (game_type 0 / game_mode 1), либо параметром запуска через +game_type/+game_mode — второй вариант удобнее, если один сервер периодически переключаете между режимами скриптом.

Запуск через cs2.sh

Стартует сервер обёрточным скриптом cs2.sh в корне установки, который сам разбирается с путями до бинарника Source 2. Минимальный рабочий запуск:

cd /home/cs2server/cs2
./cs2.sh -dedicated -console -usercon \
  -port 27015 \
  +map de_dust2 \
  +game_type 0 +game_mode 1 \
  +exec server.cfg

Разберём ключевые флаги:

  • -dedicated — запуск в режиме выделенного сервера, без клиентского окна.
  • -usercon — включает удалённый RCON поверх обычного игрового порта (без него rcon_password из конфига не даст подключиться извне).
  • -port — основной UDP/TCP-порт, по умолчанию 27015. Если поднимаете несколько серверов на одном IP — раздавайте с шагом минимум 5-10, у CS2 рядом с основным портом резервируются служебные.
  • +map — стартовая карта. Ротацию карт после первого запуска настраивают отдельно через mapcyclefile в конфиге или Matchmaking-подобные конфиги для competitive.
  • +exec server.cfg — подтягивает конфиг, который мы правили на прошлом шаге. Без этой строчки сервер стартует с настройками по умолчанию, и половина ваших правок в server.cfg просто не применится.

Если хочется GOTV (демо-трансляцию матча вживую) — добавьте +tv_enable 1 +tv_port 27020, это отдельный UDP-порт, который тоже придётся пробросить.

Первый запуск стоит сделать вручную в текущей сессии SSH (или в screen/tmux), чтобы увидеть ошибки в консоли живьём, а не гадать по обрывочным логам systemd. Если сервер падает сразу после старта без сообщения — почти всегда это либо неверный GSLT (или его отсутствие при sv_lan 0), либо занятый порт (ss -ulnp | grep 27015), либо битый билд после прерванной загрузки — переустановите с validate.

Подключение и проверка

Из клиента игры: открываем консоль разработчика (нужно включить её в настройках игры — Options → Game → Enable Developer Console) и вводим:

connect ВАШ_IP:27015

Если задан пароль сервера — Steam спросит его отдельным окном, либо можно сразу передать его в команде:

connect ВАШ_IP:27015; password СЮДА_ПАРОЛЬ

В консоли самого сервера полезные команды для первичной проверки:

  • status — список подключённых игроков и текущее состояние сервера.
  • changelevel de_mirage — смена карты без перезапуска процесса.
  • sv_cheats 1 — только для тестового прогона механик, не забудьте вернуть в 0 перед тем, как пускать реальных игроков (иначе часть статистики и достижений у них просто не засчитается).

Проброс портов и файрвол

CS2 использует один основной порт для игрового трафика и RCON вместе (в отличие, например, от Rust, где под RCON выделен отдельный порт), плюс опциональный порт GOTV:

ПортПротоколНазначение
27015UDP/TCPИгровой трафик + RCON (через -usercon)
27020UDPGOTV / SourceTV (если включено)

Если VPS сидит на публичном IP без NAT — обычно достаточно открыть порты в файрволе:

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

Если хостинг держит инстанс за NAT — нужен проброс на уровне панели управления или роутера, одного ufw тут не хватит: пакеты просто не дойдут до внутреннего адреса машины. Проверить, что порт реально виден снаружи, можно с другой машины: nmap -sU -p 27015 ВАШ_IP, либо любым онлайн-сканером.

RCON-пароль лучше не светить и ограничивать доступ по IP там, где это возможно на уровне файрвола — брутфорс RCON на популярных играх это фоновый шум интернета, а не редкость.

Автозапуск через systemd

Ручной запуск умирает вместе с SSH-сессией и не поднимается сам после ребута хоста. Решение — systemd-юнит, аналогично тому, как это делается для Rust или Garry's Mod.

Создаём /etc/systemd/system/cs2server.service:

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

[Service]
User=cs2server
WorkingDirectory=/home/cs2server/cs2
ExecStart=/home/cs2server/cs2/cs2.sh -dedicated -console -usercon -port 27015 +map de_dust2 +game_type 0 +game_mode 1 +exec server.cfg
Restart=on-failure
RestartSec=10
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target

Активация:

sudo systemctl daemon-reload
sudo systemctl enable cs2server
sudo systemctl start cs2server

Логи смотрим через journalctl -u cs2server -f — так же удобно, как со всеми остальными Source-серверами. Для обновления после патчей Valve пишут обычно отдельный скрипт: остановить юнит, прогнать steamcmd с app_update 730, запустить юнит обратно — и вешают его либо на ручной запуск после анонса патча, либо в cron с проверкой версии.

Поднять сервер Counter-Strike 2 за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

Почему сервер не виден в браузере серверов или в списке друзей?

Чаще всего — не задан или неверный GSLT-токен в sv_setsteamaccount, либо sv_lan оставлен в 1 (это режим локальной сети без Steam-авторизации, для публичного сервера нужен 0).

Нужен ли отдельный app id для дедик-сервера, как раньше у CS:GO?

Нет, у CS2 клиент и серверные файлы качаются под одним app id 730 — отдельного 740-подобного билда больше не существует.

Можно ли поставить CS2-сервер на Windows VPS?

Технически Valve выпускает и Windows-сборку, но подавляющее большинство готовых скриптов автозапуска, мониторинга и панелей управления написаны под Linux — плюс он стабильно легче по потреблению ресурсов на длительной работе.

Сколько игроков реально тянет минимальный сервер на 2 ГБ RAM?

Ориентировочно хватает на 10-слотовый казуальный сервер, для competitive/premier-подобных матчей с полной статистикой лучше закладывать 3-4 ГБ и следить за нагрузкой по status и логам, а не гадать заранее.

Как настроить кастомные карты из Workshop?

Через host_workshop_collection <ID коллекции> в конфиге или параметре запуска — сервер сам скачает карты коллекции при старте, но учитывайте это в расчёте места на диске из раздела про системные требования.