Сетевые и пользовательские доступы со стороны инфраструктуры
В этом разделе описывается типовой сценарий размещения: система Labforge развёрнута в виртуальной машине на гипервизоре Proxmox, который сам же используется в качестве ноды кластера для развертывания стендов.
Такая топология позволяет обойтись одним физическим сервером, но требует аккуратной настройки доступа: гипервизор должен пускать управляющую ВМ к API, а сама ВМ — открывать пользователям интерфейс. ВМ может иметь свой адрес в сети организации или использовать проброс портов (продвинутая опция, будьте аккуратны при настройке имен и доступов).
Сценарий
┌─────────────────────────── Proxmox-хост (нода кластера) ───────────────────────────┐
│ VM «labforge» (Labforge: nginx, deployment-api, cluster-manager, websockify…) │
│ │ 8006 HTTPS │
│ └──────────────────────────────────────────▶ Proxmox API (8006) │
│ │ │
│ Стенды пользователей (VM) ◄──────────── VNC-консоль ─┤ │
└────────────────────────────────────────────────────────────────────────────────────┘
Основные положения о сетевом взаимодействии:
- Управление гипервизором (cluster-manager, deployment-api) идёт только по Proxmox API — TCP 8006 (HTTPS).
- VNC-консоли также идут через 8006:
websockifyоткрывает временный proxy черезPOST /api2/json/nodes/{node}/qemu/{vmid}/vncproxy, а затем соединяется поwss://…:8006/…/vncwebsocket. Эфемерный портvncproxyслушается внутри гипервизора, наружу он не публикуется — внешнему миру достаточно порта 8006. - Пользователи попадают в систему только через nginx управляющей ВМ — порты 80/443.
Матрица доступов
| Откуда | Куда | Порт | Назначение | Направление |
|---|---|---|---|---|
| VM Labforge | Гипервизор | 8006 | Proxmox API: управление нодами, стендами, VNC-консоли | входящий на гипервизор |
| Пользователи | VM Labforge | 80/443 | nginx: UI, Keycloak, VNC через websockify | входящий на ВМ |
| VM Labforge | Прочие ноды кластера | 8006 | API соседних нод (при multi-node) | исходящий |
| Пользоатель | VM Labforge | 22 | SSH доступ (опционально) | входящий на ВМ |
Для одиночной ноды обязательный минимум — 8006 на гипервизоре и 80/443 на управляющей ВМ.
Проверка
Через cluster-manager (рекомендуется)
Примечание
Проверка доступа после заполнения списка серверов в процессе установки. Если вы не выполнили процесс установки, сначала выполните его или проверьте доступы прямым запросом.
Проверка изнутри сервиса подтверждает, что доступ к API гипервизора работает с учётом настроенного firewall. Выполните
check-команду на haskell-binary внутри контейнера cluster-manager (аналог команд из руководства установки):
docker exec -it labforge-cluster ./haskell-binary check --node <имя ноды в PVE>
Команда находит ноду в базе, обращается к её Proxmox API и выводит результат:
Successful response!— доступ работает, firewall пропускает ВМ к порту 8006;Failure response: …— доступ заблокирован или нода не отвечает;Node not found— нода ещё не добавлена в базуcluster-manager(добавьте черезcreate-node).
Прямой запрос к API
С управляющей ВМ проверьте доступ к API гипервизора вручную:
curl -k -H "Authorization: PVEAPIToken=…" https://192.168.1.101:8006/api2/json/version
Ответ 200 и JSON с version означают, что firewall настроен верно. Этот способ не учитывает внутреннюю сеть сервисов,
поэтому предпочтительна check-команда из cluster-manager.