Skip to content

Режим обслуживания

⚠️ Настраивается в разделе Панель → Настройки → Платформа и требует права Управление настройками платформы.

Режим обслуживания отключает публичный сайт, не останавливая Pano. Пока он включён, посетители вообще не попадают на вашу тему — вместо неё Pano отдаёт собственную страницу прямо из бэкенда. Админ-панель, подключённые серверы Minecraft и API панели продолжают работать; публичные конечные точки API отвечают 503.

Страницу формирует сама Pano, поэтому режим обслуживания работает с любой темой и не требует от неё поддержки. Пока он включён, тему можно устанавливать, менять, обновлять или даже полностью сломать.

Как включить

  1. Откройте Панель → Настройки → Платформа → Режим обслуживания.
  2. Включите переключатель Включить режим обслуживания и введите пароль от учётной записи. Отключение сайта — и его обратное включение — требует повторной аутентификации, как и другие критические настройки. Остальная часть карточки сохраняется без пароля.
  3. Настройте параметры ниже и нажмите Сохранить.

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

⚠️ До завершения установки режим обслуживания неактивен. Пока идёт мастер настройки, он ничего не делает.

Настройки

  • Кто может обойти — узел разрешений, который должен быть у пользователя. Оставьте пустым — будет использовано право доступа к панели (pano.panel.access.panel), о чём говорит подсказка в поле. Заполните — например admins.test — и пустите тех, кто должен видеть сайт, но не панель. Узел сопоставляется буквально и не может содержать *.
  • Показывать кнопку входа — добавляет кнопку входа на страницу обслуживания.
  • Свой адрес входа — секретный адрес, по которому вместо неё отдаётся форма входа, например /staff-entrance. Доступен, только пока кнопка выключена; оставьте пустым — форма останется на /login.
  • Показывать логотип сайта — выводит логотип из раздела Панель → Настройки → Веб-сайт.
  • Изменить страницу обслуживания — редактор исходников страницы. См. Редактирование страницы.
  • Заблокированные IP-адреса — список, который закрыла форма входа. См. Заблокированные адреса.
Показывать кнопку входаСвой адрес входаАдрес с формой входа
Вкл.(игнорируется, поле неактивно)/login
Выкл.(пусто)/login
Выкл./staff-entrance/staff-entrance

Неавторизованных посетителей, открывающих /panel или сохранённую ссылку под ним, Pano перенаправляет на адрес с формой, чтобы закладка на панель всё-таки куда-то вела.

Что кто видит

Посетители получают страницу обслуживания с 503 Service Unavailable и Retry-After: поисковые системы читают это как «временно недоступно, зайдите позже», а не «страницы больше нет». Ничего из вашей темы не отдаётся, и страница не тянет файлы темы, поэтому отображается даже когда ни одна тема не может запуститься.

Сотрудники с правом обхода видят ту же страницу плюс кнопку Пропустить режим обслуживания. Нажатие открывает настоящую тему — но только до перезагрузки страницы: пропуск расходуется тем переходом, для которого был выдан, поэтому F5, новая вкладка или введённый вручную адрес возвращают страницу обслуживания. Так задумано: никто не должен забыть, что сайт закрыт. Для владельца доступа к панели /panel не блокируется в любом случае, а доступ к API зависит от права, а не от пропуска.

Право проверяется на сервере при каждом запросе, так что отзыв закрывает доступ сразу — правда, изменение может идти до минуты через кэш разрешений Pano.

Вход

Форма входа намеренно минимальна: имя пользователя или e-mail и пароль. Плагины входа здесь не работают — ни капчи, ни 2FA, ни social или premium login — потому что смысл этой двери в том, чтобы она открывалась, даже когда сломался именно плагин. Как только режим выключен, плагины возвращаются.

Форма никогда не сообщает, существует ли имя пользователя, и ограничена по частоте запросов на адрес.

Заблокированные адреса

С одного адреса допускаются три неудачных входа; следующий блокирует его навсегда. Заблокированный посетитель видит страницу обслуживания без формы, только с уведомлением. Успешный вход обнуляет счётчик.

  • Управляйте списком через Заблокированные IP-адреса внизу карточки — снимите блокировку с одного адреса или нажмите Очистить всё.
  • Loopback (127.0.0.1, ::1) никогда не считается и не блокируется, так что доступ к машине из терминала — всегда путь внутрь.
  • Блокировки лежат в maintenance/maintenance-mode-banned-ips.json и переживают перезапуск. Каждая автоматическая блокировка попадает в журнал активности панели.

⚠️ За обратным прокси заполните server.trusted-proxies — см. конфигурацию сервера. Если список пуст, Pano полностью игнорирует X-Forwarded-For, и все запросы выглядят приходящими от прокси: неудачи одного посетителя заблокируют всех.

Редактирование страницы

Изменить страницу обслуживания открывает редактор исходников с живым предпросмотром под ним и по вкладке на файл. Все пять файлов лежат в рабочей папке Pano и являются обычными шаблонами Handlebars — визуального редактора нет, разметку вы пишете сами.

ВкладкаФайл
Страницаmaintenance/page.hbs — документ целиком
Форма входаmaintenance/login.hbs
Кнопка входаmaintenance/login-button.hbs
Кнопка пропускаmaintenance/skip.hbs
Уведомлениеmaintenance/notice.hbs

Предпросмотр следует за открытой вкладкой и рисует то состояние страницы, в котором этот блок появляется, — вы всегда смотрите именно на то, что правите. Сломанная директива видна там, а не на живом сайте.

Нажатие Сохранить записывает файлы и выставляет custom-page = true: Pano перестаёт собирать страницу из title, message-html и custom-css, а обновление с новым оформлением по умолчанию больше не заменяет ваши файлы. Сбросить к стандартной восстанавливает все пять и выключает это.

Страница несёт эти слоты; уберёте один — и то, что он приносит, не появится.

СлотВо что превращается
{{{noticeBlock}}}Плашка уведомления, если она есть
{{{loginBlock}}}Кнопка входа или форма входа по адресу входа
{{{skipBlock}}}Кнопка Пропустить режим обслуживания
{{{creditBlock}}}Строка Создано с помощью Pano
{{logoUrl}} · {{lang}}Адрес логотипа, код языка платформы
{{defaultTitle}} · {{{defaultMessage}}}Собственный текст Pano на языке платформы

У блоков есть свои переменные — подписи, {{action}}, {{url}}, {{text}} и прочие. Оставьте {{nonce}} и {{nonceField}} в форме входа: они несут проверку источника запроса, которая не даёт чужому сайту добиться блокировки адресов ваших посетителей.

Все подписи и сообщения берутся из переводов Pano и следуют настройке Панель → Настройки → Платформа → Предпочтения → Язык. Переписать их можно в разделе Панель → Переводы, тип PLATFORM, под maintenance..

Ключи конфигурации

jsonc
maintenance {
  enabled = false

  # Узел для обхода. Пусто = pano.panel.access.panel. Без подстановочных знаков.
  bypass-permission-node = ""

  show-login-button = true

  # Пусто = /login. Учитывается, только пока show-login-button выключен.
  custom-login-url = ""

  show-site-logo = true

  # Из этого собирается стандартная страница; из панели не редактируется.
  title = ""
  message-html = ""
  custom-css = ""

  # Неудачных попыток с одного IP до блокировки. 0 отключает блокировку.
  max-login-attempts = 3

  # Становится true, когда страница записана из редактора панели.
  custom-page = false
}

Папку можно перенести при запуске, как и другие папки Pano:

bash
java -Dpano.maintenanceFolder=/var/lib/pano/maintenance -jar Pano-<version>.jar

Заблокировали сами себя?

В порядке предпочтения:

  1. Войдите с машины, на которой запущена Pano — loopback никогда не блокируется.
  2. Задайте enabled = false в блоке maintenance файла config.conf. Подхватывается секунд за пять, без перезапуска и без пароля — этот же путь подходит, если переключатель в панели не принимает ваш пароль.
  3. Снимите блокировки — из панели или удалив maintenance/maintenance-mode-banned-ips.json.
  4. Сбросьте страницу — удалите maintenance/page.hbs, Pano создаст её заново.
  5. Забыли свой адрес входа или закрылись узлом? Прочитайте или очистите custom-login-url и bypass-permission-node в config.conf.

⚠️ Перед большими ручными правками config.conf сделайте резервную копию. См. Руководство по конфигурации.