new-api · QuantumNous GPT Image 1 DALL·E 3 Imagen 3 100% 开源

ImageRelay AI 生图 SaaS 平台

基于 new-api (QuantumNous) 全量 vendor 的 AI 生图平台。前端 Vue 3 + Vite 5 + TypeScript, 后端 Go + Gin + GORM,四容器 Docker 编排,30+ 上游模型适配器, OpenAI 兼容 API,源码完全可定制

30+
模型适配器
4
容器编排
100%
源码可定制
MIT
开源协议

四容器生产架构 · 源码构建

🌐
用户
全球访问
🔒
Nginx
SSL · 反代 · SPA
⚙️
new-api
网关 · 额度 · 双认证
🤖
上游 API
OpenAI · Gemini · …
⬇️ 依赖
🗄️
MySQL 8.0
Redis 7
源码 vendored:backend/new-api/

① 项目概览

什么是 ImageRelay?

一个开箱即用、可深度定制的 AI 生图 SaaS 平台。把 new-api 的多模型网关能力,包装成对终端用户友好的产品形态—— 文生图、图生图、提示词画廊、积分计费、API 接入,一套到位。

🎯

产品定位

面向 C 端用户的 AI 生图 SaaS。注册即送 10 积分,支付宝在线充值,500000 quota = 1 积分的透明计费模型。

🏗️

架构哲学

"最小依赖"原则——只依赖 new-api,将其源码全量 vendor 到 backend/new-api/,随时可改、可裁、可扩展,无外部 submodule 牵绊。

🔌

兼容能力

对外 100% OpenAI 兼容 API。/v1/* 走 API Key,/api/* 走 Session Token,双轨认证无缝衔接 SDK 与浏览器。

🗺️ 端到端数据流

浏览器 (Vue 3 SPA) Nginx (:80/:443) /api/* · Session new-api (:3000) 上游模型 (OpenAI / Gemini / Claude / …)

/api/* 走 Session Token(前端用户),/v1/* 走 API Key(外部接入),new-api 内部统一路由到对应渠道适配器。

② 核心能力

开箱即用的产品能力

不只是 API 网关,而是一套完整的产品。前端 9 个 View + 8 个组件,覆盖用户从注册到生成的完整旅程。

🎨

文生图 / 图生图

支持多模型切换、批量生成、参数精细控制(尺寸/质量/风格)。生成结果即时预览,支持灯箱、下载、收藏、变体。

🖼️

提示词画廊

精选提示词模板库,一键复用优质 prompt。HomeView 首页展示平台能力,ConsoleView 提供工作台。

💳

积分计费

透明计费:500000 quota = 1 积分。注册赠送 10 积分体验,支付宝在线充值,SettingsView 实时查看余额与消费记录。

🔑

API 密钥管理

用户可自助创建 API Key,对接外部应用。支持 IP 白名单、额度限制,SettingsView 统一管理。

🧩

多模型适配

30+ 上游适配器:OpenAI、Gemini、Claude、AWS Bedrock、Azure、国产模型……统一抽象,渠道可热切换、自动故障转移。

🛠️

源码可定制

new-api 源码完整 vendor 在 backend/new-api/,改一行代码 → docker compose up -d --build new-api 即可生效,无需等待上游发版。

③ 技术架构

技术栈全览

现代前后端分离架构。前端纯静态托管,后端 Go 单二进制,基础设施容器化编排。

前端

  • Vue 3 + Vite 5核心
  • TypeScript类型
  • TailwindCSS 3.4样式
  • Pinia状态
  • Vue Router 4 · Axios路由·HTTP

⚙️后端

  • new-api (QuantumNous)开源
  • Go + Gin + GORM技术栈
  • React 双主题后台管理
  • 30+ 模型适配器渠道
  • Vendored 源码可定制

📦基础设施

  • Docker Compose编排
  • MySQL 8.0数据库
  • Redis 7缓存
  • Nginx Alpine反代
  • Let's EncryptSSL

🎨 设计系统 · 配色(对齐前端 Tailwind primary-500)

Primary

#3B82F6

Light

#60A5FA

Accent

#06B6D4

Bg Dark

#050810

Success

#4ADE80

前端使用浅蓝科技主题(primary-500 #3B82F6),与本文档配色完全一致,保证品牌视觉统一。

④ 模型矩阵

支持的图片模型

通过 new-api 统一抽象,以下模型均通过同一套 OpenAI 兼容 API 调用。渠道可在管理后台灵活配置、热切换。

OpenAI

gpt-image-1

GPT 原生图像模型,文生图与图生图均强,质量与指令遵循俱佳。平台默认主推模型。

文生图图生图高质量
OpenAI

dall-e-3

经典图像生成模型,prompt 理解力强,适合创意类场景。兼容性最广。

文生图1024²稳定
Google

imagen-3

Google Gemini 系列图像模型,写实风格突出,照片级细节表现优异。

文生图写实Gemini

💡 完整模型列表与渠道配置见 doc/05-backend.md,管理后台 → 渠道管理 → 添加渠道即可接入新模型。

⑤ 部署步骤

7 步完成生产部署

从源码构建到生产上线。new-api 从 vendored 源码编译,前端 bun 构建,全程 Docker 化。

1

克隆项目

仓库已包含 vendored 的 new-api 源码(backend/new-api/),无需额外拉取。

git clone https://github.com/xiaopengs/imagerelay.git && cd imagerelay
2

构建前端

Vue 3 + Vite 构建,产物输出到 frontend/dist/

cd frontend && npm install && npm run build && cd .. # 复制构建产物到 Nginx 挂载目录 mkdir -p infra/frontend-dist && cp -r frontend/dist/* infra/frontend-dist/
3

申请 SSL 证书

sudo apt install certbot python3-certbot-nginx -y # 域名需提前解析到服务器 IP sudo certbot --nginx -d your-domain.com # 复制证书到 Nginx 挂载目录 mkdir -p infra/ssl sudo cp /etc/letsencrypt/live/your-domain.com/fullchain.pem infra/ssl/cert.pem sudo cp /etc/letsencrypt/live/your-domain.com/privkey.pem infra/ssl/key.pem sudo chmod 644 infra/ssl/*.pem

⚠️ 域名需提前解析到服务器 IP,建议 DNS 生效后再继续

4

修改 Nginx 配置

编辑 infra/nginx.conf,将 your-domain.com 替换为真实域名。

server_name your-domain.com; # ← 替换为你的域名
5

从源码构建并启动

docker-compose.yml 已配置为从 backend/new-api/ 构建。--build 触发多阶段 Dockerfile(bun 前端 + golang 编译 + debian 运行时)。

cd infra docker compose up -d --build docker compose ps

💡 首次构建约 5-10 分钟(编译 Go 源码)。后续启动用 docker compose up -d 即可。修改 new-api 源码后需重新加 --build

6

new-api 管理后台配置

① 访问 http://your-ip:3000

② 登录:root / 123456

立即修改默认密码!

④ 渠道管理 → 添加 OpenAI 渠道

⑤ 填入 Key + 模型 gpt-image-1, dall-e-3

⑥(可选)添加 Google Gemini 渠道接入 imagen-3

⑦ 设置自定义首页 / 定价页 URL

部署完成!

四容器已运行:new-api · MySQL · Redis · Nginx。

前端(用户访问)

https://your-domain.com

new-api 管理后台

https://your-domain.com/api/

OpenAI 兼容 API

https://your-domain.com/v1/*

用户会话 API

https://your-domain.com/api/*

⑥ API 文档

OpenAI 兼容 API

对外完全 OpenAI 兼容。现有 SDK(Python / Node / curl)可直接对接,只需替换 base_url 与 api_key。

🔐 认证方式 · 双轨

API Key(外部接入)

Authorization: Bearer <token>

用于 /v1/* 端点

Session Token(前端用户)

Cookie: session_token=...

用于 /api/* 端点

API Key 在 new-api 管理后台 → 令牌管理 → 创建令牌获取。

📡 接口端点

POST
/v1/images/generations
生成图片(文生图 / 图生图)· OpenAI 兼容
GET
/v1/models
获取可用模型列表
GET
/api/v1/users/me
获取用户信息(含积分余额)· Session 认证
POST
/api/v1/users/top_up
充值码充值 · Session 认证

💻 代码示例

curl

curl https://your-domain.com/v1/images/generations \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"model":"gpt-image-1","prompt":"a futuristic city at night","n":1,"size":"1024x1024"}'

JavaScript

const res = await fetch('/v1/images/generations', { method: 'POST', headers: {'Authorization': 'Bearer ' + token, 'Content-Type': 'application/json'}, body: JSON.stringify({ model: 'gpt-image-1', prompt: 'a futuristic city', n: 1, size: '1024x1024' }) }) const data = await res.json() console.log(data.data[0].url)

Python

import requests resp = requests.post( 'https://your-domain.com/v1/images/generations', headers={'Authorization': f'Bearer {token}'}, json={'model': 'gpt-image-1', 'prompt': 'a futuristic city', 'n': 1, 'size': '1024x1024'} ) print(resp.json()['data'][0]['url'])

⑦ 运维命令

常用运维操作

基于 Docker Compose v2(docker compose,无连字符)。修改 new-api 源码后需 --build 重新编译。

🔄 重启服务

docker compose restart docker compose ps

📊 查看日志

docker compose logs -f docker compose logs -f new-api docker compose logs -f nginx

⬆️ 更新版本

git pull origin master cd frontend && npm run build && cd .. cp -r frontend/dist/* infra/frontend-dist/ cd infra && docker compose up -d --build

💾 数据备份

# 备份 MySQL docker compose exec mysql mysqldump -uroot -p newapi > backup-$(date +%Y%m%d).sql # 备份 new-api 数据卷 docker run --rm -v imagerelay_new-api-data:/d -v $PWD:/b alpine \ tar czf /b/newapi-data-$(date +%Y%m%d).tar.gz -C /d . # 完整备份 tar --exclude=frontend/node_modules --exclude=backend/new-api/.git \ -czf backup.tar.gz .

🐛 故障排查

502
原因:new-api 容器未启动或编译失败
解决:docker compose ps 查状态 → docker compose logs new-api 看编译日志 → docker compose up -d --build new-api
生成失败
原因:API Key 无效或渠道禁用
解决:管理后台 → 渠道管理 → 检查 Key 有效性与余额,确认模型名 gpt-image-1 已勾选
上传报错
原因:Nginx 文件大小限制过小
解决:infra/nginx.confclient_max_body_size 20M;
CORS
原因:new-api 未配置允许来源
解决:管理后台 → 系统设置 → 允许来源填写你的域名
编译慢
原因:首次从源码构建 Go 二进制耗时较长
解决:属正常现象(5-10 分钟)。Docker 层缓存后再次构建会快很多。

⑧ 代码文档

Code Wiki · 结构化知识库

项目内嵌完整的代码 Wiki(doc/ 目录),覆盖架构、模块、关键函数、依赖、运行方式。深度定制前必读。

📖 想要更深入的代码理解?

打开 Code Wiki 索引 →

⑨ 安全加固

必做安全清单

生产环境上线前逐项核对。new-api 默认配置面向开发,需手动加固。

⚠️ 立即执行

修改默认密码

首次登录后立即在 new-api 管理后台修改 root 账户密码(默认 root/123456)。

HTTPS 强制

nginx.conf 已配置 HTTP→HTTPS 重定向,确保 SSL 证书有效并设置自动续期 certbot renew

修改 SESSION_SECRET

docker-compose.yml 中 SESSION_SECRET 必须改为强随机值,否则会话可被伪造。

修改 MySQL 密码

MYSQL_ROOT_PASSWORD 默认 password,生产环境必须修改。

🛡️ 推荐加固

CORS 白名单

管理后台 → 系统设置 → 允许来源 = 你的域名

Rate Limiting

Nginx 配置中已内置请求限流,防止滥用

IP 白名单

高价值用户可在 new-api → 令牌管理设置 IP 白名单

限制 3000 端口

生产环境建议用防火墙封禁 3000 端口外访,仅通过 Nginx 反代访问

遇到问题?

提交 Issue →