Files
sundynix-agentix/DEPLOY.md
T
Blizzard a5fd251fc0 feat(deploy): 容器化 + 一键独立部署 —— 5 服务镜像 + prod compose + 安装/备份/许可
此前应用服务只是本机裸二进制、无 Dockerfile、无法交付。本提交把项目从"只能在我笔记本
跑"变成"任何人一条命令起一整套",是「演示 / 拉投资 / 卖给客户独立部署」的可交付基础。

- Dockerfile ×5:gateway/dispatcher/mcp-go 多阶段(distroless static, 36–55MB);
  mcp-py(python-slim, 268MB);admin(node 构建→nginx 托管 SPA + 反代 /api,76MB)。
  Go 构建上下文为仓库根以兜住 replace ../sundynix-shared;.dockerignore 瘦上下文。
- docker-compose.prod.yml:应用 + 基建一把起;经服务名互连(顺带避开 localhost DNS 坑);
  基建端口不对宿主暴露;depends_on 健康检查保序(mcp-go 待 Milvus healthy);
  APP_ENV=production 强制密钥校验 + 锁 CORS + 管理员白名单。
- .env.example + DEPLOY.md:两类密钥分层(引导密钥走 .env,模型 key 控制台加密存库);
  首次管理员流程;安全建议。LICENSE 专有(授权模型可后定)。
- scripts/backup.sh + restore.sh:PG 逻辑备份 + 各数据卷快照 / 恢复。
- .gitignore 挡 .env*(密钥不入库)。

live:5 镜像全构建通过;独立 project 起整套 → nginx→gateway→NATS→dispatcher→mcp 全链路
注册+提任务 running→done,depends_on 保序生效。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 15:23:36 +08:00

3.1 KiB
Raw Blame History

部署指南(独立部署 / 单机演示)

一条命令拉起整套 sundynix-agentix(应用 5 服务 + 基建)。适用于演示客户独立部署。 集群高可用(多副本 / NATS 集群 / 数据库主从)是用户量上来后的事,不在本指南范围。

前置

  • Docker 24+ 与 Docker Compose v2
  • 约 8GB 内存、10GB 磁盘(Milvus/Neo4j 较吃资源)

三步上手

# 1) 生成配置
cp .env.example .env

# 2) 填密钥(必填四项 + 管理员)
#    主加密密钥 / JWT 密钥:
openssl rand -base64 32   # 填入 SUNDYNIX_SECRET_KEY
openssl rand -base64 32   # 填入 JWT_SECRET
#    数据库密码:
openssl rand -base64 24   # 填入 POSTGRES_PASSWORD(勿含 @ : /
openssl rand -base64 24   # 填入 NEO4J_PASSWORD
#    ADMIN_USER_IDS 先留空(见下「首次管理员」)

# 3) 起服务(首次会构建镜像,约几分钟)
docker compose -f docker-compose.prod.yml up -d --build

起来后:

  • 控制台: http://<服务器IP>:80
  • 网关 API http://<服务器IP>:8080 (桌面端连这里)
  • 链路追踪 UI(可选): http://<服务器IP>:16686

首次管理员

生产模式下 /adminADMIN_USER_IDS 白名单可进。首次:

  1. 打开控制台注册第一个账号;
  2. 取该账号的用户 id(注册响应里有,或 GET /api/v1/auth/me);
  3. 填进 .envADMIN_USER_IDSdocker compose -f docker-compose.prod.yml up -d gateway 重启网关。

配置模型(部署后在控制台做)

LLM 模型 API key 不放 .env,登录控制台 →「模型管理」配置:

  • 对话模型(chat):在线 APIOpenAI 兼容,如 DeepSeek)或本地 vLLM/Ollama
  • 向量模型(embedding):RAG 用 平台会用 SUNDYNIX_SECRET_KEY 把这些 key AES 加密后存库,不落明文。

两类密钥(重要)

类别 放哪 例子
引导密钥 / 基建凭据 .env(部署时填一次) SUNDYNIX_SECRET_KEYJWT_SECRET、库密码
业务模型 key 控制台(运行时配,加密存库) DeepSeek / Qwen / embedding 的 api_key
SUNDYNIX_SECRET_KEY 是前者加密后者的主密钥,务必备份且不可泄露;丢失=已存模型 key 全部失效。

备份 / 恢复

scripts/backup.shscripts/restore.sh(备份 PG / Neo4j / Milvus / MinIO 数据卷)。 建议 cron 每日跑 backup.sh,产物存异机。

安全建议(对外开放时)

  • 生产把 CORS_ALLOW_ORIGIN 设为具体域名,别留 *
  • 基建端口(PG/Redis/NATS/Milvus/Neo4j/MinIO)默认不对宿主暴露,仅 compose 内网;勿手动开放。
  • 对外建议在 admin 容器前再加一层 TLS 反代(Caddy/Nginx),或用云 LB 终止 HTTPS。
  • SUNDYNIX_SECRET_KEY/JWT_SECRETopenssl rand 生成的强随机值,切勿用示例值。

运维常用

docker compose -f docker-compose.prod.yml ps          # 状态
docker compose -f docker-compose.prod.yml logs -f gateway
docker compose -f docker-compose.prod.yml down         # 停(保留数据卷)
docker compose -f docker-compose.prod.yml up -d --build gateway   # 改配置后单独重启