☰
New-API 完整部署指南:Docker + SQLite + DeepSeek 零依赖开箱即用
2026/11/3 2:15:46 网站建设 项目流程

🍥 New-API 完整部署指南(Docker + SQLite)

新一代大模型网关与 AI 资产管理系统 —— New API

基于 One API(MIT)二次开发,采用 AGPLv3 开源协议。本指南使用Docker + SQLite完成单机部署,无需额外安装 MySQL / PostgreSQL / Redis,开箱即用。

官方项目:https://github.com/QuantumNous/new-api | 官方文档:https://docs.newapi.pro/zh/docs


📑 目录

  • 1. 背景介绍与功能
  • 2. 需要的准备
  • 3. 部署
  • 4. 环境变量
  • 5. 页面配置
  • 6. docker logs 查看
  • 7. 常见问题:合规声明

1. 背景介绍与功能

1.1 项目简介

New API 是新一代大模型网关与 AI 资产管理系统,在 One API 的基础上进行了大量增强,提供现代化的管理界面、多模型接入、统一鉴权、用量统计与成本核算能力,是目前自建 AI 中转 / 网关服务的主流方案之一。

1.2 核心功能

分类功能
🎨 全新 UI现代化的用户界面设计
🌍 多语言支持中文、英文、法语、日语
🔄 数据兼容完全兼容原版 One API 数据库
📈 数据看板可视化控制台与统计分析
🔒 权限管理令牌分组、模型限制、用户管理
⚡ API 格式OpenAI Compatible、OpenAI Responses、Claude Messages、Google Gemini、Realtime、Rerank 等
🎨 模型支持OpenAI 系列、Claude、Gemini、Midjourney、Suno、Dify、自定义上游
🔄 格式转换OpenAI ⇄ Claude、OpenAI → Gemini、思考转内容
⚖️ 智能路由渠道加权随机、失败自动重试、用户级模型限流
😈 授权登录Discord / LinuxDO / Telegram / OIDC 统一认证
💰 用量成本按次、按量、缓存命中成本核算,灵活计费策略

1.3 部署要求

组件要求
本地数据库SQLite(Docker 需挂载/data目录)✅ 本指南采用
远程数据库MySQL ≥ 5.7.8 或 PostgreSQL ≥ 9.6
容器引擎Docker / Docker Compose
系统架构仅支持 64 位系统(amd64 / arm64),不支持 32 位系统

选择 SQLite 的理由:单机小规模部署时零依赖、零额外容器,数据落在单个new-api.db文件里,备份只需拷贝一个文件;等规模上去了再平滑迁移到 MySQL / PostgreSQL。


2. 需要的准备

  • ☁️一台服务器 / 云主机(Linux 优先,Windows / macOS 同样支持),64 位系统
  • 🐳Docker与Docker Compose(Compose 插件版:docker compose;老版本:docker-compose)
  • 🔌 放行3000 端口(云厂商安全组 + 系统防火墙)
  • 🌐 (可选)域名已解析到服务器 IP,配合 Nginx / Caddy 做 HTTPS 反向代理
  • 🐚 能 SSH 到服务器,或本机已安装 Docker Desktop

验证 Docker 环境:

docker--versiondockercompose version

3. 部署

💡 最新版 Docker 镜像:calciumion/new-api:latest

3.1 方式一:Docker Compose(推荐)

官方仓库的docker-compose.yml默认带了postgres + redis等多个服务(其中SQL_DSN=postgresql://...指向 PostgreSQL)。本指南做的是SQLite 精简版:去掉数据库/缓存容器,不设置SQL_DSN,New API 会自动使用 SQLite,数据落在挂载的/data目录中。

① 新建部署目录并编写docker-compose.yml:

mkdir-pnew-api&&cdnew-apivimdocker-compose.yml
# New-API Docker Compose Configuration(SQLite 精简版)version:'3.4'services:new-api:image:calciumion/new-api:latestcontainer_name:new-apirestart:alwayscommand:--log-dir /app/logsports:-"3000:3000"volumes:-./data:/data# SQLite 数据库文件(/data/new-api.db)持久化到宿主机-./logs:/app/logs# 日志目录持久化environment:-TZ=Asia/Shanghai# 时区-ERROR_LOG_ENABLED=true# 启用错误日志记录-BATCH_UPDATE_ENABLED=true# 启用批量更新-NODE_NAME=new-api-node-1# 节点名称(审计日志标识)# - MEMORY_CACHE_ENABLED=true # 无 Redis 时可开内存缓存(可选)healthcheck:test:["CMD-SHELL","wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1"]interval:30stimeout:10sretries:3

② 启动服务:

dockercompose up-ddockerps# 确认 new-api 容器状态为 Up (healthy)

③ 访问系统:

浏览器打开http://<服务器IP>:3000,首次打开按页面提示初始化管理员账号即可。

🎉 部署完成!默认页面即登录/注册入口,无需额外配置数据库。

3.2 方式二:Docker 命令(SQLite 默认)

不想用 Compose 的话,一条命令即可:

dockerpull calciumion/new-api:latestdockerrun--namenew-api-d--restartalways\-p3000:3000\-eTZ=Asia/Shanghai\-v./data:/data\calciumion/new-api:latest

💡 路径说明:./data:/data为相对路径,数据保存在当前目录的data文件夹;也可改为绝对路径如-v /your/custom/path:/data。

3.3 多机部署注意事项(扩展)

  • 所有节点必须使用同一个主数据库,并设置相同的SESSION_SECRET,否则 Access Token、Refresh 会话无法一致校验;
  • 连接同一个 Redis 的节点还必须设置相同的CRYPTO_SECRET,否则缓存键摘要不一致,无法共享缓存;
  • 单机 SQLite 场景无需关心上述内容,直接跳过即可。

4. 环境变量

New API 支持通过环境变量进行配置。在docker-compose.yml的environment段(或docker run -e)中设置即可。以下为常用变量(摘自官方文档):

变量名说明默认值
SESSION_SECRET鉴权签名密钥;多机部署时所有节点必须保持一致,务必改为随机字符串-
SESSION_COOKIE_SECUREtrue:启用 Secure Cookie 与严格 refresh/logout OriginGuard;false/未配置:关闭(仅本地 HTTP)false
SESSION_COOKIE_TRUSTED_URLSecure 模式必填:允许调用 refresh/logout 的精确 HTTPS Origin,多个用英文逗号分隔-
TRUSTED_PROXIES信任的代理 IP/CIDR 列表;none为严格模式回环/RFC1918/ULA
USER_SESSION_ACTIVE_LIMIT单用户最大活跃登录 Session 数50
USER_SESSION_ISSUANCE_LIMIT单用户在签发窗口内可创建的 Session 总数100
USER_SESSION_ISSUANCE_WINDOW_SECONDSSession 签发计数窗口(秒)86400
USER_SESSION_REVOKED_RETENTION_DAYSrevoked Session 保留天数(审计用)7
USER_SESSION_HOURLY_ALERT_THRESHOLD全局每小时 Session 签发告警阈值(只告警不拒绝)5000
CRYPTO_SECRET缓存键 HMAC 密钥;共享 Redis 的节点必须一致跟随SESSION_SECRET
SQL_DSN数据库连接字符串。SQLite 场景不要设置,留空即用 SQLite-
REDIS_CONN_STRINGRedis 连接字符串(缓存,可选)-
MEMORY_CACHE_ENABLED内存缓存开关(无 Redis 时推荐开启)false
STREAMING_TIMEOUT流模式无响应超时时间(秒);出现空补全可调大120
STREAM_SCANNER_MAX_BUFFER_MB流式扫描器单行最大缓冲(MB),图像生成等超大data:片段需调大64
MAX_REQUEST_BODY_MB请求体最大大小(MB,解压后计),超限返回41332
AZURE_DEFAULT_API_VERSIONAzure API 版本2025-04-01-preview
ERROR_LOG_ENABLED错误日志开关false
TZ时区,如Asia/Shanghai-
BATCH_UPDATE_ENABLED批量更新开关(提升性能)false
NODE_NAME节点名称,审计日志中标识节点身份-

4.1 SQLite 场景要点

  1. 不设置SQL_DSN:留空即自动使用 SQLite,数据库文件位于容器内/data/new-api.db;
  2. 挂载/data目录:务必用-v ./data:/data把数据持久化到宿主机,否则容器重建数据全丢;
  3. 缓存二选一:小规模可直接开MEMORY_CACHE_ENABLED=true,无需 Redis;并发量上来后再加 Redis(REDIS_CONN_STRING=redis://:密码@redis:6379)。

📖 完整环境变量说明见官方文档:环境变量


5. 页面配置

5.1. 登录

5.2. 渠道配置

这里 需要到对应提供商的开放平台获取 base_url (OpenAI) 以及 api秘钥
例子(deepseek) 还需要填入api秘钥


5.3. 模型配置

这里供应商选择之前创建的渠道
而且模型名称需要查看供应商提供的模型目录,例子:

5.4. 模型金额配置

到此,模型配置完成,但是必须为模型配置金额不然不可使用

添加模型并定价

5.5. 测试模型

warning 支付,兑换码等功能需要满足合规声明,可跳转到第7章

5.6. 代码测试

5.6.1. 生成apiKey

切换普通用户

5.6.2. python代码demo
# Please install OpenAI SDK first: `pip3 install openai`importosfromopenaiimportOpenAI client=OpenAI(api_key="sk-IptFK2qZs3lRu0dbCtkz1hQ9ZbwN6yCXXBkZdnnnJ5M0GsmE",#该秘钥为本地项目生成,复制无用base_url="http://localhost:3001/v1")# 端口按你实际映射的宿主端口修改,本指南部署示例为 3000response=client.chat.completions.create(model="deepseek-v4-flash",messages=[{"role":"system","content":"You are a helpful assistant"},{"role":"user","content":"Hello"},],stream=False,extra_body={"thinking":{"type":"enabled"},"reasoning_effort":"high"})print(response.choices[0].message.content)

代码测试

6. docker logs 查看

容器运行中排错、看日志是日常运维基本功,New API 容器日志用docker logs即可查看。

6.1 常用命令

# 查看容器最近 100 行日志dockerlogs--tail100new-api# 实时跟踪日志输出(Ctrl+C 退出)dockerlogs-fnew-api# 查看某个时间段之后的日志dockerlogs--since1h new-api# 查看容器状态(是否健康、重启次数)dockerps-adockerinspect new-api--format'{{.State.Status}} RestartCount={{.RestartCount}}'

6.2 日志文件

启动时通过command: --log-dir /app/logs指定了日志目录,并挂载到宿主机./logs:

# 宿主机直接查看日志文件ls-lalogs/tail-flogs/*.log# 进入容器查看dockerexec-itnew-apishls-la/app/logs

6.3 常见日志排查

现象日志线索处理
容器反复重启docker logs new-api有 panic / 端口占用检查 3000 端口是否被占用,ERROR_LOG_ENABLED=true开详细日志
页面 502 / 打不开容器未 healthy用docker compose ps看健康检查结果,/api/status是否返回success: true
渠道 401 / 超时日志中有上游报错检查渠道密钥、代理地址;流式空补全调大STREAMING_TIMEOUT

7. 常见问题:合规声明

7.1 问题现象

较新版本的 New API 在支付相关功能(支付网关、充值、兑换码、订阅计划、邀请返利等)加入了合规声明确认弹窗:未确认前,前端弹窗反复出现,付费相关功能被锁定无法使用。

⚠️ 说明:所有后端合规检查最终调用IsPaymentComplianceConfirmed()这一个函数,前端状态也是读后端返回的payment_compliance_confirmed字段。只要后端认为已确认,前端弹窗和锁定 UI 自动消失。

7.2 方案一:改数据库(推荐,实测可行 ✅)

无需重新编译,直接把配置项写入options表标记为已确认。

SQLite 版 SQL:

INSERTORREPLACEINTOoptions("key","value")VALUES('payment_setting.compliance_confirmed','true'),('payment_setting.compliance_terms_version','v1');

容器内执行(SQLite):

dockerexec-itnew-api sqlite3 /data/new-api.db"INSERT OR REPLACE INTO options (\"key\",\"value\") VALUES ('payment_setting.compliance_confirmed', 'true'), ('payment_setting.compliance_terms_version', 'v1');"

💡 若容器内没有sqlite3命令(镜像精简版),可用宿主机工具改库:

# 停容器 → 拷出数据库 → 宿主机改 → 拷回 → 启动dockercpnew-api:/data/new-api.db ./new-api.db sqlite3 ./new-api.db"INSERT OR REPLACE INTO options (\"key\",\"value\") VALUES ('payment_setting.compliance_confirmed', 'true'), ('payment_setting.compliance_terms_version', 'v1');"dockercp./new-api.db new-api:/data/new-api.dbdockerrestart new-api

执行成功后刷新页面,弹窗消失,充值、兑换码、订阅等付费功能恢复可用。

7.3 方案二:改源码(彻底去除,升级不受影响)

修改setting/operation_setting/payment_setting.go:

funcIsPaymentComplianceConfirmed()bool{returntrue}

然后重新编译部署。适用于长期自用、不想每次升级后都改库的场景。


📜 合规提示与参考

[!WARNING]
本项目仅面向合法授权的 AI API 网关、组织内部鉴权、多模型管理、用量统计、成本核算和私有化部署场景。将项目作为面向公众的生成式 AI 服务或 API 转售服务运营时,使用者应先完成备案、内容安全、实名、日志留存、税务、支付和上游授权等合规义务,遵守《生成式人工智能服务管理暂行办法》等监管要求。本文第 7 节仅为自建实例解除弹窗的技术操作说明,不代表豁免任何合规义务。

参考链接:

  • 官方仓库:github.com/QuantumNous/new-api
  • 官方文档:docs.newapi.pro
  • 部署指南:安装文档
  • 环境变量:环境变量文档
  • 常见问题:FAQ

如果本文对你有帮助,欢迎点赞 👍、收藏 ⭐、评论互动,我会持续更新更多 AI 网关与部署实战教程。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询