Архитектура
Где найти в панели: это справочная страница. Описанные службы можно проверить с помощью
sudo nexcmp status; подключения настраиваются в Infrastructure и System › Settings.
Схема
Описание схемы
- Клиент или администратор открывает
https://cloud.example.com(клиентский портал),https://cloud.example.com/admin(панель администратора) или вызывает REST API. DNS направляет домен на ваш сервер либо на Cloudflare, который выполняет проксирование. - nginx на сервере панели слушает порты 80 (редирект и продление сертификатов) и 443 (TLS) и перенаправляет все запросы к panel на
127.0.0.1:3000. После завершения мастера первоначальной настройки панель слушает только loopback-интерфейс. - Служба panel (
nexcmp.service) отвечает за клиентский портал, панель администратора, REST API, мастер настройки и файлы для загрузки на узлы (бинарный файл агента, скрипт установки, CLI-утилитуcmp). Она также проверяет лицензию раз в сутки. - Служба worker (
nexcmp-vmd.service) слушает порт127.0.0.1:8112только локально. Она выполняет фоновые и периодические задачи: подготовку ресурсов, синхронизацию с CloudStack и Proxmox VE, биллинговые циклы, сбор статистики по трафику и подключения к консоли в браузере. - Из этих двух процессов NexCMP выполняет внешние вызовы: CloudStack (management API), Proxmox VE (API на порту 8006, pinning сертификата), Dell iDRAC (Redfish через HTTPS в сети управления), Ceph RGW (S3 и Admin Ops через HTTPS), платежные шлюзы (Stripe, PayPal, USDT и провайдеры банковских переводов, отправляющие вебхуки), ваш SMTP-сервер, AI-провайдер с OpenAI-совместимым API и опционально Telegram.
- Узлы VPN работают под управлением
cmp-agent. Каждый узел регистрируется один раз по одноразовому токену, затем каждые 5 секунд отправляет heartbeat по HTTPS в панель и получает конфигурацию в ответе. Узлы IPv6-прокси устанавливаются панелью один раз по SSH, после чего запрашивают свою конфигурацию у панели. - Состояние хранится в базах данных SQLite и нескольких файлах в каталоге
/var/lib/nexcmp. Учетные данные CloudStack, Proxmox, S3, iDRAC и AI-провайдера хранятся в зашифрованном виде (AES-256-GCM) с мастер-ключами в том же каталоге.
Службы и процессы
| Процесс | Пользователь | Слушает | Назначение |
|---|---|---|---|
nginx | root (воркеры www-data) | 80, 443 | TLS, редирект, проксирование к панели |
nexcmp | nexcmp | 3000 (все интерфейсы при первой установке, затем 127.0.0.1) | Портал, панель администратора, API, мастер настройки, загрузки |
nexcmp-vmd | nexcmp | 127.0.0.1:8112 | Задачи, синхронизация, биллинг, трафик, консоль |
nexcmp-update | root | нет | Применяет обновления по запросу панели администратора (path unit ожидает запрос) |
cmp-agent (на VPN-узлах) | root | порты прослушивания VPN | Передает данные в панель, запускает прокси-листенеры на публичных IPv4-адресах |
Панель и воркер работают от имени обычного пользователя без каких-либо Linux capabilities, с файловой системой только для чтения, за исключением /var/lib/nexcmp и /var/log/nexcmp. Им не требуются root, Docker, отдельная база данных и Redis.
Файлы и их расположение
| Путь | Содержимое |
|---|---|
/opt/nexcmp | Программа: релизы, bin/, общие файлы, такие как конструктор шаблонов. Владелец — root, для службы доступен только для чтения. |
/etc/nexcmp | Параметры инсталлятора (install.conf), порт и привязка (nexcmp.env). |
/var/lib/nexcmp | Базы данных SQLite, загруженный брендинг, каталог загрузки агента, состояние лицензии, файлы мастер-ключа. Обязательно создавайте резервную копию. |
/var/log/nexcmp | Логи. |
См. Резервное копирование и восстановление. Файлы мастер-ключа необходимо сохранять вместе с базами данных, иначе восстановленная база данных не сможет расшифровать сохраненные учетные данные.
Кто к кому подключается
| Направление | Путь | Порт | Примечания |
|---|---|---|---|
| От клиента к панели | Интернет, DNS, опционально Cloudflare, nginx | 443 | См. DNS и Cloudflare. |
| От панели к серверу лицензий | nexcmp.com | 443 | Активация, ежедневная проверка и обновления. |
| От панели к CloudStack | API | 443 или 8080 | Консоль ВМ, учет трафика и функции Kubernetes используют тот же эндпоинт. |
| От панели к Proxmox VE | API и консоль WebSocket | 8006 | Сертификат зафиксирован по SHA-256. |
| От панели к iDRAC | Redfish | 443, VNC 5901 | Только сеть управления. |
| От iDRAC к серверу ISO | HTTP | ваш порт | iDRAC скачивает ISO. |
| От панели к Ceph RGW | Admin Ops | 443 | |
| От панели к SMTP | SMTP | 587 или 465 | |
| От панели к AI-провайдеру | HTTPS | 443 | Только когда включен AI-модуль. |
| От платежного шлюза к панели | Webhook | 443 | Обратные вызовы Stripe и PayPal. |
| От узла к панели | cmp-agent | 443 | Регистрация, heartbeat, обновление. |
| От панели к прокси-узлу IPv6 | SSH | указанный вами порт | Только при первичной установке. |
Почему это важно
- Доступная панель — потенциальная цель для атаки. Держите порт 3000 закрытым после завершения работы мастера настройки. При активном TLS установщик делает это автоматически.
- Воркер должен быть запущен, чтобы создавать ресурсы и выполнять тарификацию.
sudo nexcmp statusпоказывает обе службы и проверку работоспособности. - Настройте исходящий межсетевой экран. Если исходящий трафик сервера панели фильтруется, разрешите адреса назначения из таблицы выше.
- Трафик управления не проходит через публичную сеть. Подключения к CloudStack, Proxmox VE, iDRAC и Ceph идут напрямую с сервера панели к этим системам, минуя nginx и Cloudflare.