Skip to content

Развёртывание

vminfo --web — лёгкая панель для одного хоста. Ей не нужна база данных, и это не централизованная система мониторинга. Держите встроенный HTTP-сервер внутри доверенной границы.

Только локальный доступ

Самая безопасная конфигурация по умолчанию не требует аутентификации:

bash
vminfo --web

Сервис слушает 127.0.0.1:20021. Откройте http://127.0.0.1:20021 на той же машине или проверьте API:

bash
curl -fsS http://127.0.0.1:20021/api/v1/health

Без аутентификации принимаются только Host-заголовки с localhost или loopback-IP, что блокирует DNS rebinding.

Удалённый доступ через SSH

Для индивидуального администрирования оставьте listener на loopback и создайте туннель:

bash
# На сервере
vminfo --web

# На рабочей станции
ssh -L 20021:127.0.0.1:20021 user@server

После этого откройте http://127.0.0.1:20021 на рабочей станции. Порт панели не публикуется в сети сервера.

Доступ через обратный HTTPS-прокси

Для постоянного адреса оставьте vminfo на loopback и используйте HTTPS-прокси на том же хосте:

bash
vminfo --web --bind 127.0.0.1 --port 20021 --token

--token без значения создаёт случайный token и готовый URL. Можно передать фиксированное значение:

bash
vminfo --web --bind 127.0.0.1 --port 20021 --token "$VMINFO_WEB_TOKEN"

Прокси должен завершать TLS, пересылать запросы на 127.0.0.1:20021, сохранять Host, задавать X-Forwarded-Proto: https, поддерживать WebSocket upgrade для /ws и оставлять панель и API на одном origin.

Первый успешный вход через /?token=... устанавливает cookie HttpOnly, SameSite=Lax и перенаправляет на URL без token. Для запросов, распознанных как HTTPS, cookie также получает Secure.

Защита канала

Встроенный сервер использует HTTP. Token ограничивает доступ, но не шифрует трафик. Не публикуйте порт напрямую в интернете; используйте HTTPS-прокси или SSH-туннель.

Прямая привязка к частной сети

Любой bind не на loopback требует token:

bash
vminfo --web --bind 0.0.0.0 --port 20021 --token

Без --token vminfo сразу завершит запуск с ошибкой. Ограничьте источники firewall и помните, что соединение остаётся незашифрованным HTTP.

Защита браузера и API

  • REST- и WebSocket-запросы с Origin должны совпадать по scheme, host и порту
  • Access-Control-Allow-Origin: * не возвращается
  • В режиме token страницы, /api/v1/* и /ws требуют token или cookie
  • Нативные клиенты без Origin продолжают работать
  • Сетевые диагностики проверяют JSON, размер, число проб и timeout

Управление процессом

Используйте принятый на хосте supervisor: systemd, launchd или контейнерный runtime. По возможности запускайте без root, перезапускайте после сбоев и отправляйте SIGTERM при остановке. vminfo не устанавливает service definition автоматически.

Проверка

bash
curl -fsS http://127.0.0.1:20021/api/v1/health
curl -fsS "http://127.0.0.1:20021/api/v1/health?token=$VMINFO_WEB_TOKEN"

Отдельного публичного health endpoint нет. При включённой аутентификации /api/v1/health тоже защищён.

Связанные разделы

最近更新

Выпускается по лицензии MIT.