架构
**管理后台位置:**此为参考页面。此处描述的服务可通过
sudo nexcmp status查看;连接在Infrastructure与System › Settings下配置。
架构图示
架构图文字详解
- 客户或管理员打开
https://cloud.example.com(客户门户)、https://cloud.example.com/admin(管理控制台)或调用REST API。DNS将域名解析至您的服务器,或解析至进行反向代理的Cloudflare。 - panel服务器上的nginx监听80(重定向与证书续期)和443(TLS)端口,并将所有请求转发至位于
127.0.0.1:3000的panel。完成设置向导后,panel将仅监听本地环回接口。 - panel(
nexcmp.service)提供客户门户、管理控制台、REST API、设置向导以及节点所需的下载资源(agent二进制文件、安装脚本、cmp命令行工具)。它还会每天检查一次您的许可证。 - worker(
nexcmp-vmd.service)监听仅限本地的127.0.0.1:8112。它负责运行所有耗时或必须定时执行的任务:开通任务、与CloudStack和Proxmox VE同步、计费周期扣费、带宽数据采集以及浏览器控制台连接。 - NexCMP从这两个进程对外发起调用:CloudStack(管理API)、Proxmox VE(8006端口上的API,证书已固定绑定)、Dell iDRAC(管理网络上基于HTTPS的Redfish)、Ceph RGW(基于HTTPS的S3和Admin Ops)、支付网关(Stripe、PayPal、USDT及银行转账服务商,它们也会调用您的webhook URL)、您的SMTP服务器、提供兼容OpenAI的API的AI服务商,以及可选的Telegram。
- VPN节点运行
cmp-agent。每个节点使用一次性令牌注册一次,之后每5秒通过HTTPS向panel发送一次心跳,并在响应中接收其配置。IPv6代理节点由panel通过SSH一次性安装完成,之后从panel拉取配置。 - 状态数据保存在SQLite数据库及位于
/var/lib/nexcmp的少量文件中。CloudStack、Proxmox、S3、iDRAC和AI服务商的凭据均使用同一目录下的主密钥文件加密存储(AES-256-GCM)。
服务与进程
| 进程 | 运行身份 | 监听地址 | 功能职责 |
|---|---|---|---|
nginx | root(worker为www-data) | 80, 443 | TLS、重定向、反向代理至panel |
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上运行代理监听器 |
面板和worker以无任何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数据库、上传的品牌资产、agent下载目录、许可证状态、主密钥文件。请备份此目录。 |
/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 | 注册、心跳、升级。 |
| 面板到IPv6代理节点 | SSH | 您输入的端口 | 仅限单次安装。 |
为何重要
- **能访问的控制台就是可能遭到攻击的控制台。**设置向导完成后,请务必关闭端口3000。如果启用了TLS,安装程序会自动完成此操作。
- worker必须保持运行,才能创建资源或进行计费。
sudo nexcmp status会显示两项服务以及健康检查状态。 - **合理规划出站防火墙。**如果控制台服务器的出站流量受到过滤,请放行上表中的目标地址。
- **管理流量不经过公网路径。**与CloudStack、Proxmox VE、iDRAC和Ceph的连接均从控制台服务器直连至这些系统,绝不经过nginx或Cloudflare。