Настройки панели
Большую часть конфигурации панели можно поменять на странице Настройки, без 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, сбросьте его в настройках.