如何把 One API 部署到 Zeabur 平台并配置 MySQL 防止重新部署后数据丢失
【免费下载链接】one-apiLLM API 管理 & 分发系统,支持 OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360 智脑、腾讯混元等主流模型,统一 API 适配,可用于 key 管理与二次分发。单可执行文件,提供 Docker 镜像,一键部署,开箱即用。LLM API management & key redistribution system, unifying multiple providers under a single API. Single binary, Docker-ready, with an English UI.项目地址: https://gitcode.com/GitHub_Trending/on/one-api
如果你打算把 One API 托管到 Zeabur 这类云端平台,会遇到一个实际问题:不配置外部数据库时,One API 使用内置的 SQLite 存储数据,重新部署后数据会丢失。One API 官方文档(README.md 的「部署到 Zeabur」一节)给出的方案是:在 Zeabur 上创建一个 MySQL 服务作为独立 Service,通过环境变量SQL_DSN让 One API 连接它,这样渠道、令牌、用户等数据都落在外部 MySQL 里,重新部署不再丢数据。Zeabur 的服务器在国外,文档提到它自动解决了网络问题,免费额度也足够个人使用。
下面按文档给出的操作顺序,把 One API 部署到 Zeabur 并接上 MySQL。
准备:fork 仓库并进入 Zeabur 控制台
Zeabur 部署 One API 走的是 Git 仓库方式,而不是直接拉 Docker 镜像,因此第一步需要先把 one-api 仓库 fork 一份,后面在 Zeabur 里选择你 fork 的仓库来部署。
然后登录 Zeabur 并进入控制台。
在 Project 中添加 MySQL 服务并创建数据库
- 新建一个 Project。
- 在 Service -> Add Service 中选择 Marketplace,选择 MySQL,并记下连接参数:用户名、密码、地址、端口,这四项就是后面拼
SQL_DSN的原料。 - 拷贝连接参数,执行以下语句创建数据库:
create database `one-api`注意数据库名是one-api,与后面SQL_DSN末尾的库名一致。文档没有要求手动建表——环境变量一节明确说明「无需手动建表,程序将自动建表」,One API 首次启动时会自行初始化。
从 Git 仓库添加 One API 服务
回到 Service -> Add Service,选择 Git(第一次使用需要先授权),选择你 fork 的 one-api 仓库。此时 Deploy 会自动开始,先取消它,因为还没有配置端口和数据库。
配置 PORT 与 SQL_DSN 环境变量
进入服务下方的 Variable 面板,添加两个环境变量后保存:
| 变量 | 值 |
|---|---|
PORT | 3000 |
SQL_DSN | <username>:<password>@tcp(<addr>:<port>)/one-api |
SQL_DSN中的<username>、<password>、<addr>、<port>需要替换为你在上一步 MySQL 服务里记下的用户名、密码、地址和端口。这是 MySQL 的 DSN 连接串格式,README 环境变量一节给出的同格式示例是:
SQL_DSN=root:123456@tcp(localhost:3306)/oneapi这一项直接决定标题里的问题能否解决:文档明确提示「如果不填写SQL_DSN,数据将无法持久化,重新部署后数据会丢失」。SQL_DSN设置之后,One API 使用指定数据库而非 SQLite,渠道、令牌、用户数据全部写入外部 MySQL。
重新部署并绑定域名
- 保存变量后,选择 Redeploy。
- 进入下方的 Domains,选择一个合适的域名前缀,如
my-one-api,最终域名为my-one-api.zeabur.app;也可以 CNAME 自己的域名。 - 等待部署完成,点击生成的域名即可进入 One API。
验证部署结果
- 打开生成的域名(如
my-one-api.zeabur.app),能进入 One API 页面即为部署成功。 - 使用初始账号登录:用户名
root,密码123456。README 中有明确警告:使用 root 用户初次登录系统后,务必修改默认密码123456。 - 登录后在「渠道」页面添加 API Key、在「令牌」页面生成访问令牌,这些配置写入的是 MySQL 而非容器内 SQLite,重新部署后依然保留。README 常见问题也确认:使用 MySQL 时升级不会丢数据。
限制说明
- 本文路径仅覆盖 Zeabur 上的单实例部署。README「多机部署」一节要求所有服务器
SESSION_SECRET一致、共用同一个 MySQL,并从服务器设置NODE_TYPE=slave,那是另一套操作,不在本文范围内。 - 如果上游 MySQL 需要验证身份(云数据库场景),README 提到需要在连接参数中追加
?tls=skip-verify;Zeabur 内置 MySQL 是否必须如此,文档未说明,按默认流程执行,连接报错时再参考这一项。
【免费下载链接】one-apiLLM API 管理 & 分发系统,支持 OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360 智脑、腾讯混元等主流模型,统一 API 适配,可用于 key 管理与二次分发。单可执行文件,提供 Docker 镜像,一键部署,开箱即用。LLM API management & key redistribution system, unifying multiple providers under a single API. Single binary, Docker-ready, with an English UI.项目地址: https://gitcode.com/GitHub_Trending/on/one-api
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考