MAATRIX GAMES / Блог / Как поднять сервер Mount & Blade II: Bannerlord: пошаговая инструкция

Как поднять сервер Mount & Blade II: Bannerlord: пошаговая инструкция

MAATRIX GAMES

Мультиплеер Bannerlord живёт почти целиком на кастомных серверах — официальных матчмейкинг-серверов TaleWorlds для постоянных комьюнити нет, и если хотите свой Captain-режим с постоянным составом или Persistent Kingdoms с модами — придётся поднимать dedicated-сервер самому. Процесс не особо документирован официально, зато у него есть один нюанс, о который спотыкается почти каждый новичок: сервер не запустится без токена, привязанного к вашему Steam-аккаунту. Разберём всё по шагам — от установки до автозапуска, чтобы не упереться в это на середине пути.

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

Bannerlord — не самый прожорливый мультиплеер по сравнению с тем же Rust или ARK, но требования сильно зависят от режима игры:

  • Skirmish и Duel (малые бои, до 6v6): 2 ядра CPU от 2-3 ГГц, от 4 ГБ RAM.
  • Captain, Team Deathmatch, Siege (крупные замесы с ботами и толпой игроков): от 4 ядер, от 8 ГБ RAM.
  • CPU — узкое место чаще, чем RAM: физика столкновений, пути ботов и обсчёт большого числа юнитов на карте держатся на одном ядре, поэтому частота важнее количества ядер.
  • Диск: SSD желателен, но не критичен так, как в песочницах с процедурной генерацией — сам сервер и Native-модуль занимают немного места, от 5-8 ГБ с запасом под логи.
  • Сеть: нужен публично видимый IP-адрес — TaleWorlds прямо не поддерживает анонимный хостинг за NAT без проброса, сервер должен быть доступен снаружи по UDP.
  • ОС: есть сборки и под Windows, и под Linux. Если не привязаны к конкретным модам, требующим Windows-библиотек — берите Linux, меньше накладных расходов на VPS и проще с автозапуском через systemd.

Каталог MAATRIX GAMES отдаёт под Bannerlord от 4 ГБ RAM — этого достаточно под Skirmish/Duel, но под Captain или Siege с полным составом закладывайте тариф повыше.

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

Сервер ставится отдельным Steam-приложением "Mount & Blade II: Dedicated Server" — это не тот же app id, что у самой игры, и качается он отдельно.

Готовим окружение (на Ubuntu 22.04/24.04, под отдельным пользователем без root):

sudo apt update && sudo apt install -y lib32gcc-s1 curl unzip
sudo useradd -m -s /bin/bash bannerlord
sudo su - bannerlord
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

Качаем сам dedicated-сервер — app id 1863440, анонимного логина достаточно именно для скачивания файлов:

./steamcmd.sh +force_install_dir /home/bannerlord/server +login anonymous +app_update 1863440 validate +quit

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

Обновление — та же команда без validate:

./steamcmd.sh +force_install_dir /home/bannerlord/server +login anonymous +app_update 1863440 +quit

Держите её под рукой отдельным скриптом: TaleWorlds патчит мультиплеер нерегулярно, но при рассинхроне версий клиент просто не подключится к серверу.

Поднять сервер Mount & Blade II: Bannerlord за пару минут

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

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

Токен доступа: без него сервер не стартует

Вот та самая грабля. Bannerlord не даёт хостить сервер анонимно — нужен auth-токен, привязанный к личному Steam-аккаунту с игрой. Получаем его так:

  1. Запускаете обычный клиент Bannerlord у себя на ПК, заходите в мультиплеерное лобби.
  2. Открываете консоль игры сочетанием Alt + ` (тильда).
  3. Вводите команду:
customserver.gettoken
  1. Токен сохранится в файл Documents\Mount & Blade II Bannerlord\Tokens\DedicatedCustomServerAuthToken.txt.

Токен привязан к аккаунту, действует ограниченное время (около 3 месяцев) и потом требует перегенерации той же командой — держите это в голове, если сервер вдруг откажется стартовать спустя пару месяцев без видимых причин в конфиге.

Содержимое файла копируете на VPS и передаёте серверу через параметр запуска /dedicatedcustomserverauthtoken — либо прямо строкой, либо путём к файлу, в зависимости от того, как оформлен ваш стартовый скрипт.

Конфигурация: config-файл и режимы игры

Исполняемый файл лежит в bin/Linux_Shipping_Server/DedicatedCustomServer.Starter (на Windows — bin\Win64_Shipping_Server\DedicatedCustomServer.Starter.exe). Права на выполнение на Linux нужно выставить руками:

chmod +x /home/bannerlord/server/bin/Linux_Shipping_Server/DedicatedCustomServer.Starter

Конфиг — текстовый файл, команды выполняются построчно при старте. Кладётся в Modules/Native/, в комплекте уже есть примеры вида ds_config_*.txt под разные режимы — проще скопировать подходящий и править, чем писать с нуля.

Минимальный рабочий конфиг ds_config_myserver.txt:

ServerName Мой сервер Bannerlord
GameType Captain
WelcomeMessage Добро пожаловать! Правила — в Discord.
AdminPassword СЮДА_СЛОЖНЫЙ_ПАРОЛЬ
CultureTeam1 Empire
CultureTeam2 Sturgia
add_map_to_usable_maps Arena_Siege_A Captain
start_game_and_mission

Ключевые моменты:

  • GameType — режим игры: Captain, Skirmish, TeamDeathmatch, Siege, Duel, Battle. Меняется через отдельный конфиг под каждый режим — не пытайтесь переключать на лету одной командой, проще держать несколько ds_config_*.txt и запускать нужный.
  • AdminPassword — по умолчанию пустой, и это реальная дыра: без пароля админ-функции в игровом чате доступны кому попало. Ставьте сразу, не откладывайте на "потом".
  • CultureTeam1/CultureTeam2 — культуры сторон (Empire, Sturgia, Aserai, Khuzait, Vlandia, Battania), влияют на визуал юнитов и доступное вооружение по умолчанию.
  • add_map_to_usable_maps — регистрирует карту под конкретный режим; без этой строки сервер стартует, но список карт окажется пустым.
  • start_game_and_mission — комбинированная команда, сразу переводящая сервер из лобби в играбельную миссию. Можно разбить на start_game + start_mission отдельно, если нужен контроль над паузой между этапами.

Полный список поддерживаемых команд конфига можно получить командой list прямо в консоли запущенного сервера.

Первый запуск и проверка

Первый раз стоит запустить вручную — так виден весь вывод консоли и ошибки конфига, а не только код завершения в systemd-логе:

cd /home/bannerlord/server
./bin/Linux_Shipping_Server/DedicatedCustomServer.Starter \
  /dedicatedcustomserverconfigfile ds_config_myserver.txt \
  /dedicatedcustomserverauthtoken ВАШ_ТОКЕН \
  /LogOutputPath /home/bannerlord/server/logs

Полезные дополнительные флаги: /port 7210 — задать порт вручную, если не устраивает дефолтный; /DisableErrorReporting — отключить автоматическую отправку крэш-репортов, если гоняете нестабильную сборку модов.

Если сервер запустился, но не отображается в браузере серверов клиента — почти всегда дело в одном из трёх: не проброшен UDP-порт наружу (следующий раздел), не выполнена start_game/start_game_and_mission в конце конфига, либо неверный или просроченный токен (проверяйте логи — там прямо пишет причину отказа авторизации).

Подключение из клиента: мультиплеерное лобби → "Прямое подключение" → IP:порт вашего сервера.

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

Bannerlord использует один основной порт — по умолчанию UDP 7210 для игрового трафика:

ПортПротоколНазначение
7210 (по умолчанию)UDPОсновной игровой трафик
7210TCPОпционально, для веб-панели администрирования

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

sudo ufw allow 7210/udp
sudo ufw allow 7210/tcp
sudo ufw enable

Если несколько инстансов Bannerlord на одном сервере — раздавайте порты с шагом (7210, 7211, 7212...) через /port в параметрах запуска каждого, и не забывайте открывать каждый отдельно.

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

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

Чтобы сервер не умирал при обрыве SSH-сессии и поднимался сам после ребута VPS — оформляем systemd-юнит /etc/systemd/system/bannerlord.service:

[Unit]
Description=Mount and Blade II Bannerlord Dedicated Server
After=network.target

[Service]
User=bannerlord
WorkingDirectory=/home/bannerlord/server
ExecStart=/home/bannerlord/server/bin/Linux_Shipping_Server/DedicatedCustomServer.Starter /dedicatedcustomserverconfigfile ds_config_myserver.txt /dedicatedcustomserverauthtoken ВАШ_ТОКЕН /LogOutputPath /home/bannerlord/server/logs
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Хранить токен прямо в юните — не лучшая практика с точки зрения безопасности (файл юнита читаем всем в системе с правами root на просмотр через systemctl), поэтому если сервер публичный и важна гигиена — вынесите токен в отдельный файл окружения через EnvironmentFile= и подставляйте переменной, а не пишите прямым текстом в ExecStart.

Активация:

sudo systemctl daemon-reload
sudo systemctl enable bannerlord
sudo systemctl start bannerlord

Логи — через journalctl -u bannerlord -f. Не забудьте про перегенерацию токена раз в три месяца: без этого шага юнит однажды перестанет стартовать, а в логе будет просто отказ авторизации, который легко принять за проблему с конфигом или портами — как поставите себе напоминание, решайте сами (календарь, cron-письмо, что угодно), но не полагайтесь на память.

Если параллельно держите ещё серверы для друзей — процесс установки через SteamCMD и логика systemd-юнита у большинства многопользовательских тайтлов из каталога MAATRIX GAMES похожа, например у Rust или у Squad — разница в основном в параметрах запуска и портах.

Поднять сервер Mount & Blade II: Bannerlord за пару минут

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

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

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

Можно ли обойтись без токена и хостить анонимно?

Нет, TaleWorlds прямо не поддерживает анонимный хостинг — токен обязателен, генерируется командой customserver.gettoken из клиента и привязан к вашему Steam-аккаунту.

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

Чаще всего — не проброшен UDP-порт наружу, либо в конфиге не выполнена start_game/start_game_and_mission. Проверьте оба пункта по порядку, обычно причина в одном из них.

Можно ли менять режим игры (Captain/Skirmish/TDM) без переустановки сервера?

Да, но не на лету одной командой — держите отдельный ds_config_*.txt под каждый режим и перезапускайте сервер с нужным файлом через /dedicatedcustomserverconfigfile.

Нужен ли отдельный Steam-аккаунт с купленной игрой для сервера?

Файлы сервера скачиваются анонимно, но для генерации токена нужен аккаунт с Bannerlord — на нём же должен быть куплен мультиплеер, иначе консольная команда customserver.gettoken не сработает.

Что делать, если сервер падает сразу после старта без ошибки?

Проверьте лог по пути из /LogOutputPath — обычно там честно написана причина: просроченный токен, битый конфиг (незарегистрированная карта через add_map_to_usable_maps) или занятый порт.