这个项目能做什么
# RelayAB 概述
RelayAB 是一个自托管的 AI API 网关(中转站),旨在将上游 AI 服务的 API Key 安全、可控地分享给少数用户,并提供精细的权限和用量管理。它支持一键部署到 Vercel,并兼容 OpenAI 和 Anthropic 的 API 协议。
## 核心功能
- **多用户与角色**:支持管理员(admin)和普通用户(user)两种角色,用户密码使用 bcrypt 单向散列存储。
- **积分配额管理**:管理员可为每个账号分配积分总量和可访问的模型,账号下的所有 API Key 共享该积分,用尽后全部停止。
- **用户自助服务**:普通用户可在控制台自行创建、重命名、启用/停用或删除 API Key,也可自助修改密码。
- **精细的 Key 控制**:每个用户可创建多把 API Key,每把 Key 可独立配置过期时间、启用状态和模型白名单(只能在账号白名单基础上收窄)。
- **兼容协议**:支持 OpenAI Chat Completions 和 Anthropic Messages 协议,并支持客户端模型到上游真实模型的映射。
- **安全存储**:上游 Provider Key 使用 AES-256-GCM 加密后存储在 Redis 中,主密钥丢失将导致数据永久不可用。
- **多语言界面**:默认中文,支持英文,可在页脚一键切换。
- **用户友好的文档页**:提供可复制的接口地址和 OpenAI/Anthropic 兼容示例代码。
## 技术栈
- **框架**:Next.js 15 App Router + React 19 + TypeScript 5
- **数据存储**:Upstash for Redis(可通过 Vercel Marketplace 一键安装)
- **认证**:iron-session 8 + bcryptjs(work factor 12)
- **加密**:AES-256-GCM + bcryptjs
- **上游 AI 集成**:Vercel AI SDK
- **测试**:Vitest + Playwright
## 快速开始
1. **安装依赖**:`pnpm install`
2. **配置环境变量**:复制 `.env.example` 为 `.env.local`,只需设置 `RELAY_AUTH`(主密码,也是管理员登录密码)。Upstash 的变量在 Vercel 上会自动注入。
3. **启动开发服务器**:`pnpm dev`,访问 `http://localhost:3000`。
4. **登录**:首次启动会自动创建管理员账号,用户名默认为 `admin`,密码为 `RELAY_AUTH` 的值。
## 部署到 Vercel
项目提供了一键部署按钮,部署时只需填写 `RELAY_AUTH` 环境变量。部署成功后,通过 Vercel Marketplace 安装 Upstash 数据库,然后重新部署(Redeploy)即可生效。
## 安全要点
- 用户密码使用 bcrypt 单向散列,无法反推原文。
- 客户 API Key 仅存储其 SHA-256 哈希值,明文只在创建时返回一次。
- 上游 Provider Key 使用 AES-256-GCM 加密存储,主密钥丢失即不可恢复。
- Session Cookie 使用 iron-session 加密,并设置 HttpOnly、Secure 和 SameSite=Lax 属性。
## 文档与运维
项目提供了详细的架构、数据模型、API 路由、测试和部署文档。同时包含运维脚本,如 bootstrap-admin、reset-password、rotate-key 和 list-usage 等命令。
## 许可证
MIT
评论
0 评分人数达到10人后显示
登录后参与讨论。