Files
Muse 084afeb8f4 3x-ui 式共享节点改造:nodes 状态机 + nodeClients 各自凭据
- 移除 VMess 协议
- VLESS/SS2022 按用户流量统计(AnyTLS 日志解析,SS 节点级)
- sing-box v2ray_api stats 支持
- 内存优化:面板 128M,agent 64M,sing-box 64M
2026-10-19 22:23:40 +08:00

49 lines
2.3 KiB
Markdown

# 架构说明
## 控制路径
1. 管理员在控制面创建服务器、客户和链路草稿。
2. 编排器为每位客户生成独立凭据,并从各服务器端口池分配端口。
3. 转发线路为每位客户生成一个出口资源和一个或多个入口资源;单机直连只生成入口资源。
4. Agent 通过 HTTPS 主动轮询任务,控制面无需登录目标机。
5. Agent 把资源片段写入 `/etc/nexusgate/agent/resources/`,合并为完整 sing-box 配置。
6. Agent 运行 `sing-box check`;只有通过校验才替换生效配置并重启 sing-box。
7. Agent 回报 Reality 公钥、任务结果、心跳、流量增量和 IP 观察。
## 数据路径
数据流量不经过控制面:
```mermaid
flowchart LR
C[客户端] --> R[入口资源]
R --> E[出口资源]
E --> I[互联网]
C -. 单机直连 .-> D[直连资源]
D --> I
```
入口协议和链路传输协议使用独立适配器,因此无需相同。例如入口可以是 VLESS Reality Vision,而中转到落地使用 Shadowsocks 2022。
## 资源隔离
- 每个客户在每条链路中拥有独立 UUID 或密码。
- 每个资源使用唯一 inbound、outbound 和 routing tag。
- 入口资源只把对应 inbound 路由到对应出口 outbound。
- 出口资源只把对应 inbound 路由到独立 freedom outbound。
- 单机资源把对应 inbound 直接路由到独立 freedom outbound。
- Reality 私钥位于 `/etc/nexusgate/keys.json`,权限 `0600`。
## 故障行为
- 新配置校验失败:删除或恢复刚修改的资源片段,不切换运行配置。
- sing-box 重启失败:恢复上一份完整配置并再次尝试启动。
- Agent 离线:控制面保留任务;运行任务租约超时后自动重试,最多 3 次。
- Agent 重新注册:撤销旧密钥,为该设备重新生成已有部署的对账任务。
- 任务失败:部署标记为失败、线路标记为异常,可只修复失败项或完整重建。
- 控制面离线:已运行的数据面继续工作,只有新配置和统计暂停。
## 存储
当前版本使用单个 JSON 数据文件和原子 rename。它减少了中小规模部署的依赖与维护成本。写入通过进程内队列串行化,不适合多个控制面实例共享写入;需要主动—主动高可用时应迁移到后续 PostgreSQL 存储。