Свой сервер
Попасть в список серверов
Сервер без ключа работает точно так же, и на него можно зайти по адресу через Прямое подключение. Но в списке серверов его нет, а имена игроков он не проверяет.
С ключом сервер сообщает о себе NodeMP, появляется в лаунчере и на nodemp.com/servers, а аккаунт каждого игрока проверяется при входе.
Создать ключ
Заголовок раздела «Создать ключ»Нужен аккаунт NodeMP с подтверждённой почтой и привязанным Discord. Discord привязывается в разделе Подключения аккаунта.
- Войдите на nodemp.com и откройте Мои серверы.
- Введите название, по которому вы узнаете сервер, и создайте ключ.
- Сайт покажет Host ID и Host secret. Секрет показывается один раз — скопируйте его сразу.
Один ключ — для одного сервера. В Моих серверах видно все ключи и когда каждый сервер последний раз выходил на связь.
Вписать ключ в настройки
Заголовок раздела «Вписать ключ в настройки»В server.toml уже есть таблица [listing] с пустыми url, host_id и host_secret.
Заполните их:
[listing]url = "https://api.nodemp.com"host_id = "…"host_secret = "…"То же самое переменными окружения, для Docker или systemd. Эти имена не менялись:
NODE_DIRECTORY_URL=https://api.nodemp.comNODE_DIRECTORY_HOST_ID=…NODE_DIRECTORY_HOST_SECRET=…Перезапустите сервер. Нужны все три значения. Если url пустой, сервер просто не сообщает о себе;
если url задан, а ключа нет, сервер запустится без списка и напишет об этом в логе. Храните
секрет как пароль.
Что происходит дальше
Заголовок раздела «Что происходит дальше»При запуске сервер пишет в лог announcing this server to https://api.nodemp.com, а когда ключ
принят — listed in the server browser. Потом он регулярно, обычно раз в 15 секунд, сообщает своё
имя, карту, число игроков и мест, теги и список модов. Если NodeMP недоступен, сервер продолжает работать и повторяет
попытки сам.
Ещё NodeMP проверяет снаружи, что до сервера можно достучаться по его порту. Недоступный сервер в
списке не показывается, даже если в логе есть listed in the server browser. Поэтому порт должен
быть открыт и проброшен, а проверять его нужно не из своей сети.
Пока сервер в списке, каждый вход проходит проверку: лаунчер игрока приносит одноразовый билет, сервер сверяет его с NodeMP и получает имя аккаунта. Игрок в режиме Test Drive получает гостевое имя. Сервер без ключа ничего не проверяет и берёт имя, которое прислал лаунчер.
Как сервер выглядит в списке
Заголовок раздела «Как сервер выглядит в списке»Остальные ключи [listing] задают карточку сервера и то, кого он пускает:
[listing]description = "Фрирум на West Coast, без таранов"mode = "freeroam"tags = "freeroam, no-crash, ru"guests = truedescription— одно-два предложения под именем.mode— одно слово, отдельная колонка в списке:freeroam,racing,roleplay…tags— до восьми тегов через запятую. По ним игроки фильтруют список.guests = falseне пускает игроков без аккаунта. В лаунчере такой сервер помечен «Нужен аккаунт».public = falseубирает сервер из общего списка. Те, кто знает адрес, по-прежнему видят его онлайн.admit_when_downрешает, что делать, если NodeMP недоступен в момент входа:false(по умолчанию) — не пускать,true— пускать как непроверенного гостя.
fingerprint, ca_file и allow_http нужны только для собственного каталога серверов. Для
api.nodemp.com их не пишут.
В подробностях о сервере, под картой, лаунчер и nodemp.com/servers
показывают кнопки на собственные страницы сервера, и на каждой написан её домен. Ссылок пять, все в
[listing]:
[listing]discord = "https://discord.gg/abc123"rules = "https://example.com/rules"site = "https://example.com"donate = "https://example.com/donate"voice = "mumble://voice.example.com:64738"- Ссылка начинается с
https://. Дляvoiceможно ещёmumble://илиts3server://: такой адрес не открывается, а копируется, потому что открыть его может только программа голосового чата. discordдолжен быть приглашением:https://discord.gg/…илиhttps://discord.com/invite/….- Не длиннее 256 символов, без пробелов и без
user:password@. - Ссылку, которая нарушает эти правила, сервер при запуске выбрасывает и предупреждает, назвав ключ:
[listing] discord = "…" is not a link the server list shows: …; left out. Всё остальное в списке работает как обычно.
В окружении это NODE_DIRECTORY_LINK_DISCORD, NODE_DIRECTORY_LINK_RULES,
NODE_DIRECTORY_LINK_SITE, NODE_DIRECTORY_LINK_DONATE и NODE_DIRECTORY_LINK_VOICE.
Картинка
Заголовок раздела «Картинка»В карточке сервера показывается картинка карты. Откуда она берётся:
- Из
preview, если он задан: ваш JPEG или PNG до 2 МБ. Относительный путь считается от рабочей папки. - Иначе для своей карты из
content/— её собственная картинка из архива. - Для стоковой карты NodeMP показывает картинку из игры, сервер ничего не отправляет.
Отпечаток сервера
Заголовок раздела «Отпечаток сервера»Лаунчеры узнают сервер по отпечатку его TLS-сертификата. Он пишется в лог при каждом запуске:
TLS 1.3 enabled — certificate fingerprint (SHA-256): …. Отпечаток меняется, только если потерять
или заменить node_cert.pem и node_key.pem, поэтому их стоит хранить в резервной копии. Игроки,
которые заходили по адресу, запоминают отпечаток и не подключатся к серверу с другим.
Сменить или удалить ключ
Заголовок раздела «Сменить или удалить ключ»В Моих серверах кнопка Сменить секрет выдаёт новый секрет (он тоже показывается один раз), а
старый перестаёт работать. Впишите новый host_secret и перезапустите сервер. Делайте так, если
секрет мог утечь. Удалить удаляет ключ: сервер продолжит работать, но из списка пропадёт.
Сервера нет в списке
Заголовок раздела «Сервера нет в списке»| В логе | Почему | Что сделать |
|---|---|---|
The directory refused this server's credentials: … |
Неверный Host ID или секрет, секрет сменили или ключ удалили. | Сверьте с Моими серверами. Если сомневаетесь, смените секрет и впишите новый. |
This server is NOT announced to a directory: … |
Нет host_id или host_secret. |
Заполните url, host_id и host_secret в [listing]. |
server.toml has settings this server does not read: [listing] Url, … |
Ключи записаны под именами из версий до 1.9.0, а сервер — версии 1.9.0. | Впишите их как url, host_id и host_secret или обновите сервер до 1.9.1. |
Could not reach the directory at https://api.nodemp.com: … |
Нет исходящего HTTPS, не работает DNS или NodeMP недоступен. | Проверьте curl https://api.nodemp.com/healthz на машине сервера. Сервер повторяет попытки сам. |
listed in the server browser, но в лаунчере сервера нет |
NodeMP не достаёт до порта снаружи, или стоит public = false. |
Откройте и пробросьте порт. Список обновится примерно через 15 секунд. |
Игроков не пускает с The server could not verify your account with the directory (…) |
NodeMP был недоступен, когда они заходили. | Подождите. На сервере с Test Drive можно включить admit_when_down. |