Как создать свой сервер Left 4 Dead 2
Это руководство объясняет, как установить и настроить выделенный сервер Left 4 Dead 2 (L4D2) на вашем VPS или выделенном Linux-сервере.
Заказать сервер
Для размещения вашего сервера Left 4 Dead 2 HostMyServers предлагает несколько вариантов, оптимизированных для игр:
- Performance VPS - Идеально для сервера L4D2 (достаточно от 1 до 2 vCPU и от 2 до 4 ГБ RAM)
- NVMe VPS - Отличное соотношение цены и качества
- Эко выделенные серверы - Для размещения нескольких игровых серверов
- Выделенные серверы Performance - Максимальная производительность
Предварительные требования
Указанные ниже ресурсы соответствуют потребностям сервера и не учитывают ресурсы, уже используемые операционной системой, установленным ПО или другими службами на машине. Рассчитывайте на 3–5 Мбит/с на 10 игроков при tickrate 30 и примерно втрое больше при tickrate 100 (требуется расширение Tickrate Enabler для L4D2).
- SSH-доступ как root или пользователь с правами sudo
- 64-битная система Linux (рекомендуется Debian 12/13 или Ubuntu 22.04/24.04)
- Активный брандмауэр: nftables (рекомендуется), iptables или ufw (используйте только один инструмент брандмауэра одновременно)
- Минимум 2 ГБ RAM
- Около 10 ГБ свободного дискового пространства (рекомендуется SSD)
- Порт 27015 UDP доступен (и порт 27015 TCP для RCON — только с вашего статического IP-адреса)
Требуемая конфигурация
| Компонент | Минимум | Рекомендуется |
|---|---|---|
| RAM | 2 ГБ | 4 ГБ |
| CPU | 1 ядро | 2 ядра |
| Хранилище | 10 ГБ | 10 ГБ SSD |
| Сеть | 100 Мбит/с | 500 Мбит/с |
Left 4 Dead 2 использует порт 27015 по UDP для игры и по TCP для доступа к RCON (удалённое администрирование). TCP-порт должен быть доступен только с ваших IP-адресов.
Обновление системы
sudo apt update && sudo apt upgrade -y
Установка зависимостей
SteamCMD и сервер L4D2 — это 32-битные программы: необходимы 32-битные библиотеки. Сначала проверьте, что архитектура i386 включена:
sudo dpkg --print-foreign-architectures
Если результат пустой, выполните:
sudo dpkg --add-architecture i386
sudo apt update
Затем установите необходимые пакеты:
sudo apt install -y wget tar screen lib32gcc-s1 lib32stdc++6 lib32z1
Создание выделенного пользователя
По соображениям безопасности создайт е выделенного пользователя:
sudo adduser --disabled-password --gecos "" l4d2
Настройка брандмауэра
Откройте порт 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
Подключитесь как пользователь l4d2:
sudo -u l4d2 bash
cd ~
Создайте директории и загрузите SteamCMD:
mkdir -p ~/steamcmd ~/l4d2-server
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xzf steamcmd_linux.tar.gz
Загрузка сервера L4D2
Запустите установку сервера (идентификатор приложения 222860). Одной команды app_update больше недостаточно для получения работающего сервера L4D2 под Linux: нужно принудительно установить платформу Windows, а затем платформу Linux в одну и ту же папку:
./steamcmd.sh +@sSteamCmdForcePlatformType windows +force_install_dir /home/l4d2/l4d2-server +login anonymous +app_update 222860 validate +quit
./steamcmd.sh +@sSteamCmdForcePlatformType linux +force_install_dir /home/l4d2/l4d2-server +login anonymous +app_update 222860 validate +quit
Если установка прерывается с ошибкой, просто повторите ту же команду: SteamCMD продолжит с того места, где остановился.
По завершении появится сообщение Success! App '222860' fully installed.. Проверьте, что скрипт запуска сервера на месте:
ls ~/l4d2-server/srcds_run
Настройка сервера
Файл server.cfg
Создайте файл конфигурации:
nano ~/l4d2-server/left4dead2/cfg/server.cfg
Базовая конфигурация
// Имя сервера
hostname "Мой сервер L4D2"
// Пароль сервера (пусто = публичный)
sv_password ""
// Пароль RCON
rcon_password "ChangeMe"
// Регион сервера
// 0: США (восток)
// 1: США (запад)
// 2: Южная Америка
// 3: Европа
// 4: Азия
// 5: Австралия
// 6: Ближний Восток
// 7: Африка
// 255: весь мир (по умолчанию)
sv_region 3
// 0: сервер виден в Интернете, 1: только локальная сеть
sv_lan 0
// Чит-команды (0 = отключены)
sv_cheats 0
// Разрешает прямое подключение к серверу (без использования лобби)
sv_allow_lobby_connect_only 0
// Теги сервера через запятую (пример: "fr,coop")
//sv_tags "fr,coop"
// Зарезервировать сервер для участников группы Steam
// 1: только участники группы могут видеть сервер и присоединяться к нему
// 0: публичный сервер
// Чтобы использовать, укажите ID вашей группы Steam с помощью sv_steamgroup
sv_steamgroup_exclusive 0
//sv_steamgroup id_группы
// Количество слотов, отображаемых в списке серверов (-1 = реальное количество слотов)
sv_visiblemaxplayers -1
// Сложность зомби: Easy, Normal, Hard, Impossible
z_difficulty normal
// Разрешённые игровые режимы
// Если эта строка не учитывается, необходимо установить SourceMod:
// в этом случае добавьте перед командой sm_cvar (sm_cvar sv_gametypes ...)
sv_gametypes "coop,realism,survival,versus,teamversus,scavenge,teamscavenge,mutation12,right2live"
// Включает голосовую связь на сервере
sv_voiceenable 1
// Разрешает игрокам обеих команд разговаривать друг с другом (0 = нет, 1 = да)
// Если значение равно 1, убедитесь, что sv_voiceenable также равно 1
sv_alltalk 0
// Безопасность RCON
// Длительность бана (в минутах) после неудачных попыток доступа к RCON
sv_rcon_banpenalty 3600
// Максимальное количество неудачных попыток доступа к RCON до бана
sv_rcon_maxfailures 3
// Минимальное количество неудачных попыток доступа к RCON до бана
sv_rcon_minfailures 1
// Период (в секундах), в течение которого учитываются неудачные попытки доступа к RCON
sv_rcon_minfailuretime 10
// Проверка файлов игроков
// Внимание: при использовании пользовательских расширений или кампаний
// эти значения выгоняют игроков, чьи файлы отличаются (установите их в 0)
sv_pure 2
sv_consistency 1
// Выгоняет игроков, у которых нет оригинальных файлов игры
sv_pure_kick_clients 1
// Разрешает (1) или запрещает (0) команду wait в cfg-файлах игроков
sv_allow_wait_command 0
// Включает (1) или отключает (0) отображение сообщения дня (MOTD)
motd_enabled 1
// Логи
log on
sv_logecho 0
sv_logfile 1
sv_log_onefile 0
sv_logbans 1
sv_logflush 0
sv_logsdir logs
// Управление банами
exec banned_user.cfg
exec banned_ip.cfg
// Создаёт указанные выше файлы банов, если они не существуют
writeid
writeip
По умолчанию выделенный сервер L4D2 принимает только подключения через лобби. Без строки sv_allow_lobby_connect_only 0 игроки не смогут присоединиться к вашему серверу ни напрямую, ни через список серверов.
Выберите длинный и уникальный пароль rcon_password. Любой, кто его знает, может администрировать ваш сервер.
Игровые режимы и карты
Игровые режимы
Режим выби рается при запуске с помощью +mp_gamemode:
| Режим | Описание | Игроки |
|---|---|---|
coop | Кооперативная кампания | 4 |
realism | Кооперативный режим без подсветки и подсказок | 4 |
versus | Выжившие против заражённых | 8 |
survival | Выстоять против волн заражённых | 4 |
scavenge | Собирать канистры с бензином | 8 |
Первая карта каждой кампании
| Кампания | Стартовая карта |
|---|---|
| Dead Center | c1m1_hotel |
| Dark Carnival | c2m1_highway |
| Swamp Fever | c3m1_plankcountry |
| Hard Rain | c4m1_milltown_a |
| The Parish | c5m1_waterfront |
| The Passing | c6m1_riverbank |
| The Sacrifice | c7m1_docks |
| No Mercy | c8m1_apartment |
| Crash Course | c9m1_alleys |
| Death Toll | c10m1_caves |
| Dead Air | c11m1_greenhouse |
| Blood Harvest | c12m1_hilltop |
| Cold Stream | c13m1_alleys |
| The Last Stand | c14m1_junkyard |
Токен GSLT (необязательно)
Токен GSLT (Game Server Login Token) не является обязательным, но рекомендуется: он позволяет вашему серверу отображаться в публичных серверах Steam.
Чтобы сгенерировать его, войдите в свой аккаунт Steam и перейдите в раздел Управление аккаунтами игровых серверов Steam.
Для создания токена необходимо выполнение нескольких условий:
- Ваш аккаунт Steam не должен быть забанен в сообществе или заблокирован
- Ваш аккаунт Steam не должен быть ограничен
- В вашем аккаунте Steam должен быть указан номер телефона
- Ваш аккаунт Steam должен владеть игрой, для которой вы создаёте аккаунт игрового сервера
- Ваш аккаунт Steam может создать до 1000 аккаунтов игровых серверов
В поле App ID базовой игры введите 550. Вы можете добавить заметку, чтобы помнить, о каком сервере идёт речь, затем завершите создание, нажав кнопку Создать.
Чтобы использовать токен, добавьте его в строку запуска:
+sv_setsteamaccount ВАШ_ТОКЕН
Добавьте параметр во все ваши строки запуска: первый запуск, строку ExecStart сервиса systemd и команду, запускаемую через screen.
Первый запуск
cd ~/l4d2-server
./srcds_run -game left4dead2 -console +mp_gamemode coop +map c1m1_hotel +maxplayers 8 -port 27015
После завершения запуска консоль отображает состояние подключения к серверам Steam. Чтобы остановить сервер, введите quit.