Развёртывание
vminfo --web — лёгкая панель для одного хоста. Ей не нужна база данных, и это не централизованная система мониторинга. Держите встроенный HTTP-сервер внутри доверенной границы.
Только локальный доступ
Самая безопасная конфигурация по умолчанию не требует аутентификации:
vminfo --webСервис слушает 127.0.0.1:20021. Откройте http://127.0.0.1:20021 на той же машине или проверьте API:
curl -fsS http://127.0.0.1:20021/api/v1/healthБез аутентификации принимаются только Host-заголовки с localhost или loopback-IP, что блокирует DNS rebinding.
Удалённый доступ через SSH
Для индивидуального администрирования оставьте listener на loopback и создайте туннель:
# На сервере
vminfo --web
# На рабочей станции
ssh -L 20021:127.0.0.1:20021 user@serverПосле этого откройте http://127.0.0.1:20021 на рабочей станции. Порт панели не публикуется в сети сервера.
Доступ через обратный HTTPS-прокси
Для постоянного адреса оставьте vminfo на loopback и используйте HTTPS-прокси на том же хосте:
vminfo --web --bind 127.0.0.1 --port 20021 --token--token без значения создаёт случайный token и готовый URL. Можно передать фиксированное значение:
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:
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 автоматически.
Проверка
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 тоже защищён.