部署中枢

部署中枢

中枢以 Docker Compose 运行,默认只拉取 GitHub Container Registry 中已发布的镜像。部署完成后,所有客户端与 Agent 都连接同一个公开入口(默认端口 38472)。

01

准备

一台能运行 Docker 与 Docker Compose 的服务器。从产品仓库取得 docker-compose.yml 与 .env.example,放在同一目录。

web控制台,映射 38472:3000,并把 /api/** 代理到 server
server中枢服务(容器内 4000 端口,不对外),数据目录挂载 ./data
redisRedis 7.4,开启 AOF 与密码认证
mysqlMySQL 8.4,utf8mb4

02

配置 .env

cp .env.example .env

至少修改标记为「必须」的五项。生产环境默认通过 TLS 反向代理访问控制台。

SESSION_SECRET控制台会话签名密钥必须
ACCESS_KEY网页、Windows / Android 客户端和所有 Agent 共用的唯一访问密钥;升级时即使旧 .env 仍有 AGENT_SHARED_SECRET,也以它为准必须
MYSQL_ROOT_PASSWORDMySQL root 密码必须
MYSQL_PASSWORD应用数据库用户密码必须
REDIS_PASSWORDRedis 认证密码;REDIS_URL 需配置相同的密码必须
TRUST_PROXY只有当 server 仅能从受信反向代理访问时才设为 true,否则保持 false按需
SESSION_COOKIE_SECURE默认 true;仅在明确受信的 HTTP 网络中改为 false按需
AGENT_REQUIRE_HTTPS默认 true;仅在明确受信的 HTTP 网络中改为 false按需

03

启动

生产环境必须使用固定版本或不可变 digest:

DSC_VERSION=<版本号> docker compose pull
DSC_VERSION=<版本号> docker compose up -d

开发或测试环境如果确实需要移动标签,可以显式选择 latest:

DSC_VERSION=latest docker compose pull
DSC_VERSION=latest docker compose up -d

server 提供 /api/health/readiness 与 /api/health/liveness 探测端点。

04

反向代理与 TLS

  • 默认建议 HTTPS。SESSION_COOKIE_SECURE 与 AGENT_REQUIRE_HTTPS 默认开启;只有在明确受信的网络中才改用 HTTP。
  • 只有当 server 仅能从受信代理访问时才设置 TRUST_PROXY=true。
  • 实时查看依赖 Agent 主动连接 /api/agent/realtime:外部入口、反向代理或 FRP / NPS 需要允许该路径的 WebSocket Upgrade,空闲超时应大于 20 秒。
  • 使用 frps 时,把内网与外网端口同时指向 38472。
  • 实时通道首版只支持单个中枢进程 / 副本,不能直接横向复制。
实时通道的完整约束 ↗

05

接入设备

在各终端填写同一个公开入口与 ACCESS_KEY。不要把 Docker 容器内部的 4000 端口填入客户端。

局域网 HTTP
http://服务器IP:38472
局域网
https://服务器域名:38472
公网
https://你的域名
受控 HTTP 内网穿透
http://公网IP:转发端口

然后 下载客户端,或在无桌面的机器上用静默参数安装。

06

升级与备份

  • 升级:把 DSC_VERSION 换成新的固定版本,重新 pull 与 up -d。
  • 备份:mysql-data、redis-data 两个数据卷与 ./data 目录(其中保存实时通道的设备凭据哈希)。
  • Windows 端用 setup / update 包升级,Linux 端用新的 .deb;两种方式都会保留机器级配置。
产品 README ↗