Настройки панели

Большую часть конфигурации панели можно поменять на странице Настройки, без SSH. Сохранённые там значения лежат в /var/lib/wardpane/settings.json и перекрывают /opt/wardpane/.env.

Группы

Группа Что в ней
Доступ к панели имя и пароль для входа, вход под root, белый список IP, ограничения от подбора пароля, время жизни сессии
Сертификаты email для Let’s Encrypt, staging (тестовый режим), сертификат для IP, публичные адреса IPv4 и IPv6
Интеграции API-токен Cloudflare, ключ MaxMind для обновления GeoIP, публичные списки IP
PHP уровень песочницы
Сервер сведения только для чтения
Перезапустить панель перезапускает службу панели

Откуда берутся значения

Порядок такой: встроенное значение по умолчанию, затем .env, затем settings.json. У каждой настройки видно, откуда взято её текущее значение («по умолчанию», «из .env», «из панели»), и её можно сбросить к значению из .env одной кнопкой, «Сбросить к .env».

Токен Cloudflare и ключ MaxMind в браузер не передаются, страница только показывает, заданы ли они. На диске они лежат открытым текстом, так же как в .env. Читать файл может только панель; он попадает в резервные копии при обновлении, а их может читать только root.

При каждом сохранении прежний файл остаётся как settings.json.bak. Карточка сохраняется целиком или не сохраняется совсем, и если что-то не так, все ошибки сразу видны у своих полей.

Что и когда применяется

Имя и пароль для входа, PANEL_ALLOW_IPS, ограничения входа, время жизни сессии, ACME_EMAIL, Cloudflare, MaxMind и IP_FEEDS начинают действовать сразу после сохранения.

ACME_STAGING, IP_CERT, PUBLIC_IP, PUBLIC_IPV6 и PHP_SANDBOX вступают в силу после перезапуска. У них стоит пометка «после перезапуска», а если вы сохранили одну из них, страница «Главная» напомнит, что панель пора перезапустить.

Порты, BIND_ADDRESS и пути (DATA_DIR, WWW_ROOT, GEOIP_DIR) задаются только в .env. Под эти значения установщик настраивает файрвол, юниты systemd, права доступа и резервные копии, поэтому меняйте их в .env и запускайте install.sh ещё раз.

Смена пароля и имени

Для пароля есть отдельная форма в разделе «Доступ к панели». Сначала вводится текущий пароль, и неверный считается неудачной попыткой входа. Новый пароль должен быть длиной от 12 до 128 символов; панель хранит его как хеш scrypt, а после смены завершает все остальные сессии. С именем для входа так же: нужен текущий пароль, остальные сессии закрываются.

Белый список IP

PANEL_ALLOW_IPS не сохранится, если в новом списке нет адреса, с которого вы работаете прямо сейчас, поэтому закрыть себе доступ к панели не получится. Если вы подключаетесь по IPv6 и разрешили только свой точный адрес, а не всю свою /64, панель предупредит об этом: адреса IPv6 со временем меняются. Подробнее в разделе безопасность панели.

Перезапуск панели

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

sudo systemctl restart wardpane

Потерян доступ

Если вы забыли имя или пароль, заданные в панели, закрыли себе доступ белым списком или повредился settings.json, выполните на сервере:

sudo node /opt/wardpane/bin/unlock-login.js --reset-access   # имя, пароль, белый список и вход под root снова из .env
sudo node /opt/wardpane/bin/unlock-login.js --reset-access=allow-ips   # только PANEL_ALLOW_IPS (или user, password, root-login)
sudo systemctl restart wardpane

Предыдущий файл сохраняется как settings.json.before-reset-<time>; остальные настройки не меняются. Чтобы сбросить пароль, в .env должен быть задан PANEL_PASSWORD.

Справочник по .env

Переменная По умолчанию В панели Значение
PANEL_USER / PANEL_PASSWORD admin / нет сразу вход в панель
PANEL_PORT 1500 нет порт панели
HTTP_PORT / HTTPS_PORT / BIND_ADDRESS 80 / 443 / 0.0.0.0 нет порты и адрес для сайтов
ACME_EMAIL нет сразу email учётной записи Let’s Encrypt; без него сертификаты не выпускаются
ACME_STAGING false перезапуск тестовая среда Let’s Encrypt
IP_CERT true перезапуск выпустить сертификат для IP сервера
PUBLIC_IP определяется перезапуск публичный IPv4 сервера
PUBLIC_IPV6 все глобальные адреса IPv6 перезапуск публичные адреса IPv6 или none; используются для проверки записей AAAA перед заказом сертификатов
WWW_ROOT /var/www нет корень папок сайтов
DATA_DIR /var/lib/wardpane нет данные, настройки панели, сертификаты, учётная запись ACME
GEOIP_DIR $DATA_DIR/geoip нет базы MaxMind .mmdb
MAXMIND_ACCOUNT_ID / MAXMIND_LICENSE_KEY / MAXMIND_EDITIONS нет сразу автоматическое обновление GeoIP
CLOUDFLARE_API_TOKEN / CLOUDFLARE_LIFT_UNDER_ATTACK нет / true сразу доступ к API Cloudflare; снимать ли режим Under Attack на время проверки, если правило-исключение создать не удалось
IP_FEEDS нет сразу публичные списки блокировки IP: spamhausDrop, fireholLevel1, blocklistDe
PANEL_ALLOW_IPS нет сразу кто вообще может достучаться до панели
PHP_SANDBOX strict перезапуск strict или basic
LOGIN_MAX_ATTEMPTS / LOGIN_BLOCK_MINUTES 5 / 15 сразу защита от подбора пароля
SESSION_HOURS / SESSION_IDLE_MINUTES 12 / 120 сразу максимальная длительность сессии и выход при бездействии
ROOT_LOGIN false сразу разрешить вход под root с паролем root

После правки .env перезапустите панель командой sudo systemctl restart wardpane. Значение, сохранённое в панели, перекрывает .env; чтобы снова действовало значение из .env, сбросьте его в настройках.