Конфигурация сервера
Настройки сервера
server {
host = "0.0.0.0"
http-port = 80
https-port = 443
ssl-mode = "DISABLED" # "DISABLED", "LETS_ENCRYPT", "MANUAL"
redirect-https = false
ssl-cert = null # Необработанное содержимое сертификата (если MANUAL)
ssl-key = null # Необработанное содержимое закрытого ключа (если MANUAL)
ui-max-memory-mb = 200 # Макс. МБ на запускаемый UI-процесс; 0 отключает
trusted-proxies = [] # напр. ["127.0.0.1", "10.0.0.5"] — прокси, которым разрешён X-Forwarded-For
}host:0.0.0.0делает панель доступной для внешних сетей;127.0.0.1ограничивает доступ только локальным сервером.http-port: Порт по умолчанию для HTTP-трафика (обычно 80).https-port: Порт по умолчанию для HTTPS-трафика (обычно 443).ssl-mode:DISABLED: Сервер HTTPS не будет запущен.LETS_ENCRYPT: Автоматически пытается получить и настроить SSL-сертификат. Примечание: Для работы этого режима должен быть настроен правильныйwebsite-url, http-port должен быть установлен на80, а https-port — на443.MANUAL: Позволяет вам предоставить собственный сертификат и закрытый ключ напрямую черезssl-certиssl-key.
redirect-https: Если установлено значениеtrue, весь HTTP-трафик будет автоматически перенаправляться на HTTPS.ui-max-memory-mb: Потолок памяти (МБ) для каждого запускаемого UI-процесса (setup-ui, panel-ui, активная тема); Pano перезапускает превысивший. По умолчанию 200,0отключает. См. Память и лимиты.trusted-proxies: IP-адреса обратных прокси, которым разрешено задаватьX-Forwarded-For. По умолчанию список пуст: заголовок игнорируется, и каждый запрос считается прямым подключением. Заполните его, если Pano работает за Nginx, Apache или Cloudflare, иначе функции, определяющие посетителя по адресу — например, блокировки входа режима обслуживания — увидят прокси, а не посетителя.- Для продвинутых пользователей: Для сложных настроек вы всё равно можете использовать reverse proxy (Nginx, Apache) или Cloudflare.
Обратный прокси: поддержание WebSocket-соединения
Каждый Minecraft-сервер, подключённый через pano-mc-plugin, держит долгоживущее WebSocket-соединение с GET /api/server/connection. Если Pano работает за обратным прокси (Nginx, Cloudflare, облачный балансировщик нагрузки), простаивающее WebSocket-соединение закрывается по тайм-ауту простоя самого прокси — у Nginx proxy_read_timeout по умолчанию равен 60 секундам — задолго до того, как Pano или плагин сами бы отказались от соединения. Логика переподключения плагина маскирует эту проблему (он просто переподключается), но каждое переподключение заново выполняет весь обмен ключами RSA/AES, поэтому соединение, выглядящее полностью здоровым, на самом деле тихо расходует CPU, засоряет логи переподключениями и открывает короткое окно, в котором сообщение «в пути» может быть потеряно.
Чтобы это предотвратить, ping отправляют обе стороны — плагин отправляет Pano собственные WebSocket-фреймы ping, а Pano отправляет плагину свои собственные ping-фреймы; каждая сторона делает это независимо и по своему расписанию, а на каждый входящий ping собеседник автоматически отвечает pong на уровне протокола WebSocket. Это keepalive на уровне протокола, вне слоя шифрования сообщений, который никогда не затрагивает полезную нагрузку AES-256-GCM. Этими двумя направлениями управляют две отдельные конфигурации — по одной на каждую сторону:
- Ping плагина — две настройки в собственном
config.confплагина (в папке данных плагина Pano на Minecraft-сервере — не в конфигурации самого Pano, показанной в другом месте этой страницы):heartbeat-interval: количество секунд между ping. По умолчанию 25.heartbeat-timeout: сколько секунд ждать ответа, прежде чем соединение будет считаться мёртвым и плагин переподключится. По умолчанию 75.- Проверяется при запуске:
heartbeat-intervalдолжен быть больше0(верхней границы нет);heartbeat-timeoutдолжен оставлять запас как на двойной интервал, так и на 10-секундный бюджет закрывающего рукопожатия — то естьheartbeat-timeout ≥ (2 × heartbeat-interval) + 10. Пара вне этих границ не мешает плагину загрузиться — записывается предупреждение, и оба значения возвращаются к умолчанию 25s / 75s.
- Собственный ping Pano — блок
mc-server-connectionв собственномconfig.confPano, см. Подключение Minecraft-сервера:heartbeat-interval-seconds: количество секунд между ping, которые Pano отправляет каждому подключённому Minecraft-серверу. По умолчанию 25.heartbeat-timeout-seconds: сколько секунд ждать pong, прежде чем Pano сочтёт это соединение мёртвым и закроет его. По умолчанию 75.- Проверяется при запуске:
heartbeat-interval-secondsдолжен быть больше0и не больше 55;heartbeat-timeout-secondsдолжен быть как минимум вдвое больше интервала. Пара вне этих границ не мешает Pano запуститься — записывается предупреждение, и оба значения возвращаются к умолчанию 25s / 75s.
Heartbeat помогает только в том случае, если тайм-аут простоя вашего прокси больше более короткого из двух интервалов выше. Если перед Pano работает Nginx, увеличивайте тайм-аут только для WebSocket-location — увеличение его на весь блок server также изменит, сколько Nginx ждёт при обычных HTTP-запросах, а это обычно нежелательно. Продублируйте в этом location и полный набор директив proxy_set_header: одноимённая директива на более низком уровне заменяет весь унаследованный набор, а не дополняет его, поэтому location, задающий только Upgrade/Connection, незаметно отбрасывает Host / X-Real-IP / X-Forwarded-For, заданные выше — в этом случае Pano запишет адрес каждого подключённого Minecraft-сервера как собственный IP прокси вместо настоящего, тихо сломав инструкции по trusted-proxies, приведённые выше на этой странице:
location /api/server/connection {
# Замените 8080 на свой server.http-port из config.conf — НЕ используйте здесь 80, хотя это
# значение по умолчанию: в этой конкретной настройке порт 80 слушает сам Nginx, поэтому
# проксирование на 127.0.0.1:80 закольцуется обратно на Nginx, а не попадёт в Pano.
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 90s;
proxy_send_timeout 90s;
proxy_socket_keepalive on;
}90 секунд оставляют 25-секундному heartbeat по умолчанию — с любой стороны — достаточный запас, прежде чем Nginx иначе закрыл бы простаивающий сокет.
Cloudflare и большинство облачных балансировщиков нагрузки применяют тот же класс тайм-аута простоя к проксируемым соединениям — см. Использование Pano за Cloudflare.
Инициализация, UI и обновления
init-ui = true
accept-plugin-auth = true
jwt-key = "<auto-generated-base64>"
update-period = "ONCE_PER_DAY" # "ONCE_PER_DAY", "ONCE_PER_WEEK" или "ONCE_PER_MONTH"
release-channel = "RELEASE" # "ALPHA", "BETA", "RELEASE"
console-history-limit = 50Детали
init-ui: запускает мастер настройки, панель и движок тем при запуске.accept-plugin-auth: включает/отключает подключение плагина Pano MC (по умолчанию:true). Можно управлять в модальном окне Подключить сервер. Для лучшей безопасности отключайте его, если он не используется.jwt-key: автоматически сгенерированный Base64 ключ аутентификации — не изменяйте вручную.update-period: определяет частоту проверки обновлений.release-channel: определяет, какому потоку обновлений следует Pano:ALPHA: Ранний доступ к новым функциям. Высокий риск ошибок и ломающих изменений.BETA: Функции перед выпуском с меньшим риском, чем в Alpha, но всё еще могут содержать ошибки.RELEASE: Самая стабильная версия. Получает обновления реже, но обеспечивает максимальную надежность.
console-history-limit: определяет максимальное количество команд, хранящихся в истории терминала и графического интерфейса консоли (по умолчанию:50, установите0для отключения).
Загрузка файлов и пути
file-uploads-folder = "file-uploads"
file-paths = {
favicon {
path = "uploads/favicon.png"
hash = "<sha256-hash>"
}
websiteLogo {
path = "uploads/logo.png"
hash = "<sha256-hash>"
}
}Примечания
- Управляется через Панель → Настройки → Веб-сайт.
- Каждая запись — это объект FileInfo, содержащий:
path: Относительный путь к файлу.hash: Хэш SHA-256, используемый Pano для проверки целостности файла.
- Поддерживаются только две записи:
faviconиwebsiteLogo. - Эти поля автоматически управляются Pano — ручные изменения будут перезаписаны при обновлении или изменении настроек.
URL-адреса сервисов Pano (не изменять)
pano-api-url = "..." # устанавливается автоматически в зависимости от среды
pano-website-url = "..."- Эти адреса управляются Pano автоматически.
- Изменение этих параметров может нарушить связь с экосистемой Pano.
Прогресс настройки (внутренний)
setup {
step = 0
}Использование
- Отслеживает прогресс установки.
- Всегда останавливайте Pano перед редактированием.
step = 0: перезапускает мастер настройки.step = 5: отмечает настройку как завершенную.- Редактируйте только по указанию службы поддержки; неправильные изменения могут привести к поломке установки.