Выделенный сервер CS2 ставится через SteamCMD (app 730, около 60 ГБ) и запускается через cs2.sh. Подготовьте свежий VPS с Ubuntu или ПК с Windows, полчаса на установку и токен сервера (GSLT), чтобы сервер был виден онлайн. Источники: руководство Hetzner Community, гайды хостингов и вики Valve (при написании была недоступна — сверьтесь).
Пошаговая установка
Подготовьте машину: Ubuntu 24.04 (или Windows), минимум 4 vCPU, 8 ГБ ОЗУ и 80 ГБ диска для 10–32 игроков.
Создайте пользователя без root (steam) и установите SteamCMD с 32-битными библиотеками.
Создайте токен GSLT для AppID 730 на steamcommunity.com/dev/managegameservers (один токен на сервер).
Скачайте сервер командой app_update 730 validate (10–30 минут).
Создайте ссылку steamclient.so для 64-битного SDK и запустите сервер через ./cs2.sh из папки game/.
Положите server.cfg в game/csgo/cfg/ (см. инструмент «Генератор server.cfg для CS2»).
Откройте 27015 (UDP и TCP), 27005 (UDP) и 27020 (UDP) в ufw, брандмауэре провайдера и на роутере.
Подключитесь из CS2 через консоль игры: connect IP:27015.
Создайте службу systemd для автозапуска и запланируйте бэкапы и обновления.
Требования
- ОС: Ubuntu 24.04 (в руководстве Hetzner) или Windows 10/11 и Windows Server.
- Ресурсы: 4 vCPU, 8 ГБ ОЗУ, 80 ГБ диска для 10–32 игроков (рекомендация Hetzner); загрузка весит около 60 ГБ.
- Аккаунты: аккаунт Steam для создания токена GSLT (AppID 730). Без токена сервер ограничен локальной сетью.
- Внимание: старый сервер CS:GO использовал app 740; CS2 использует 730.
Локальная установка в Windows
Скачайте SteamCMD из официальной документации Valve, распакуйте в C:\steamcmd и установите сервер. Точный путь к cs2.exe в Windows не удалось подтвердить официальным источником: найдите его в папке game\bin после установки, запустите с -dedicated -console и проверьте в игре командой connect 127.0.0.1.
cd C:\steamcmd
steamcmd +force_install_dir C:\cs2-server +login anonymous +app_update 730 validate +quitLinux VPS: пользователь и зависимости
Команды из руководства Hetzner Community (Ubuntu 24.04). Аккаунту steam в продакшене sudo не нужен: уберите это право после установки.
sudo apt update && sudo apt upgrade -y
sudo adduser steam
sudo usermod -aG sudo steam
su - steam
sudo apt-get install lib32gcc-s1 -y
sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update -y
sudo apt install steamcmd -yLinux VPS: загрузка сервера
Руководство Hetzner также советует один раз войти с отдельным аккаунтом Steam (steamcmd +login ВАШ_АККАУНТ); анонимная установка работает в ряде гайдов — проверьте, что подходит вам.
mkdir -p ~/cs2-server && cd ~/cs2-server
steamcmd +login anonymous +force_install_dir ~/cs2-server +app_update 730 validate +quit
# SDK 64 bits (ignorer si le lien existe déjà)
mkdir -p ~/.steam/sdk64
ln -s ~/.local/share/Steam/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.soLinux VPS: первый запуск
Всегда запускайте ./cs2.sh (а не бинарник напрямую) из папки game/. Замените YOUR_GSLT_TOKEN. Режимы: casual 0/0, competitive 0/1, deathmatch 1/2 (+game_type/+game_mode). Флаг -insecure отключает VAC: только для приватных серверов. Для тестов используйте screen или tmux (screen -S cs2).
cd ~/cs2-server/game
./cs2.sh -dedicated -port 27015 -maxplayers 10 \
+hostname "My CS2 Server" +map de_dust2 \
+game_type 0 +game_mode 1 \
+sv_setsteamaccount YOUR_GSLT_TOKENОткрываемые порты и брандмауэр Linux (ufw)
Чтобы сменить игровой порт, добавьте -port N в строку запуска (свой порт на каждый экземпляр) и откройте его вместо 27015.
Открывайте только необходимое и проверяйте с другого подключения (не с самого сервера).
- 27015/udp: игровой трафик
- 27015/tcp: RCON и пинги
- 27005/udp: связь с клиентом
- 27020/udp: SourceTV (запись демо)
- Другие порты из руководства Hetzner: 27036/tcp (Steam Remote Play), 3478/udp (NAT traversal), 4379-4380/udp (матчмейкинг), 22/tcp (SSH).
sudo ufw allow OpenSSH
sudo ufw allow 27015/udp
sudo ufw allow 27015/tcp
sudo ufw allow 27005/udp
sudo ufw allow 27020/udp
sudo ufw enable
sudo ufw statusБрандмауэр Windows (netsh)
В командной строке администратора создайте входящее правило для каждого порта (или откройте «Брандмауэр Защитника Windows в режиме повышенной безопасности»).
netsh advfirewall firewall add rule name="Counter-Strike 2 27015 UDP" dir=in action=allow protocol=UDP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 2 27015 TCP" dir=in action=allow protocol=TCP localport=27015
netsh advfirewall firewall add rule name="Counter-Strike 2 27005 UDP" dir=in action=allow protocol=UDP localport=27005
netsh advfirewall firewall add rule name="Counter-Strike 2 27020 UDP" dir=in action=allow protocol=UDP localport=27020Брандмауэр провайдера и проброс портов (роутер)
У хостера (OVH, Hetzner, Scaleway…) откройте те же порты и в брандмауэре или «security group» провайдера: ufw недостаточно, если есть внешний брандмауэр. Дома настройте на роутере проброс (NAT) каждого порта на локальный IP машины (статический или зарезервированный по DHCP).
Проверка: с другого подключения добавьте сервер как «IP:порт» в браузере серверов Counter-Strike 2 или в консоли. Если не выходит, проверьте по порядку: запущена ли служба, локальный брандмауэр, брандмауэр провайдера, NAT.
Автозапуск: служба systemd
Создайте /etc/systemd/system/cs2.service (от root) и включите его. Подставьте своего пользователя и пути; логи — journalctl -u cs2 -f.
[Unit]
Description=Counter-Strike 2 dedicated server
After=network-online.target
Wants=network-online.target
[Service]
User=steam
WorkingDirectory=/home/steam/cs2-server/game
ExecStart=/home/steam/cs2-server/game/cs2.sh -dedicated -port 27015 -maxplayers 10 +game_type 0 +game_mode 1 +map de_dust2 +sv_setsteamaccount YOUR_GSLT_TOKEN
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# then:
# sudo systemctl daemon-reload
# sudo systemctl enable --now cs2Windows: задача планировщика при запуске
В Windows задача планировщика запускает ваш .bat при старте системы (выполните команду в командной строке администратора).
schtasks /Create /TN "Counter-Strike 2 server" /TR "C:\cs2-server\start-cs2.bat" /SC ONSTART /RU SYSTEM /RL HIGHESTОбновления, резервные копии и плановые перезапуски
Останавливайте службу перед обновлением (та же команда SteamCMD, что и при установке), регулярно делайте бэкап конфигурации и данных и планируйте ежедневный перезапуск, если сервер со временем деградирует.
sudo systemctl stop cs2
steamcmd +force_install_dir /home/steam/cs2-server +login anonymous +app_update 730 validate +quit
sudo systemctl start cs2
# backup
tar czf ~/cs2-$(date +%F).tar.gz -C /home/steam/cs2-server game/csgo/cfg game/csgo/gamemodes_server.txt
# daily restart at 05:00 (root crontab: sudo crontab -e)
0 5 * * * systemctl restart cs2Добавление и поиск сервера
Добавьте сервер на https://game-rank.com/jeux/counter-strike, чтобы его увидело сообщество. В игре ищите его в браузере серверов или подключайтесь напрямую по IP:порт.
Устранение неполадок: частые ошибки
- Сервер стартует в режиме LAN или невидим: токен GSLT отсутствует, недействителен или использован на другом сервере. Решение: создайте отдельный токен для AppID 730 и передайте его через +sv_setsteamaccount.
- Сервер падает или не находит steamclient.so: нет ссылки 64-битного SDK. Решение: создайте ~/.steam/sdk64/steamclient.so по инструкции и запускайте ./cs2.sh из game/.
- Сервер не виден снаружи: служба работает, но никто не может подключиться. Причина: закрыт порт (ufw, брандмауэр провайдера или нет NAT). Решение: откройте перечисленные порты на всех трёх уровнях и проверьте с другого подключения.
- Порт занят при запуске: порт удерживает другой экземпляр. Решение: посмотрите процессы командой ss -lunp | grep 27015, остановите старый экземпляр или задайте каждому серверу свой порт через -port.
- SteamCMD «Failed to install app» или зависшая загрузка: частая причина — заполненный диск или нехватка прав на папку. Решение: проверьте df -h и владельца папки, затем повторите команду с validate (при необходимости несколько раз).
Частые вопросы
- Использует ли CS2 по-прежнему команды и файлы CS:GO?
- Частично: папка конфигов осталась game/csgo/cfg/ и большинство cvar mp_* существует, но сервер — другое приложение (730), и часть вещей (плагины SourceMod, API Workshop из CS:GO) напрямую не переносится. При сомнениях проверяйте на своей сборке.
- Сколько игроков и какая машина нужны для сервера CS2?
- Руководство Hetzner рассчитано на 10–32 игрока при 4 vCPU, 8 ГБ ОЗУ и 80 ГБ диска; ограничить слоты можно параметром -maxplayers в строке запуска.
- Можно ли запускать сервер от root?
- Не рекомендуется: создайте отдельного пользователя (например, steam) без прав администратора и устанавливайте и запускайте сервер от него. Тогда уязвимость сервера или плагина не скомпрометирует всю машину.
- Мой сервер Counter-Strike 2 не отображается в списке: что проверить?
- Сначала проверьте, что порты открыты на всех уровнях, сервер не в режиме LAN (sv_lan 0) и, если игра требует, указан действительный токен сервера (GSLT). Список Steam может обновляться несколько минут; пока подключайтесь по IP:порт.
