BeamMP Keymaster по адресу keymaster.beammp.com - это место, где выдаются ключи авторизации для серверов. Вы входите через Discord, открываете раздел Keys, нажимаете зелёный +, задаёте ключу название и копируете строку из 36 символов в параметр AuthKey в секции [General] файла ServerConfig.toml. Один ключ обслуживает один сервер одновременно, на аккаунт выдаётся лишь несколько ключей, а сервер BeamMP с пустым AuthKey не запустится вообще - приватный он или нет. Большинство проблем с ключами BeamMP сводится к трём причинам: ключ так и не вставили, ключ вставили с лишним пробелом или не в ту строку, либо один ключ используют на двух серверах.
В этой статье разбирается сам Keymaster и всё, что связано с ключом. Установка сервера, остальные параметры ServerConfig.toml, карты и моды описаны в руководстве по серверу BeamMP, а скрипты - в статье Lua-плагины и гонки в BeamMP.
Что на самом деле делает ключ авторизации#
Сервер BeamMP не живёт сам по себе. Пока он работает, он отправляет на бэкенд BeamMP по HTTPS heartbeat - название, карту, число игроков, версию и список игроков, - и вместе с каждым heartbeat уходит ключ как идентификатор сервера. Бэкенд отвечает статусом, а сервер записывает в лог, принят ключ или нет. Так сервер попадает в список серверов в игре, и так бэкенд понимает, какому аккаунту он принадлежит.
Из такой схемы следуют три вывода, и их стоит держать в голове, прежде чем что-то менять:
- Ключ принадлежит аккаунту, а не машине и не хостингу. Он создаётся под вашим логином Discord. Хостинг не может сгенерировать его за вас: любой провайдер попросит вас вставить свой ключ, потому что другого законного способа его получить нет.
- Серверу нужен исходящий HTTPS. Heartbeat уходит на порт
443. Сервер за файрволом, который блокирует исходящий трафик, запустится, но никогда не пройдёт авторизацию и не появится в списке. - Ключ - это учётные данные. Тот, у кого он есть, может запустить сервер, который бэкенд сочтёт вашим. В документации BeamMP об этом сказано прямо: относитесь к ключу как к паролю и никому его не показывайте.
Вход в Keymaster#
Для входа Keymaster использует Discord. BeamMP объясняет это защитой от спама: привязка ключей к аккаунту Discord делает создание тысяч мусорных серверов слишком дорогим. Стоит также вступить на Discord-сервер BeamMP - поддержка, в том числе по скомпрометированным ключам, работает через него.
На этом шаге люди часто спотыкаются о следующее:
- Владелец - это аккаунт Discord. Ключи, созданные под одним аккаунтом, не видны из другого. Если серверами занимается клуб, заранее решите, какой аккаунт будет владеть ключами, и выберите такой, который будет существовать и через два года, а не аккаунт участника, который может уйти.
- Безопасность ключей равна безопасности вашего Discord. Тот, кто получит доступ к этому аккаунту, увидит и сможет удалить все ваши ключи. Включите в Discord двухфакторную аутентификацию; доводы из статьи двухфакторная аутентификация для аккаунта панели подходят для любого аккаунта, который хранит доступ к серверу.
- Аккаунт на форуме BeamMP - это отдельный логин. Бонусы за пожертвования сопоставляются по email аккаунта на форуме и по аккаунту Discord, привязанному на Patreon, а это влияет на лимиты ключей, о которых речь ниже.
Создание ключа по шагам#
- Откройте
keymaster.beammp.comи войдите через Discord. - Нажмите Keys в меню слева.
- Нажмите зелёную кнопку + в правом верхнем углу.
- Введите Server Name. Это лишь название ключа внутри Keymaster, а не имя, которое видят игроки. Оно берётся из параметра
NameвServerConfig.toml. - Нажмите Create.
- Скопируйте значение из поля Key с помощью значка буфера обмена справа от него.
Пользуйтесь значком буфера обмена, а не выделяйте текст вручную. Именно при ручном выделении в конфиг попадает пробел в конце или теряется последний символ, и в обоих случаях сервер запускается, но не проходит авторизацию.
Называйте ключ по тому, где он будет работать: cruise-de-prod, drift-test, league-season-3. Когда у вас три ключа и нужно отозвать тот, который утёк, название, подсказывающее сервер, избавит вас от угадывания - и от того, чтобы в вечер гонок убрать из списка не тот сервер.
Сам ключ - это UUID: 36 символов, пять групп шестнадцатеричных цифр, разделённых дефисами. Длина - удобная проверка на здравый смысл, потому что сервер её тоже проверяет.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxСколько ключей можно получить#
У каждого аккаунта ограниченное число ключей, и каждый ключ может обслуживать ровно один сервер одновременно. Бесплатный лимит небольшой - в руководствах хостинг-провайдеров его стабильно описывают как два ключа на аккаунт Discord, - а точное число показывается в Keymaster, когда вы его достигнете. Сверяться стоит именно там, потому что политику вправе менять BeamMP.
Дополнительные ключи дают за поддержку проекта. Ставки указаны в официальном FAQ для игроков:
| Поддержка | Дополнительные ключи |
|---|---|
| Пожертвование или уровень на Patreon | 1 за каждый пожертвованный US$ |
| Буст Discord-сервера BeamMP | +5 в сумме, а не за каждый буст |
Оба способа дают ещё и бонусы раннего доступа. Чтобы ключи пришли, ваш аккаунт Patreon должен быть привязан к тому же аккаунту Discord, которым вы пользуетесь в Keymaster, а email на Patreon должен совпадать с email аккаунта на форуме BeamMP. По словам BeamMP, синхронизация может занять несколько часов, а иногда до 12; если по истечении этого срока ничего не пришло, следующий шаг - обратиться в их поддержку, а не жертвовать повторно.
Прежде чем платить за дополнительные ключи, посмотрите, нужны ли они:
- Тестовому серверу не нужен собственный постоянный ключ, если он никогда не работает одновременно с боевым. Но его нужно остановить до запуска боевого сервера, иначе один из них получит отказ.
- Старые ключи от закрытых серверов продолжают учитываться. Удалите их. Мёртвый ключ в списке - это неиспользуемый слот и учётные данные, которыми всё ещё можно злоупотребить.
- Правило - один ключ на каждый работающий сервер, а не один ключ на машину. Два сервера BeamMP на одном компьютере требуют двух ключей.
Куда вписывается ключ#
Ключ хранится в одной строке ServerConfig.toml, в секции [General], в кавычках, потому что это строка TOML:
[General]Port = 30814AuthKey = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"Private = falseName = "Sunday Night Cruise"При первом запуске сервер создаёт новый ServerConfig.toml с комментарием, указывающим на Keymaster, и пустым AuthKey, после чего останавливается. Так и должно быть: впишите ключ и запустите снова. Структура файла и все остальные параметры описаны в руководстве по серверу.
Переменные окружения вместо файла
Актуальные сборки сервера 3.x читают ключ и из окружения. Если задана непустая переменная BEAMMP_AUTH_KEY, она переопределяет значение из файла; BEAMMP_PRIVATE делает то же для Private и считается истинной только при значении 1 или true.
$ export BEAMMP_AUTH_KEY="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"$ export BEAMMP_PRIVATE=false$ ./BeamMP-ServerЭто лучший вариант для контейнеров и для тех, кто хранит файл конфигурации в Git: файл можно коммитить и делиться им, а секрет остаётся вне его. Почему такое разделение стоит небольших лишних усилий, объясняет статья переменные окружения и секреты. Единственная ловушка - приоритет: если переменная задана, правка AuthKey в файле ничего не меняет, и со стороны это очень похоже на то, что сервер вас игнорирует. Старые версии сервера появились раньше этих переменных, поэтому перед тем как на них полагаться, проверьте примечания к релизу вашей сборки.
На хостинге с панелью
На хостинге с панелью ключ обычно вводится в отдельное поле, а не строкой в файле, и панель сама записывает его в конфиг или в окружение. На RE:NODE BeamMP - одна из игр, где нужны ваши собственные учётные данные: сервер создаётся сразу после подтверждения оплаты, а установка ждёт на вкладке Setup, пока вы вставите туда ключ. Там же его можно потом заменить.
Приватные и публичные серверы#
Параметр Private определяет, показывается ли сервер в списке, а не то, нужен ли ему ключ. Сервер отказывается запускаться с пустым AuthKey независимо от Private, поэтому даже серверу для четверых друзей нужен ключ из Keymaster.
| Параметр | В списке серверов | Подключение |
|---|---|---|
Private = false | Да, после авторизации | Через список или прямое подключение |
Private = true | Нет | Только прямое подключение |
Две детали важнее, чем кажутся:
- `Private = true` - это не пароль. Он лишь убирает сервер из списка. Любой, кто знает адрес и порт, всё равно может подключиться. Настоящий контроль доступа - это проверка на Lua в
onPlayerAuth; как это делается, показано в руководстве по плагинам, а в статье whitelist или пароль объясняется, почему список идентификаторов в любом случае лучше общего секрета. - Приватный режим заглушает сообщения об авторизации. В актуальных сборках приватный сервер по-прежнему отправляет heartbeat, но не выводит строку "Authenticated", причину отказа и предупреждение о недоступном бэкенде. Поэтому приватный сервер с плохим ключом в консоли выглядит совершенно здоровым. Если вы проверяете ключ, сначала проверьте его при
Private = false, прочитайте результат и только потом делайте сервер приватным.
Управление, смена и отзыв ключей#
Страница Keys - это весь интерфейс управления: ваши ключи, их названия, значение каждого и возможность удалить ключ. Удаление - это и есть отзыв. Когда ключ удалён, бэкенд его больше не распознаёт: сервер, запущенный с ним, получит отказ, а уже работающий под этим ключом не стоит ожидать в списке. Считайте удалённый ключ мёртвым везде и сразу.
Меняйте ключ, если он был раскрыт: его вставили в канал Discord, он виден на скриншоте или стриме, попал в публичный репозиторий или остался у администратора, который уже ушёл. Порядок важен, потому что сервер не должен оставаться вне списка дольше, чем длится перезапуск:
- Создайте в Keymaster новый ключ и дайте ему понятное название.
- Замените
AuthKeyвServerConfig.toml(или поле в панели, илиBEAMMP_AUTH_KEY) новым значением. - Перезапустите сервер и убедитесь, что в консоли появилась строка "Authenticated".
- Удалите старый ключ в Keymaster.
Для шага 1 нужен один свободный слот. Если заняты все слоты, придётся сначала удалить старый ключ и смириться с коротким простоем. Если вы считаете, что ключом злоупотребили, а не просто раскрыли его - например, под вашим именем появился незнакомый сервер, - BeamMP просит помимо удаления ключа открыть тикет Account Support через их Discord.
Не допускайте утечек: не отправляйте ключ в обращения к сторонним сервисам, не делайте скриншоты редактора конфига, не кладите его в общие шаблоны конфигурации и в историю Git. Если кому-то из команды нужно редактировать сервер, дайте ему доступ к файлам, не передавая аккаунт Discord; общий принцип описан в статье субпользователи и принцип минимальных привилегий. И храните резервную копию ServerConfig.toml так, чтобы она не лежала на виду вместе с ключом - об остальных элементах этой привычки рассказывает статья бэкапы, из которых действительно можно восстановиться.
Ошибки из-за плохого, отсутствующего или повторно используемого ключа#
Любая проблема с ключом проявляется в консоли сервера уже при первом heartbeat, если смотреть туда. Вот сообщения, которые выводят актуальные сборки 3.x, и что означает каждое:
| Сообщение в консоли | Причина |
|---|---|
No AuthKey specified in the "ServerConfig.toml" file... | AuthKey пуст. Сервер останавливается |
AuthKey specified is the wrong length and likely isn't valid. | Не 36 символов. Сервер продолжает работу |
Authenticated! | Бэкенд принял ключ |
Backend REFUSED the auth key. Reason: ... | Ключ неизвестен, удалён или уже используется |
Backend failed to respond to a heartbeat. | Бэкенд недоступен с сервера |
Формулировки немного меняются от релиза к релизу, поэтому ищите в консоли AuthKey, Authenticated и REFUSED, а не точную фразу. Привычки, которые делают это быстрым, описаны в статье как читать консоль.
Сервер останавливается сразу после запуска
Ключ пуст. Либо файл так и не сохранили, либо ключ вставили в строку комментария, либо отредактировали не тот ServerConfig.toml, который читает сервер, - это легко сделать, когда рядом в папке с бэкапом лежит старая копия. Откройте файл, который сервер действительно загружает, и проверьте строку в секции [General].
Предупреждение о неверной длине
Значение - не UUID из 36 символов. Обычные причины: пробел в начале или в конце, потерянный при ручном выделении последний символ, кавычки, вставленные внутрь кавычек, или случайно скопированный вместо ключа ID сообщения Discord. После этого предупреждения сервер продолжает работать, поэтому его легко пролистать мимо; затем бэкенд всё равно ответит отказом.
"Backend REFUSED the auth key"
Бэкенд увидел ключ и отклонил его. Причина после двоеточия приходит от BeamMP, поэтому прочитайте её, прежде чем гадать. На практике это одно из трёх: ключ удалён в Keymaster, в нём опечатка, которая сохранила правильную длину, или он уже используется другим работающим сервером. Для последнего случая решение - свой ключ на каждый сервер; классический виновник - тестовая копия, забытая включённой на домашнем компьютере.
"Backend failed to respond to a heartbeat"
Это проблема сети, а не ключа. Сервер не смог связаться с бэкендом по HTTPS, поэтому ответа - ни положительного, ни отрицательного - не получил. Проверьте, что исходящий трафик на порт 443 разрешён, что на машине работает DNS и не испытывает ли бэкенд BeamMP временные трудности. Прямые подключения при этом продолжают работать; страдает только список.
Сервер работает и авторизован, но его нет в списке
Сначала проверьте Private - это самая частая причина с большим отрывом. Затем подождите минуту-две, пока список обновится. Если сервера всё равно не видно, подключитесь напрямую по адресу и порту: если так получается, ключ и сервер в порядке, а проблема в отображении или фильтрации в клиенте. Если игроки не могут подключиться вообще, это проблема порта 30814 по TCP и UDP, разобранная в статье порты игровых серверов: объяснение, и Keymaster тут ничем не поможет.
FAQ#
Бесплатен ли BeamMP Keymaster?
Да. Каждый аккаунт Discord получает небольшой набор ключей бесплатно, этого хватает большинству тех, кто запускает один-два сервера. Дополнительные ключи дают за пожертвования или буст Discord по ставкам из официального FAQ.
Могут ли два сервера использовать один ключ?
Нет. Ключ может использовать один работающий сервер одновременно, второму бэкенд откажет. Двум серверам, включая тестовую копию, нужны два ключа - либо тестовую копию придётся останавливать, пока работает основной сервер.
Нужен ли ключ для приватного сервера?
Да. Сервер не запустится с пустым AuthKey, какое бы значение ни стояло в Private. Приватный режим лишь убирает сервер из публичного списка, а ещё скрывает сообщения об авторизации, поэтому проверяйте ключ, пока сервер публичный.
Что будет с сервером, если удалить его ключ?
Процесс не падает, а игроков, которые уже на сервере, не выкидывает, но ключ перестаёт быть действительным для бэкенда: ожидайте, что сервер потеряет место в списке, а при следующем запуске получит отказ. Вставьте новый ключ и перезапустите сервер, чтобы вернуть всё в нормальное состояние.
Можно ли перенести ключ на другой хостинг?
Да. Ключ принадлежит вашему аккаунту, а не машине, поэтому для переноса сервера достаточно скопировать ключ в новый конфиг и сначала выключить старый сервер. Если работают оба сразу, один получит отказ.
Может ли кто-то другой создать ключ для моего сервера?
Он может создать ключ под своим аккаунтом Discord, но тогда владельцем будет он и сможет удалить ключ в любой момент. Для сервера, за который вы отвечаете, создайте ключ сами и сами его вставьте.


