基于 new-api (QuantumNous) 全量 vendor 的 AI 生图平台。前端 Vue 3 + Vite 5 + TypeScript, 后端 Go + Gin + GORM,四容器 Docker 编排,30+ 上游模型适配器, OpenAI 兼容 API,源码完全可定制。
四容器生产架构 · 源码构建
① 项目概览
一个开箱即用、可深度定制的 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 与浏览器。
🗺️ 端到端数据流
/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 单二进制,基础设施容器化编排。
⚡前端
⚙️后端
📦基础设施
🎨 设计系统 · 配色(对齐前端 Tailwind primary-500)
Primary
#3B82F6
Light
#60A5FA
Accent
#06B6D4
Bg Dark
#050810
Success
#4ADE80
前端使用浅蓝科技主题(primary-500 #3B82F6),与本文档配色完全一致,保证品牌视觉统一。
④ 模型矩阵
通过 new-api 统一抽象,以下模型均通过同一套 OpenAI 兼容 API 调用。渠道可在管理后台灵活配置、热切换。
GPT 原生图像模型,文生图与图生图均强,质量与指令遵循俱佳。平台默认主推模型。
经典图像生成模型,prompt 理解力强,适合创意类场景。兼容性最广。
Google Gemini 系列图像模型,写实风格突出,照片级细节表现优异。
💡 完整模型列表与渠道配置见 doc/05-backend.md,管理后台 → 渠道管理 → 添加渠道即可接入新模型。
⑤ 部署步骤
从源码构建到生产上线。new-api 从 vendored 源码编译,前端 bun 构建,全程 Docker 化。
克隆项目
仓库已包含 vendored 的 new-api 源码(backend/new-api/),无需额外拉取。
git clone https://github.com/xiaopengs/imagerelay.git && cd imagerelay构建前端
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/申请 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 生效后再继续
修改 Nginx 配置
编辑 infra/nginx.conf,将 your-domain.com 替换为真实域名。
server_name your-domain.com; # ← 替换为你的域名从源码构建并启动
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。
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 兼容。现有 SDK(Python / Node / curl)可直接对接,只需替换 base_url 与 api_key。
🔐 认证方式 · 双轨
API Key(外部接入)
Authorization: Bearer <token>
用于 /v1/* 端点
Session Token(前端用户)
Cookie: session_token=...
用于 /api/* 端点
API Key 在 new-api 管理后台 → 令牌管理 → 创建令牌获取。
📡 接口端点
💻 代码示例
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 .🐛 故障排查
docker compose ps 查状态 → docker compose logs new-api 看编译日志 → docker compose up -d --build new-apigpt-image-1 已勾选infra/nginx.conf 中 client_max_body_size 20M;⑧ 代码文档
项目内嵌完整的代码 Wiki(doc/ 目录),覆盖架构、模块、关键函数、依赖、运行方式。深度定制前必读。
三层架构图、数据流、双轨认证、API 路径映射、Nginx 路由。所有开发者先读这篇。
入口、目录结构、构建配置、设计系统、9 个 View、8 个组件逐一说明。
api/、stores/、router/、utils/、data/ 各模块职责与代码结构。
API 方法表、Store action 签名、Axios 拦截器逻辑、Toast API 速查。
技术栈、双套 API、关键端点、与 One API 差异、quota 换算(500000 = 1 积分)。
Docker Compose、Nginx、SSL、本地开发、生产部署、故障排查全流程。
📖 想要更深入的代码理解?
打开 Code Wiki 索引 →⑨ 安全加固
生产环境上线前逐项核对。new-api 默认配置面向开发,需手动加固。
⚠️ 立即执行
首次登录后立即在 new-api 管理后台修改 root 账户密码(默认 root/123456)。
nginx.conf 已配置 HTTP→HTTPS 重定向,确保 SSL 证书有效并设置自动续期 certbot renew。
docker-compose.yml 中 SESSION_SECRET 必须改为强随机值,否则会话可被伪造。
MYSQL_ROOT_PASSWORD 默认 password,生产环境必须修改。
🛡️ 推荐加固
管理后台 → 系统设置 → 允许来源 = 你的域名
Nginx 配置中已内置请求限流,防止滥用
高价值用户可在 new-api → 令牌管理设置 IP 白名单
生产环境建议用防火墙封禁 3000 端口外访,仅通过 Nginx 反代访问
遇到问题?
提交 Issue →