Как создать свой сервер Counter-Strike 2
Это руководство объясняет, как установить и настроить выделенный сервер Counter-Strike 2 (CS2) на вашем VPS или выделенном Linux-сервере.
Заказать сервер
Для размещения вашего сервера Counter-Strike 2 HostMyServers предлагает несколько вариантов, оптимизированных для игр:
- Performance VPS - Идеально для сервера CS2 (быстрый процессор и достаточное хранилище)
- NVMe VPS - Отличное соотношение цены и качества
- Эко выделенные серверы - Для размещения нескольких игровых серверов
- Выделенные серверы Performance - Максимальная производительность
Предварительные требования
Указанные ниже ресурсы соответствуют потребностям сервера и не учитывают ресурсы, уже используемые операционной системой, установленным программным обеспечением или другими службами на машине. Рассчитывайте примерно на 50 Мбит/с для 10 игроков и более.
- SSH-доступ как root или пользователь с правами sudo
- 64-битная система Linux (рекомендуется Debian 12/13 или Ubuntu 22.04/24.04, требуется glibc 2.31 или выше)
- Активный брандмауэр: nftables (рекомендуется), iptables или ufw (используйте только один инструмент брандмауэра одновременно)
- Минимум 4 ГБ RAM (8 ГБ рекомендуется)
- Около 70 ГБ свободного дискового пространства (рекомендуется 100 ГБ, SSD)
- Порт 27015 UDP доступен (и порт 27015 TCP для RCON, только с вашего статического IP-адреса)
- Аккаунт Steam с привязанным номером телефона (для токена GSLT)
Требуемая конфигурация
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| RAM | 4 ГБ | 8 ГБ |
| CPU | 2 ядра | 4 ядра, высокая частота |
| Хранилище | 70 ГБ SSD | 100 ГБ SSD |
| Сеть | 100 Мбит/с | 1 Гбит/с |
Counter-Strike 2 использует порт 27015 по UDP для игры и по TCP для доступа RCON (удалённое администрирование). TCP-порт должен быть доступен только с ваших IP-адресов (требуется статический IP-адрес).
Counter-Strike 2 использует систему «subtick»: параметра -tickrate для настройки больше не существует.
Обновление системы
sudo apt update && sudo apt upgrade -y
Установка зависимостей
SteamCMD требует 32-битную библиотеку lib32gcc-s1. Установите необходимые пакеты:
sudo apt install -y wget tar screen lib32gcc-s1
Создание выделенного пользователя
По соображениям безопасности создайте выделенного пользователя:
sudo adduser --disabled-password --gecos "" cs2
Настройка брандмауэра
Откройте порт 27015 по UDP для игроков. Порт 27015 по TCP соответствует RCON: ограничьте его вашим статическим IP-адресом (замените ВАШ_IP).
С UFW
sudo ufw allow 27015/udp
sudo ufw allow from ВАШ_IP to any port 27015 proto tcp
sudo ufw reload
С iptables
sudo iptables -A INPUT -p udp --dport 27015 -j ACCEPT
sudo iptables -A INPUT -p tcp -s ВАШ_IP --dport 27015 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4
Для сохранения правил после перезагрузки требуется пакет iptables-persistent.
С nftables
Эти команды используют таблицу inet filter и цепочку input, присутствующие по умолчанию в /etc/nftables.conf в Debian.
sudo nft add rule inet filter input udp dport 27015 accept
sudo nft add rule inet filter input ip saddr ВАШ_IP tcp dport 27015 accept
(echo "flush ruleset"; sudo nft list ruleset) | sudo tee /etc/nftables.conf
Никогда не открывайте TCP-порт 27015 для всех: он даёт доступ к RCON. Без статического IP-адреса не открывайте этот порт и используйте SSH-туннель.
Установка SteamCMD
Подключитесь как пользователь cs2:
sudo -u cs2 bash
cd ~
Создайте директории и загрузите SteamCMD:
mkdir -p ~/steamcmd ~/cs2-server
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
Загрузка сервера CS2
Запустите установку сервера (идентификатор приложения 730):
./steamcmd.sh +force_install_dir /home/cs2/cs2-server +login anonymous +app_update 730 validate +quit
При нехватке места на диске SteamCMD останавливается с ошибкой state is 0x202 after update job (см. FAQ).
Загрузка может занять много времени. Если установка прерывается из-за сетевой ошибки, просто повторно выполните ту же команду: SteamCMD продолжит с того места, где остановился.
По завершении отобразится сообщение Success! App '730' fully installed.. Убедитесь, что исполняемый файл сервера присутствует:
ls ~/cs2-server/game/bin/linuxsteamrt64/cs2
Создание ссылки на steamclient.so
CS2 нужен файл steamclient.so для связи со Steam. Создайте ссылку на 64-битный файл SteamCMD:
mkdir -p ~/.steam/sdk64
ln -sf ~/steamcmd/linux64/steamclient.so ~/.steam/sdk64/steamclient.so
Токен GSLT (обязателен)
Чтобы ваш сервер отображался в списке публичных серверов и принимал подключения из Интернета, вам нужен токен GSLT (Game Server Login Token). Без него сервер работает только в локальной сети.
Чтобы сгенерировать его, войдите в свой аккаунт Steam и перейдите на страницу Управление учётными записями игровых серверов Steam.
Для создания токена необходимо выполнить несколько условий:
- Ваш аккаунт Steam не должен быть забанен в сообществе или заблокирован
- Ваш аккаунт Steam не должен быть ограничен
- К вашему аккаунту Steam должен быть привязан номер телефона
- Ваш аккаунт Steam должен владеть игрой, для которой вы создаёте учётную запись игрового сервера
- Ваш аккаунт Steam может создать до 1000 учётных записей игровых серверов
В поле App ID базовой игры введите 730. Вы можете добавить заметку, чтобы запомнить, к какому серверу относится токен, затем завершите, нажав кнопку Создать.
Чтобы использовать токен, добавьте его в строку запуска:
+sv_setsteamaccount ВАШ_ТОКЕН
Используйте один токен на один сервер и никогда не передавайте его другим. Добавьте параметр во все строки запуска: первый запуск, строку ExecStart сервиса systemd и команду, запускаемую через screen.
Настройка сервера
Файл server.cfg
Создайте файл конфигурации:
nano ~/cs2-server/game/csgo/cfg/server.cfg
Базовая конфигурация
hostname "Мой сервер CS2"
sv_password ""
rcon_password "ChangeMe"
sv_region 3
sv_lan 0
sv_cheats 0
mp_friendlyfire 0
mp_autoteambalance 1
Выберите длинный и уникальный пароль rcon_password. Любой, кто его знает, может администрировать ваш сервер.
Основные параметры
| Параметр | Описание |
|---|---|
hostname | Публичное имя сервера |
sv_password | Пароль для входа (пусто = публичный) |
rcon_password | Пароль удалённого администрирования |
sv_region | Регион: 3 = Европа, 0 = восток США, 4 = Азия, 255 = весь мир |
sv_lan | 0 = сервер виден в Интернете, 1 = только локальная сеть |
sv_cheats | Читерские команды (0 = отключено) |
mp_friendlyfire | Огонь по своим (0 = отключено, 1 = включено) |
mp_autoteambalance | Автоматическая балансировка команд (0 или 1) |
Игровые режимы
Режим выбирается при запуске с помощью +game_type и +game_mode:
| Режим | game_type | game_mode |
|---|---|---|
| Обычный (Casual) | 0 | 0 |
| Соревновательный | 0 | 1 |
| Wingman | 0 | 2 |
| Гонка вооружений (Arms Race) | 1 | 0 |
| Подрыв | 1 | 1 |
| Deathmatch | 1 | 2 |
Первый запуск
cd ~/cs2-server/game/bin/linuxsteamrt64
./cs2 -dedicated -console -usercon -port 27015 -maxplayers 64 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount ВАШ_ТОКЕН
После завершения запуска в консоли отображается подключение сервера к серверам Steam. Чтобы остановить сервер, введите quit.
Оптимизация запуска
Параметры запуска
| Параметр | Описание |
|---|---|
-dedicated | Запускает сервер в выделенном режиме (обязательно) |
-console | Выполняется в консольном режиме |
-usercon | Включает RCON |
-port | Порт сервера (по умолчанию 27015) |
-ip | IP-адрес для прослушивания |
-maxplayers | Максимальное количество игроков |
+game_type и +game_mode | Игровой режим (см. таблицу выше) |
+mapgroup | Группа карт (mg_active для активных официальных карт) |
+map | Стартовая карта |
+sv_setsteamaccount | Токен GSLT (обязателен, см. соответствующий раздел) |
-insecure | Отключает защиту VAC (см. предупреждение ниже) |
-insecure отключает защиту VAC: используйте этот параметр только для тестов, он оставляет дверь открытой для читеров.
Всегда оставляйте от 1 до 2 ГБ свободной RAM для операционной системы.
Изменение порта
./cs2 -dedicated -console -usercon -port 27016 -maxplayers 64 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount ВАШ_ТОКЕН
Не забудьте открыть новый порт в брандмауэре.
Структура файлов
| Путь | Описание |
|---|---|
game/bin/linuxsteamrt64/cs2 | Исполняемый файл сервера |
game/csgo/cfg/ | Файлы конфигурации |
game/csgo/cfg/server.cfg | Основная конфигурация |
game/csgo/addons/ | Расширения (Metamod, CounterStrikeSharp) |
Настройка как сервис systemd
Создание файла сервиса
Выйдите из сессии пользователя cs2 (exit), чтобы вернуться в свою административную учётную запись, затем создайте файл сервиса:
sudo nano /etc/systemd/system/cs2.service
Содержимое файла:
[Unit]
Description=Counter-Strike 2 Server
After=network.target
[Service]
Type=simple
User=cs2
Group=cs2
WorkingDirectory=/home/cs2/cs2-server/game/bin/linuxsteamrt64
ExecStart=/home/cs2/cs2-server/game/bin/linuxsteamrt64/cs2 -dedicated -console -usercon -port 27015 -maxplayers 64 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount ВАШ_ТОКЕН
Restart=on-failure
RestartSec=20
[Install]
WantedBy=multi-user.target
Активация и запуск сервиса
sudo systemctl daemon-reload
sudo systemctl enable cs2.service
sudo systemctl start cs2.service
Команды управления
# Проверить статус
sudo systemctl status cs2.service
# Остановить сервер
sudo systemctl stop cs2.service
# Перезапустить сервер
sudo systemctl restart cs2.service
# Просмотр логов
sudo journalctl -u cs2.service -f
При использовании systemd консоль сервера не является интерактивной. Для отправки команд используйте RCON из игры или запустите сервер через screen (см. ниже).
Запуск с screen (альтернатива)
Если сервис systemd запущен, сначала остановите его (sudo systemctl stop cs2.service): два сервера не могут использовать один и тот же порт.
sudo -u cs2 bash
cd ~/cs2-server/game/bin/linuxsteamrt64
screen -S cs2
./cs2 -dedicated -console -usercon -port 27015 -maxplayers 64 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +sv_setsteamaccount ВАШ_ТОКЕН
Для отсоединения: Ctrl+A затем D
Для возврата: screen -r cs2