packs.host: proxy и раздаёте
пак с прокси самостоятельно. Тогда порт должен быть открыт, потому что именно оттуда
игроки скачивают пак, и трафик ваших бэкендов по умолчанию идёт через тот же открытый
порт.
Два вида маршрутов
Загрузку пака нельзя защитить секретом, потому что клиенту Minecraft просто вручают
ссылку. Пак — не секрет, так что это вам ничего не стоит.
/hub/v1/health возвращает слово nexohub и ничего больше. /nexohub doctor
использует его, чтобы проверить, действительно ли адрес, который вы раздали игрокам,
достигает вашего прокси — единственное, что нельзя проверить изнутри собственной сети.
Всё остальное требует секрет, а запрос без него отклоняется и логируется вместе с
адресом, с которого он пришёл:
Секрет
NexoHub генерирует 40-символьный секрет при первом запуске, записывает его вconfig.yml и печатает один раз. Каждый бэкенд получает один и тот же.
Относитесь к нему как к паролю. Его хранит каждый бэкенд, так что любой, кто проникнет
на один из ваших бэкендов, может читать и писать что угодно на хабе. Именно поэтому
/nexohub adopt требует большего, чем секрет: команда работает только в пятиминутном
окне, которое вы открываете её запуском, так что бэкенд не может самостоятельно
перезаписать файлы всей вашей сети.
Смена секрета означает смену на прокси и на каждом бэкенде, а затем /nexohub reload.
Разделение портов
Приhost: proxy ваши бэкенды разговаривают с прокси на том же порту, с которого
скачивают игроки. Это работает, но означает, что эти маршруты тоже достижимы из
интернета. (При делегированном хостинге по умолчанию разделять нечего: ни один порт
здесь изначально не открыт для игроков, и /nexohub doctor так и говорит вместо того,
чтобы предлагать это.)
Дайте бэкендам собственный порт:
public_address по-прежнему описывает публичный порт, потому что именно он попадает в
ссылку на ресурс-пак.
Голый порт означает loopback, так что достучаться до него могут только бэкенды на той
же машине, что и прокси. Если ваши находятся в другом месте, укажите адрес, который они
могут достичь:
api_address: "10.0.0.1:8086", а остальное пусть сделает ваш файрвол.Игроки по-прежнему могут скачивать пак на любом из двух портов, так что для них ничего
не ломается./nexohub doctor сообщает, какой из двух вариантов у вас работает:
note, а не bad. Общий порт — значение по умолчанию, и для небольшой сети это
нормальный выбор, но вы должны знать, что у вас именно он.
TLS
NexoHub говорит на простом HTTP и не имеет настроек сертификатов. Это означает, что секрет передаётся в открытом виде каждый раз, когда бэкенд общается с прокси. Если они на одной машине или в одной приватной сети, этот трафик никуда не уходит, и это не имеет значения. Если они на разных машинах через интернет, поставьте перед ними обратный прокси. nginx, Caddy или Cloudflare стоит иметь в любом случае:- он добавляет TLS, так что загрузка пака и трафик ваших бэкендов перестают быть открытым текстом
- он не даёт адресу вашего прокси попасть в ссылку на ресурс-пак, потому что
public_addressуказывает на обратный прокси - он может ограничивать частоту скачиваний, чего NexoHub не делает
public_address перестаёт иметь значение. Хаб всё равно слушает, так
что порт всё равно стоит закрыть для всех, кроме ваших бэкендов. См.
хостинг.