Режим обслуживания
⚠️ Настраивается в разделе Панель → Настройки → Платформа и требует права Управление настройками платформы.
Режим обслуживания отключает публичный сайт, не останавливая Pano. Пока он включён, посетители вообще не попадают на вашу тему — вместо неё Pano отдаёт собственную страницу прямо из бэкенда. Админ-панель, подключённые серверы Minecraft и API панели продолжают работать; публичные конечные точки API отвечают 503.
Страницу формирует сама Pano, поэтому режим обслуживания работает с любой темой и не требует от неё поддержки. Пока он включён, тему можно устанавливать, менять, обновлять или даже полностью сломать.
Как включить
- Откройте Панель → Настройки → Платформа → Режим обслуживания.
- Включите переключатель Включить режим обслуживания и введите пароль от учётной записи. Отключение сайта — и его обратное включение — требует повторной аутентификации, как и другие критические настройки. Остальная часть карточки сохраняется без пароля.
- Настройте параметры ниже и нажмите Сохранить.
Изменение действует со следующего запроса: без перезапуска, и ваша сессия в панели не прерывается. Пока режим включён, на каждой странице панели висит баннер, который нельзя закрыть.
⚠️ До завершения установки режим обслуживания неактивен. Пока идёт мастер настройки, он ничего не делает.
Настройки
- Кто может обойти — узел разрешений, который должен быть у пользователя. Оставьте пустым — будет использовано право доступа к панели (
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..
Ключи конфигурации
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:
java -Dpano.maintenanceFolder=/var/lib/pano/maintenance -jar Pano-<version>.jarЗаблокировали сами себя?
В порядке предпочтения:
- Войдите с машины, на которой запущена Pano — loopback никогда не блокируется.
- Задайте
enabled = falseв блокеmaintenanceфайлаconfig.conf. Подхватывается секунд за пять, без перезапуска и без пароля — этот же путь подходит, если переключатель в панели не принимает ваш пароль. - Снимите блокировки — из панели или удалив
maintenance/maintenance-mode-banned-ips.json. - Сбросьте страницу — удалите
maintenance/page.hbs, Pano создаст её заново. - Забыли свой адрес входа или закрылись узлом? Прочитайте или очистите
custom-login-urlиbypass-permission-nodeвconfig.conf.
⚠️ Перед большими ручными правками
config.confсделайте резервную копию. См. Руководство по конфигурации.