Skip to main content
Страница подписок — сайт, который клиент открывает по ссылке подписки: кнопки «добавить в приложение», QR-код, список подключений. Применённая схема — это ещё не выданный клиенту конфиг, и страница подписок ровно этот шаг и закрывает. Раздел находится в Инфраструктура → Страница подписок, сразу под схемами подключения.
Для кого: администратор панели. Требуемые права: subscription_page.view для чтения, subscription_page.deploy для всего остального. Лицензия: ключ core.subscription_page.

Что разворачивается

Панель ставит официальную страницу подписок Remnawave из её образа. Движок при этом — параметр, а не зашитое допущение: мастер, установщик и раздел читают его из одного места, поэтому своя страница со временем станет ещё одним значением, а не вторым мастером. Содержимое подписки страница берёт напрямую из Remnawave. Панель ей ничего не пересылает и ничего за неё не решает.

Что панель хранит, а что нет

Раздел владеет развёртыванием и наблюдением — и только ими. Вторая копия пользователей и подписок в панели разъехалась бы с Remnawave в тот же день, когда что-нибудь поменяли мимо панели. Поэтому её нет.

Почему отдельный сервер

Страница подписок — публичный сайт, который открывает каждый ваш клиент. Держать его на одной машине с панелью или с нодой категорически не рекомендуется:
  • одна дыра в публичном сайте — и злоумышленник оказывается там же, где ключи ко всей инфраструктуре;
  • адрес общий: кто нашёл страницу, тот нашёл и сервер за ней;
  • нагрузка от клиентов ложится на сервер, который обслуживает вашу инфраструктуру;
  • порты 80 и 443 приходится делить с тем, что там уже стоит.
Мастер этого не запрещает. Если выбранный сервер окажется сервером панели или узнанной нодой, он покажет отдельный экран с предупреждением и на несколько секунд оставит кнопку подтверждения недоступной — чтобы экран прочитали, а не пролистали. Решение остаётся за оператором; если ставите так временно, планируйте перенос.
Под страницу подписок нужен отдельный чистый сервер: свежий Linux, где кроме ОС и доступа по SSH ничего нет. Установщик ставит Docker, поднимает контейнеры страницы и занимает 80 и 443 под сертификат — на занятой машине это упирается в чужие порты. Подробнее — Чистый сервер.
Совмещение со страницей статуса — не предупреждение, а отказ: её рантайм сам держит 80 и 443 и чужие сайты отдавать не умеет, поэтому мастер потребует другой сервер.

Что видно, когда страница стоит

Три плитки наверху отвечают на три вопроса: отвечает ли страница, сколько осталось сертификату и что со связью с Remnawave. Панель ходит на публичный адрес — тот самый, который открывает клиент, — каждые пять минут; то же делает кнопка Проверить. Срок сертификата снимается там же, из TLS-рукопожатия: «когда он истекает» спрашивают тогда, когда сайт уже не открывается, то есть когда сходить и посмотреть уже нельзя. Ниже идут карточки:
  • Связь с Remnawave — что увидит клиент, перейдя по ссылке подписки. Настройки, у которых в панели есть другой владелец, раздел показывает, но не меняет. См. Связь с Remnawave.
  • История операций — что панель делала с этой страницей и чем это кончилось.
  • Обновить страницу — свежий образ и перезапуск; домен и сертификат не трогаются.
  • Убрать из панели — панель перестаёт следить за страницей. Сама страница продолжает работать, и выданные клиентам ссылки остаются рабочими.
Пока страница не поставлена, раздел показывает мастер и ничего больше: пустой обзор с прочерками вместо домена и сертификата предлагал бы разглядывать отсутствие того, чего ещё не заводили.

Права

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

Лицензия

Раздел работает по ключу core.subscription_page. Без действующего тарифа он остаётся читаемым: развёрнутая страница продолжает обслуживать клиентов, и оператор обязан видеть её домен и срок сертификата. Разворачивать, обновлять и менять её панель при этом откажется и скажет, почему. Второй проверки на стороне самой страницы нет, и это не упущение: разворачивается страница Remnawave, которая про лицензии Axottle ничего не знает и продолжала бы работать при любом их состоянии. Честная граница здесь — панель, а не обещание выключить чужой софт.

Ограничения

  • В разделе видна одна страница — установленная.
  • Совмещение мастер узнаёт по адресу, который он и так знает: свой публичный адрес, петлевой, сервер страницы статуса, адреса нод из инвентаря. Если вы указали сервер каким-то другим адресом, предупреждения не будет — доказательства тождества машин панель не строит.
  • Панель не может снести сервер страницы: удаление стирает только запись в панели. Если сервер больше не нужен, его нужно погасить руками.
  • Домен страницы в Remnawave (SUB_PUBLIC_DOMAIN) панель не выставляет: это переменная окружения чужого процесса. Пока он не выставлен, Remnawave продолжает выдавать клиентам ссылки на старый адрес — см. Связь с Remnawave.
  • Обновление панель выполняет не сама: реквизиты доступа к серверу она не хранит и ради обновления их не спрашивает, а выдаёт готовую команду.
  • Без подключения к Remnawave страницу ставить нечем: и адрес API, и токен уезжают в установщик. Подключений несколько — придётся выбрать, чьи подписки показывает эта страница.
Связанные страницы: Установка страницы подписок, Связь с Remnawave, Подключение Remnawave, Чистый сервер.