Как поднять сервер CS2 на VPS: железо, тикрейт, сеть и выбор тарифа
Свой сервер CS2 обычно начинается с простой мысли: «хочу играть с друзьями на своих правилах, без случайных людей и с нормальным пингом». Потом выясняется, что игра весит десятки гигабайт, плагины ломаются после каждого патча Valve, а «быстрый» сервер может подтормаживать из-за одного перегруженного ядра. Разберём узкий сценарий: дедик CS2 на VPS под 10–20 слотов — что важно в железе, почему тикрейт упирается в частоту CPU, где ставить сервер относительно игроков и как не сжечь трафик раньше конца месяца.
Это не общий гайд «как выбрать сервер». Только то, что реально влияет на ощущения в игре: стабильный тик, пинг и предсказуемость.
Требования CS2 dedicated server
Выделенный сервер CS2 ставится через SteamCMD и работает на Linux x64 — Windows для этого не нужен, и на VPS лишние ресурсы под графическую ОС не тратятся. Базовый набор выглядит так:
- Linux x64 — Ubuntu или Debian актуальной LTS-версии, без экзотики;
- диск — файлы игры занимают несколько десятков гигабайт и растут с обновлениями; закладывайте с запасом под патч, который скачивается рядом со старыми файлами, плюс логи и демки;
- RAM — один инстанс на соревновательный режим живёт в нескольких гигабайтах, но запас под плагины и пиковые моменты (смена карты, загрузка Workshop) обязателен;
- GSLT-токен — Game Server Login Token из Steam, без него сервер не попадёт в публичный список и будет вести себя как LAN;
- открытые порты — по умолчанию 27015 (UDP для игры, TCP для RCON).
Главное, что стоит понять заранее: CS2-сервер — это не «веб-сайт, который можно повесить на любой самый дешёвый тариф». Это процесс реального времени, который каждые несколько миллисекунд должен обсчитать состояние мира и разослать его игрокам. Если не успел — игроки видят рассинхрон, «телепорты» и регистрацию попаданий, на которую хочется жаловаться в чат.
CPU и тикрейт: почему важна частота, а не число ядер
В CS2 серверный тикрейт фиксирован на 64 тиках в секунду, а поверх работает sub-tick система: клиент передаёт точный момент действия внутри тика. Привычный по CS:GO трюк с -tickrate 128 здесь официально не поддерживается — не стоит выбирать тариф в расчёте на то, что «потом поставим 128 тик». Задача сервера простая и жёсткая: каждый тик должен укладываться примерно в 15,6 мс, всегда, включая моменты, когда на точке пятеро игроков, летят гранаты и дым.
Отсюда практические выводы:
- основной цикл игры в значительной степени однопоточный — 16 медленных ядер проиграют 2–4 быстрым. Смотрите на поколение и частоту CPU, а не на количество vCPU в тарифе;
- Ryzen-класс процессоров с высокой частотой хорошо подходит под такую нагрузку — именно поэтому игровые тарифы часто строят на нём;
- соседи по хосту влияют на стабильность тика сильнее, чем средняя загрузка. Пиковые просадки (steal time) превращаются в микролаги, которые не видно в средних графиках;
- число слотов растит нагрузку не линейно: 5×5 соревновательный и 20 человек на DM-сервере с ботами — разные миры.
Как проверить на практике, без синтетических бенчмарков: поднимите сервер, соберите полный состав и смотрите на вывод status в консоли сервера и на телеметрию производительности у игроков (в CS2 она включается в настройках). Параллельно на хосте — top с разбивкой по ядрам и колонка st в vmstat 1. Если одно ядро упирается в 100 %, а остальные отдыхают — вы упираетесь в однопоток, и тут поможет только более быстрый CPU, а не «ещё два ядра». Подробнее про то, как отличить проблему CPU от диска и сети, — в разборе почему VPS тормозит: диагностика CPU, диска, RAM и сети.
RAM, диск NVMe и сеть
RAM. Под один сервер на 10–12 слотов с парой плагинов ориентируйтесь на 4 ГБ, под два инстанса или тяжёлые режимы с Workshop-картами — на 8 ГБ. Swap держите как страховку, но если сервер реально в него уходит, игроки это почувствуют быстрее, чем вы увидите в мониторинге.
Диск. Во время игры диск почти не нагружен, но есть три момента, где он решает:
- обновление CS2 — гигабайты новых файлов, которые нужно скачать и распаковать, пока игроки ждут;
- смена карты и загрузка Workshop-контента;
- запись демок и логов.
NVMe здесь — это разница между «обновились за пару минут» и «сервер полчаса лежит после патча». Объём берите с запасом: файлы игры, место под обновление, демки, бэкапы конфигов.
Сеть. Для игрового сервера важны не «гигабиты в тарифе», а стабильность: малый джиттер, отсутствие потерь и понятный лимит трафика. Посчитайте объём заранее. Пример, чисто условный: если один игрок в среднем потребляет 40 КБ/с, то 10 игроков — около 400 КБ/с, это примерно 1,4 ГБ в час. Реальная цифра зависит от режима, rate-настроек и числа игроков, поэтому замерьте её у себя через vnstat за пару вечеров и умножьте на свой график.
Это важно, потому что после лимита большинство тарифов не отключают сервер, а режут скорость. Например, при лимите 3 ТБ скорость дальше ограничивается до 1 Мбит/с — для сайта это неприятно, а для CS2-сервера с несколькими игроками фактически означает «играть невозможно». Ставьте алерт на расход трафика заранее, а не после жалоб в Discord.
Москва или Франкфурт: пинг до игроков
Локация решает больше, чем любой процессор: сервер с идеальным тиком, но с пингом 90 мс до половины команды, проигрывает среднему серверу рядом с игроками.
- Москва — логичный выбор, если большинство играет из европейской части России. Для игроков из Сибири и с Урала пинг будет выше, но обычно приемлемым для «своего» сервера.
- Франкфурт — точка для смешанных составов: часть игроков в Европе, часть в России, или вам нужен хороший маршрут в европейские сети.
Не гадайте — измерьте. Попросите каждого игрока запустить mtr (или WinMTR на Windows) до тестового IP в каждой локации и прислать результат вечером, в прайм-тайм. Смотрите не только на средний пинг, но и на потери и разброс: стабильные 45 мс лучше «от 25 до 80».
Установка через SteamCMD: скелет команд
Ниже — минимальный каркас. Сервер запускаем от отдельного пользователя, не от root.
# пакеты и пользователь
sudo dpkg --add-architecture i386
sudo apt update && sudo apt install -y steamcmd tmux
sudo useradd -m -s /bin/bash cs2
sudo -iu cs2
# загрузка/обновление сервера (app id 730)
steamcmd +force_install_dir /home/cs2/server \
+login anonymous +app_update 730 validate +quit
# библиотека Steam, без которой сервер часто ругается при старте
mkdir -p ~/.steam/sdk64
ln -sf ~/.local/share/Steam/steamcmd/linux64/steamclient.so ~/.steam/sdk64/
Запуск — в tmux или, лучше, через systemd-юнит с автоперезапуском:
cd /home/cs2/server/game/bin/linuxsteamrt64
./cs2 -dedicated -port 27015 -maxplayers 10 \
+game_type 0 +game_mode 1 +map de_dust2 \
+sv_setsteamaccount ВАШ_GSLT
Пароль сервера, RCON и правила раунда выносите в game/csgo/cfg/server.cfg. Пути к steamclient.so могут отличаться в зависимости от того, как установлен SteamCMD, — проверьте через find / -name steamclient.so 2>/dev/null.
Плагины и бэкап
Стандартный стек для модификаций сейчас — Metamod:Source 2.x и поверх него CounterStrikeSharp для плагинов на C#. Подключается Metamod правкой gameinfo.gi, и это главная ловушка: обновление CS2 перезаписывает этот файл, и плагины молча перестают грузиться. Поэтому:
- после каждого
app_updateпроверяйте, что строка Metamod вgameinfo.giна месте (удобно автоматизировать скриптом); - не обновляйте плагины в день патча Valve — дайте авторам время выпустить совместимые версии;
- держите список плагинов с версиями в отдельном файле: при поломке проще откатиться.
Бэкап здесь — не файлы игры (их всегда можно скачать заново), а ваше: cfg/, addons/ с конфигами плагинов, базы статистики и банов, systemd-юниты, скрипты обновления. Это мегабайты, их легко копировать ежедневно на внешнее хранилище через restic или rsync. Отдельно проверьте, что восстановление на чистом сервере действительно поднимает всё за разумное время.
Чтобы узнать о падении раньше игроков, настройте проверки процесса, диска и CPU — см. мониторинг VPS: uptime, диск и CPU. Для игрового сервера полезно добавить проверку UDP-порта (A2S-запрос) и алерт на рост steal time.
DDoS и лимиты: что реально можно сделать
Игровые серверы атакуют чаще, чем сайты: проигравшему достаточно знать IP. Честно о главном: ни один VPS не даёт «иммунитета» к DDoS, и обещания «полной защиты» стоит воспринимать скептически. Что можно сделать своими силами:
- не светить IP лишний раз — не публиковать его в открытых каналах, по возможности раздавать через закрытый Discord;
- закрыть всё, кроме нужного: 27015/udp для игры, RCON — только с ваших адресов или через SSH-туннель, SSH — по ключам;
- ограничить частоту запросов на уровне
nftables/iptables— это помогает против мелких флудов и злоупотреблений A2S-запросами, но не против объёмной атаки; - заранее узнать политику провайдера: что происходит с IP при атаке, есть ли фильтрация, через сколько трафик возвращается.
Помните и про лимит трафика: даже небольшая атака съедает квоту, после которой включается шейпинг. Мониторинг расхода — часть защиты.
Чеклист тарифа под CS2
Перед заказом пройдитесь по списку:
- CPU — современный высокочастотный класс (Ryzen), а не просто много vCPU.
- RAM — 4 ГБ на один инстанс, 8 ГБ на два или на тяжёлые режимы.
- Диск — NVMe и запас по объёму под обновление, демки и бэкапы.
- Локация — Москва или Франкфурт по результатам
mtrот ваших игроков. - Трафик — посчитан под ваш онлайн с запасом, есть алерт до лимита.
- Скорость выдачи — чтобы протестировать в тот же вечер, а не ждать сутки.
- Поддержка — круглосуточная, потому что играют обычно вечером и в выходные.
Если нужен готовый вариант под эту задачу, посмотрите VPS для CS2: Ryzen и NVMe, дата-центры в Москве (Нагатинский) и во Франкфурте, выдача сервера до 120 секунд, поддержка 24/7, тарифы от 360 ₽. Для других задач — общий каталог VPS.
FAQ
Можно ли сделать сервер CS2 на 128 тиков?
Официально — нет. CS2 работает на 64 тиках с sub-tick системой, а параметр -tickrate из CS:GO здесь не даёт поддерживаемого результата. Сосредоточьтесь на стабильности 64 тиков — это и есть «быстрый сервер».
Сколько слотов потянет небольшой VPS? Соревновательный 5×5 с парой плагинов — вполне реальная задача для небольшого тарифа на быстром CPU. Для 20+ слотов, DM с ботами и нескольких инстансов берите больше RAM и проверяйте нагрузку на одно ядро под полным составом.
Зачем нужен GSLT-токен?
Без него сервер не появится в публичном списке и не будет нормально работать для подключения из интернета. Токен создаётся в Steam на аккаунте без ограничений и передаётся через +sv_setsteamaccount.
Почему после обновления CS2 перестали работать плагины?
Чаще всего обновление перезаписало gameinfo.gi и Metamod не грузится, либо CounterStrikeSharp ещё не совместим с новой сборкой. Верните строку Metamod и дождитесь обновления фреймворка.
Хватит ли 3 ТБ трафика?
Для своего сервера с компанией друзей обычно хватает с запасом, но посчитайте по своим замерам через vnstat. Учитывайте, что после лимита скорость режется до 1 Мбит/с, а это для игры неприемлемо — алерт на расход обязателен.