---
title: 架构
description: NexCMP的组成架构：域名、nginx、panel与worker服务，以及它们连接的每个系统，包含各路径使用的端口和数据。
url: https://nexcmp.com/zh-cn/docs/infrastructure/architecture/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# 架构 {#architecture}

> **管理后台位置：**此为参考页面。此处描述的服务可通过`sudo nexcmp status`查看；连接在Infrastructure与System › Settings下配置。

## 架构图示 {#the-picture}

![NexCMP架构：客户通过DNS以及可选的Cloudflare访问nginx，nginx反向代理至3000端口上的panel，panel和worker对外调用CloudStack、Proxmox VE、iDRAC、Ceph、支付网关、SMTP和AI服务商，VPN及IPv6代理节点向panel回传通信](https://nexcmp.com/zh-cn/docs/images/infrastructure/architecture.svg)

### 架构图文字详解 {#the-same-diagram-in-words}

1. 客户或管理员打开`https://cloud.example.com`（客户门户）、`https://cloud.example.com/admin`（管理控制台）或调用REST API。DNS将域名解析至您的服务器，或解析至进行反向代理的Cloudflare。
2. panel服务器上的**nginx**监听80（重定向与证书续期）和443（TLS）端口，并将所有请求转发至位于`127.0.0.1:3000`的**panel**。完成设置向导后，panel将仅监听本地环回接口。
3. **panel**（`nexcmp.service`）提供客户门户、管理控制台、REST API、设置向导以及节点所需的下载资源（agent二进制文件、安装脚本、`cmp`命令行工具）。它还会每天检查一次您的许可证。
4. **worker**（`nexcmp-vmd.service`）监听仅限本地的`127.0.0.1:8112`。它负责运行所有耗时或必须定时执行的任务：开通任务、与CloudStack和Proxmox VE同步、计费周期扣费、带宽数据采集以及浏览器控制台连接。
5. 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**。
6. **VPN节点**运行`cmp-agent`。每个节点使用一次性令牌注册一次，之后每5秒通过HTTPS向panel发送一次心跳，并在响应中接收其配置。**IPv6代理节点**由panel通过SSH一次性安装完成，之后从panel拉取配置。
7. 状态数据保存在SQLite数据库及位于`/var/lib/nexcmp`的少量文件中。CloudStack、Proxmox、S3、iDRAC和AI服务商的凭据均使用同一目录下的主密钥文件加密存储（AES-256-GCM）。

## 服务与进程 {#services-and-processes}

| 进程 | 运行身份 | 监听地址 | 功能职责 |
|---|---|---|---|
| `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。

## 文件及其所在位置 {#files-and-where-they-are}

| 路径 | 内容 |
|---|---|
| `/opt/nexcmp` | 程序：版本发布包、`bin/`、模板构建器等共享文件。属主为root，对服务只读。 |
| `/etc/nexcmp` | 安装程序设置（`install.conf`）、端口和绑定（`nexcmp.env`）。 |
| `/var/lib/nexcmp` | SQLite数据库、上传的品牌资产、agent下载目录、许可证状态、主密钥文件。请备份此目录。 |
| `/var/log/nexcmp` | 日志。 |

参见[备份与恢复](https://nexcmp.com/zh-cn/docs/getting-started/backup-and-restore/)。主密钥文件必须与数据库一起备份，否则恢复的数据库无法解密其存储的凭据。

## 网络连接拓扑 {#who-connects-to-whom}

| 方向 | 路径 | 端口 | 备注 |
|---|---|---|---|
| 客户到面板 | 互联网、DNS、可选Cloudflare、nginx | 443 | 参见[DNS与Cloudflare](https://nexcmp.com/zh-cn/docs/getting-started/dns-and-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 | 您输入的端口 | 仅限单次安装。 |

## 为何重要 {#why-it-matters}

- **能访问的控制台就是可能遭到攻击的控制台。**设置向导完成后，请务必关闭端口3000。如果启用了TLS，安装程序会自动完成此操作。
- **worker必须保持运行**，才能创建资源或进行计费。`sudo nexcmp status`会显示两项服务以及健康检查状态。
- **合理规划出站防火墙。**如果控制台服务器的出站流量受到过滤，请放行上表中的目标地址。
- **管理流量不经过公网路径。**与CloudStack、Proxmox VE、iDRAC和Ceph的连接均从控制台服务器直连至这些系统，绝不经过nginx或Cloudflare。
