# 部署指南(独立部署 / 单机演示) 一条命令拉起整套 sundynix-agentix(应用 5 服务 + 基建)。适用于**演示**与**客户独立部署**。 集群高可用(多副本 / NATS 集群 / 数据库主从)是用户量上来后的事,不在本指南范围。 ## 前置 - Docker 24+ 与 Docker Compose v2 - 约 8GB 内存、10GB 磁盘(Milvus/Neo4j 较吃资源) ## 三步上手 ```bash # 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 ## 首次管理员 生产模式下 `/admin` 仅 `ADMIN_USER_IDS` 白名单可进。首次: 1. 打开控制台注册第一个账号; 2. 取该账号的用户 id(注册响应里有,或 `GET /api/v1/auth/me`); 3. 填进 `.env` 的 `ADMIN_USER_IDS`,`docker compose -f docker-compose.prod.yml up -d gateway` 重启网关。 ## 配置模型(部署后在控制台做) LLM 模型 API key **不放 .env**,登录控制台 →「模型管理」配置: - 对话模型(chat):在线 API(OpenAI 兼容,如 DeepSeek)或本地 vLLM/Ollama - 向量模型(embedding):RAG 用 平台会用 `SUNDYNIX_SECRET_KEY` 把这些 key AES 加密后存库,不落明文。 ## 两类密钥(重要) | 类别 | 放哪 | 例子 | |---|---|---| | 引导密钥 / 基建凭据 | `.env`(部署时填一次) | `SUNDYNIX_SECRET_KEY`、`JWT_SECRET`、库密码 | | 业务模型 key | 控制台(运行时配,加密存库) | DeepSeek / Qwen / embedding 的 api_key | `SUNDYNIX_SECRET_KEY` 是前者加密后者的主密钥,**务必备份且不可泄露**;丢失=已存模型 key 全部失效。 ## 备份 / 恢复 见 `scripts/backup.sh` 与 `scripts/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_SECRET` 用 `openssl rand` 生成的强随机值,切勿用示例值。 ## 运维常用 ```bash 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 # 改配置后单独重启 ```