Files
NianAIGC/docs/DEPLOYMENT.md

192 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 智念AIGC平台部署说明
本文面向运维部署。推荐使用 Docker Compose同一套编排会启动 Web 服务和任务 Worker。
## 服务器要求
- Linux 服务器
- Docker
- Docker Compose v2`docker compose`)或旧版 `docker-compose`
- 可访问外网供应商接口:火山 Visual、EvoLink、Seedance、OSS
## 一键部署
```bash
git clone <仓库地址>
cd NianAIGC
bash scripts/deploy.sh
```
脚本会自动:
-`.env.example` 创建 `.env.local`(如果不存在)
- 创建 `.runtime/data``.runtime/uploads``.runtime/generated-results`
- 创建 `.runtime/logs`
- 构建镜像
- 启动 `zhinian-aigc` Web 服务
- 启动 `zhinian-worker` 任务 Worker
- 输出容器状态
默认访问:
```text
http://服务器IP:3000
```
## 必填生产配置
部署前编辑 `.env.local`
```env
APP_PORT=3000
PORT=3000
HOSTNAME=0.0.0.0
NEXT_PUBLIC_APP_URL=https://你的域名
ZHINIAN_AUTH_REQUIRED=auto
ZHINIAN_AUTH_BASE_URL=https://<gateway-domain>/auth
ZHINIAN_AUTH_CLIENT_ID=customPC
ZHINIAN_AUTH_CLIENT_SECRET=请替换为认证中心客户端密钥
ZHINIAN_AUTH_SCOPE=server
ZHINIAN_AUTH_ISSUER=https://pig4cloud.com
ZHINIAN_AUTH_PASSWORD_ENC_KEY=
ZHINIAN_AUTH_SESSION_SECRET=请替换为强随机会话密钥
ZHINIAN_API_KEYS=partner-a:请替换为强随机key
ZHINIAN_INTERNAL_WORKER_TOKEN=请替换为强随机token
ZHINIAN_WEBHOOK_SECRET=请替换为webhook签名密钥
```
真实生成能力按需配置:
```env
IMAGE_GENERATE_ENGINE=evolink
IMAGE_INPAINT_ENGINE=jimeng
EVOLINK_API_KEY=
VOLCENGINE_ACCESS_KEY_ID=
VOLCENGINE_SECRET_ACCESS_KEY=
SEEDANCE_API_KEY=
ALI_OSS_ENDPOINT=
ALI_OSS_BUCKET=
ALI_OSS_ACCESS_KEY_ID=
ALI_OSS_ACCESS_KEY_SECRET=
ALI_OSS_PUBLIC_BASE_URL=
```
如果不配置真实供应商密钥mock 配置会保留本地验收能力,但生产对接应配置真实密钥。
认证中心客户端需要允许回调地址:
```text
https://你的域名/api/auth/callback
```
如果使用登录页内的账号密码验证码方式,还需要确认 `customPC` 客户端支持 `password``refresh_token` grant。未加入 `security.ignore-clients` 时,验证码会通过 `${ZHINIAN_AUTH_BASE_URL}/code/image` 获取。
## 常用运维命令
```bash
docker compose ps
docker compose logs -f zhinian-aigc
docker compose logs -f zhinian-worker
docker compose restart
docker compose down
```
Web 后台可在登录后访问:
```text
https://你的域名/logs
```
日志默认写入 `.runtime/logs/server-events.jsonl`,用于查看 API 500 错误、Worker 任务异常、错误栈和请求路径。可通过环境变量 `ZHINIAN_LOG_DIR` 调整目录,通过 `ZHINIAN_LOG_MAX_BYTES` 调整单文件轮转大小。
更新部署:
```bash
git pull
bash scripts/deploy.sh
```
健康检查:
```bash
curl -f http://127.0.0.1:${APP_PORT:-3000}/api/health
```
OpenAPI
```bash
curl http://127.0.0.1:${APP_PORT:-3000}/api/v1/openapi.json
```
## 数据持久化
Docker Compose 会挂载:
```text
./.runtime:/app/.runtime
```
本地 JSON 数据层、上传文件和生成结果都会放在 `.runtime/` 下。生产环境如果未启用 Supabase/Postgres请定期备份该目录。
服务端日志也会放在 `.runtime/logs/` 下,建议和运行时数据一起备份或接入服务器日志采集。
建议备份:
```bash
tar -czf zhinian-runtime-$(date +%Y%m%d%H%M%S).tar.gz .runtime
```
## 服务组成
- `zhinian-aigc`Next.js Web/API 服务,默认容器端口 `3000`
- `zhinian-worker`:后台任务 Worker负责提交供应商任务、轮询结果、导入资产和触发 Webhook
注意:只启动 Web 服务时,任务会停留在 `queued``running`,必须同时运行 Worker。
## 反向代理建议
Nginx 示例:
```nginx
server {
listen 80;
server_name your-domain.com;
client_max_body_size 100m;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
配置反向代理后,将 `.env.local` 里的 `NEXT_PUBLIC_APP_URL` 设置成公网 HTTPS 地址。
## 验收清单
部署后执行:
```bash
curl -f https://你的域名/api/health
curl -H "Authorization: Bearer <API_KEY>" https://你的域名/api/v1/capabilities
curl https://你的域名/api/v1/openapi.json
```
确认:
- 未登录访问 Web 页面会跳转到 `/auth/login`
- 登录后 Web 页面可访问
- `/api/health` 返回 `ok: true`
- `/logs` 可查看后台错误日志
- `/api/v1/capabilities` 使用 API Key 可访问
- `zhinian-worker` 日志持续输出 `claimed=...`
- OSS、EvoLink、火山、Seedance 密钥按业务需要配置完成