跳转至

NFarmsd 后端规范文档

NFarms 后端服务(nfarmsd)平台规范:架构、模块、端口规划(9990-9999)、 接口约定与部署布局。模块级文档见 ../NFarmsd/,前端平台文档见 ../nfarms/。

1. 平台定位

nfarmsd 是 NFarms 生态的统一后端服务平台:一个可执行、三种运行形态(模块), 对外提供统一认证、统一消息、统一告警、统一数据、统一菜单(商城)、统一证书等 管理域,并通过 WebSocket 网关承载零信任 VPN 认证骨架(2.md §4.3)。 前端各平台与各客户端应用(nfvpn / nfprinter / nf-agent / nflive)统一接入。

2. 端口规范(9990-9999)

平台所有对外/内部服务端口统一规划在 9990-9999 段,段内按序号分配如下:

端口 服务 协议 绑定 说明
9990 nfarmsd-api HTTP/JSON 内网/回环 API 模块 REST(命令框架 + 六大管理域 + 遥测)
9991 nfarmsd-gateway WebSocket 内网/回环 VPN 网关 /vpn/ws(零信任认证骨架)
9992 nfarmsd-metrics HTTP 内网 Prometheus /metrics + /health(可并入 9990,独立更佳)
9993 nfarmsd-worker 内部 回环 Worker 无监听端口,保留用于状态探针
9994 nfprinter HTTP/JSON 内网 打印编辑代理收单(原 9101)
9995 nflive HTTP 回环 生活+商城本地客户端 Web(仅 127.0.0.1)
9996 NATS JetStream TCP/NATS 内网 消息中间件(默认 4222,生产迁移段内)
9997 MCP 网关 HTTP/WS 内网 AI 代理/MCP 路由(规划)
9998 IoT 接入 TCP/HTTP 内网 设备接入(规划)
9999 预留 - - 扩展预留(支付回调/告警 webhook 按序申请)

端口规约

  1. 段内申请:新服务端口在 9990-9999 内申请,本表登记后使用;不足时 扩展段位需版本变更评审;
  2. 绑定策略:9990-9994/9996-9998 仅绑定内网/专线网卡,9995 仅回环; 公网统一经 Nginx(443)反代暴露,不得直接对公网监听;
  3. 安全组:云服务器(阿里云 ECS 等)安全组仅放行 80/443 与运维管理口, 段内端口由同机/内网访问;
  4. 配置迁移(当前默认值 → 段内规范端口):
    nfarmsd  api 模块:  LISTEN_ADDR=127.0.0.1:9990   (或 config server.listen_addr)
    nfarmsd  gateway:   LISTEN_ADDR=127.0.0.1:9991
    nfprinter 收单:     NFPRINTER_LISTEN=127.0.0.1:9994   (config listen = 同上)
    nflive 本地:        NFLIVE_LISTEN=127.0.0.1:9995
    NATS:               NATS_SERVER=nats://127.0.0.1:9996
    nfvpn 网关地址:     gateway_ws = ws://<host>:9991/vpn/ws
    nfarmsd API 地址:   NFVPN_API / NFLIVE_BACKEND = http://<host>:9990
    
  5. 域名规划:对外经 Nginx(server_name 见前端文档)路由: /api/ → 9990、/vpn/ws → 9991。

3. 架构

nfarmsd --module api      -> HTTP API   (9990,默认内网)
nfarmsd --module gateway  -> VPN WS     (9991)
nfarmsd --module worker   -> 后台任务    (订单超时/消息重投/证书巡检)
        │
        ├── SQLite(持久化主库:users/messages/menus/certs/orders/vpn_*)
        ├── NATS JetStream(9996;离线自动降级 SQLite 队列)
        └── /metrics + /health(9992)

4. 六大统一管理域

管理域 表 / 模块 说明
统一用户管理 users PBKDF2-SHA256 口令散列、角色白名单(admin/devops/service/auditor)、JWT HS256 签发/验证
统一消息管理 messages 先落 SQLite(审计+降级队列)再投递 NATS JetStream
统一告警管理 alerts 告警登记/恢复/上报,飞书 webhook 推送(本地可禁用)
统一数据管理 data_backups VACUUM INTO 热备份、prune_backups(keep)
统一菜单(商城)管理 menus 菜单树 upsert、父节点校验、子节点删除保护
统一证书管理 certificates 注册(SHA-256 指纹 + PEM 落盘)、吊销、删除、到期巡检

5. 服务模块地图(文档导航)

分类 模块 文档
代理服务 AI(MCP 网关) / 菜单(商城) / 打印 代理服务 ai · menu · print
安全服务 统一认证 / 零信任 VPN / WAF 安全服务 auth · vpn · waf
通信服务 IoT / 统一消息 / 工单 / 告警陷阱 通信服务 iot · msg · ticket · trap
交易服务 支付 / 订单 pay-Modules

注:模块级文档位于同级 NFarmsd/ 目录;本规范文档与 NFarmsd/docs.md(平台总览) 内容一致并增补端口规范。

6. 接口约定

  • 命令框架:/commands、/commands/{id}/execute、/commands/executions、/commands/policy;
  • 身份模型:客户端 → 网关(JWT 验证)→ 注入 X-User-ID / X-User-Roles → 后端命令级权限校验(零信任,未走网关直连默认拒绝);
  • 遥测:POST /api/v1/telemetry(nf-agent / nfprinter 上报,主题 telemetry.agent.*);
  • 响应:错误 {code, message};时间戳 RFC3339 UTC;
  • 环境变量覆盖:NATS_SERVER / JWT_SECRET / VPN_IP_POOL / LISTEN_ADDR / READ_ONLY / MODULE / DATABASE_URL。

7. 部署布局(服务器,scripts/deploy)

后端文件:/opt/Cy/services/system.d/nfarmsd      (三模块 systemd:api/gateway/worker)
日志:    /opt/Cy/logs/backend/                   (api.log / gateway.log / worker.log)
证书:    /opt/Cy/certs/backend/                  (nfarmsd TLS/JWT)
配置:    /opt/Cy/services/system.d/nfarmsd/config/nfarmsd.toml
Nginx:   /opt/Cy/services/nginx.d/               (/api/ → 9990,/vpn/ws → 9991)