Files
Gemini_Draw/迁移部署说明.md

5.1 KiB
Raw Permalink Blame History

迁移部署说明

本文档用于把 Gemini Draw 迁移到 NAS、Linux 服务器或另一台电脑,并使用 Docker Compose 部署。

需要准备

  • Docker
  • Docker Compose v2
  • 当前项目源码
  • Gemini API Key
  • 一串你自己生成的 API 访问密钥 API_AUTH_TOKEN

必须修改的配置

如果使用 npm run dev / npm run api 本地运行,在目标机器项目根目录创建 .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

如果使用 Docker Compose尤其是在 Container Station 里粘贴 YAML 创建应用,请直接修改 docker_compose.yamldocker_compose_Nas.yaml 里的 environment 字段。Container Station 会从 /tmp 校验 YAML相对环境文件路径容易被解析到 /tmp 并失败,所以当前 compose 文件把必要变量直接写在 environment 中。

生成随机 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"
  - "4000:3002"

修改后访问地址变为:

  • 前端页面:http://目标机器IP:4001
  • APIhttp://目标机器IP:4000

如果修改了前端宿主机端口,也建议同步修改 .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 迁移

  1. 在目标机器安装 Docker 和 Docker Compose。
  2. 拉取仓库:
git clone http://192.168.31.5:5002/admin/Gemini_Draw.git
cd Gemini_Draw
  1. 创建 .env.local,填入目标机器自己的密钥和地址。
  2. 启动:
docker compose -f docker_compose.yaml up -d --build

方案 B直接复制目录

  1. 复制项目目录到目标机器。
  2. 不需要复制这些目录或文件:
node_modules
dist
.git
.env.local
*.log
  1. 在目标机器重新创建 .env.local
  2. 执行 Docker Compose 启动命令。

NAS 部署建议

如果部署到 NAS例如路径 /share/Container/gemini-drawpicture

cd /share/Container/gemini-drawpicture
docker compose -f docker_compose_Nas.yaml up -d --build

docker_compose_Nas.yamlenvironment 示例:

environment:
  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:4001"

如果 NAS 上 30003002 已被占用,就只改 docker_compose.yaml 左侧宿主机端口:

ports:
  - "4001:3000"
  - "4000: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

修改环境变量后没有生效

重启容器:

docker compose -f docker_compose.yaml up -d --force-recreate