这个项目能做什么

# 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