4.6 KiB
4.6 KiB
迁移部署说明
本文档用于把 Gemini Draw 迁移到 NAS、Linux 服务器或另一台电脑,并使用 Docker Compose 部署。
需要准备
- Docker
- Docker Compose v2
- 当前项目源码
- Gemini API Key
- 一串你自己生成的 API 访问密钥
API_AUTH_TOKEN
必须修改的配置
在目标机器项目根目录创建 .env.local:
GEMINI_API_KEY="你的_Gemini_API_Key"
API_AUTH_TOKEN="一串足够长的随机访问密钥"
API_AUTH_DISABLED="false"
API_PORT="3002"
APP_PASSWORD="123456"
APP_URL="http://目标机器IP:3000"
字段说明:
GEMINI_API_KEY:调用 Gemini 模型的密钥。API_AUTH_TOKEN:调用本项目 API 的访问密钥,别人调用接口时必须带上。API_AUTH_DISABLED:必须保持false,只有本机临时调试才可以设为true。API_PORT:容器内 API 端口,默认3002。APP_PASSWORD:网页登录密码,默认用户名是admin。APP_URL:前端访问地址,迁移到 NAS 时建议写成http://NAS_IP:3000。
生成随机 API_AUTH_TOKEN 的示例:
openssl rand -hex 32
Windows PowerShell:
-join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Minimum 0 -Maximum 256) })
Docker Compose 部署
在项目根目录执行:
docker compose -f docker_compose.yaml up -d --build
查看日志:
docker logs -f gemini-draw
停止服务:
docker compose -f docker_compose.yaml down
重新部署:
git pull
docker compose -f docker_compose.yaml up -d --build --force-recreate
访问地址
默认端口:
- 前端页面:
http://目标机器IP:3000 - API 健康检查:
http://目标机器IP:3002/api/health
如果要修改宿主机端口,编辑 docker_compose.yaml:
ports:
- "4001:3000"
- "4002:3002"
修改后访问地址变为:
- 前端页面:
http://目标机器IP:4001 - API:
http://目标机器IP:4002
如果修改了前端宿主机端口,也建议同步修改 .env.local:
APP_URL="http://目标机器IP:4001"
API 调用必须带访问密钥
受保护 API 必须带 API_AUTH_TOKEN:
curl http://目标机器IP:3002/api/config \
-H "Authorization: Bearer 你的_API_AUTH_TOKEN"
也可以使用:
curl http://目标机器IP:3002/api/config \
-H "x-api-key: 你的_API_AUTH_TOKEN"
图片修改示例:
curl -X POST http://目标机器IP:3002/api/edit-image \
-H "Authorization: Bearer 你的_API_AUTH_TOKEN" \
-F "prompt=保留主体不变,把背景改成白色摄影棚风格" \
-F "imageSize=1K" \
-F "aspectRatio=1:1" \
-F "files=@input.png"
迁移到另一台机器的方案
方案 A:通过 Git 迁移
- 在目标机器安装 Docker 和 Docker Compose。
- 拉取仓库:
git clone http://192.168.31.5:5002/admin/Gemini_Draw.git
cd Gemini_Draw
- 创建
.env.local,填入目标机器自己的密钥和地址。 - 启动:
docker compose -f docker_compose.yaml up -d --build
方案 B:直接复制目录
- 复制项目目录到目标机器。
- 不需要复制这些目录或文件:
node_modules
dist
.git
.env.local
*.log
- 在目标机器重新创建
.env.local。 - 执行 Docker Compose 启动命令。
NAS 部署建议
如果部署到 NAS,例如路径 /share/Container/Gemini_Draw:
cd /share/Container/Gemini_Draw
docker compose -f docker_compose.yaml up -d --build
.env.local 示例:
GEMINI_API_KEY="你的_Gemini_API_Key"
API_AUTH_TOKEN="你的_API_访问密钥"
API_AUTH_DISABLED="false"
API_PORT="3002"
APP_PASSWORD="你的网页登录密码"
APP_URL="http://192.168.31.5:3000"
如果 NAS 上 3000 或 3002 已被占用,就只改 docker_compose.yaml 左侧宿主机端口:
ports:
- "4001:3000"
- "4002:3002"
容器内端口右侧保持不变。
常见问题
前端能打开,API 不能用
检查容器日志:
docker logs -f gemini-draw
检查健康接口:
curl http://目标机器IP:3002/api/health
API 返回 Unauthorized
请求缺少 API_AUTH_TOKEN。补上:
Authorization: Bearer 你的_API_AUTH_TOKEN
API 返回 Gemini API key is required
说明没有配置 Gemini Key。检查 .env.local:
GEMINI_API_KEY="你的_Gemini_API_Key"
也可以单次请求传入:
x-gemini-api-key: 你的_Gemini_API_Key
修改 .env.local 后没有生效
重启容器:
docker compose -f docker_compose.yaml up -d --force-recreate