免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

ChatGPT-Admin-Web多租户架构实现:企业级部署最佳实践指南

ChatGPT-Admin-Web多租户架构实现:企业级部署最佳实践指南 ChatGPT-Admin-Web多租户架构实现企业级部署最佳实践指南【免费下载链接】AChat AChat - An open-source/self-hosted/local-first AI platform, designed for enterprises and teams, perfectly combining powerful local processing capabilities with seamless remote synchronization.项目地址: https://gitcode.com/gh_mirrors/ch/AChatChatGPT-Admin-WebCAW是一款面向企业团队的自托管 AI 共享平台让组织内多用户安全地共享使用大模型能力。本文带你拆解它的多租户架构设计如何通过自托管单实例 多用户隔离实现数据隔离、角色权限与按量计费并给出可落地的企业级部署最佳实践。为什么 AI 平台需要多租户架构企业引入大模型应用时通常会面对三类核心难题挑战直接后果CAW 的应对思路数据隐私对话记录、企业资料外泄风险自托管部署数据留在自有数据库用户隔离员工互相看到彼此对话/账单所有数据按用户归属 RBAC 权限成本失控API 费用不可预测、无法分摊Key 池调度 套餐配额 订阅计费 多租户架构的本质让多个使用者安全地共享一套系统同时彼此数据互不可见、成本各自可算。多租户设计哲学一个实例一个租户CAW 没有把多家公司塞进同一个数据库而是采用更彻底的方案——每个企业 / 团队部署自己独立的实例租户级隔离不同企业各自拥有独立的 PostgreSQL 数据库、Redis 与配置数据在物理层面完全隔离天然满足合规要求实例内多用户单个实例内部是完整的多用户 角色权限体系覆盖员工注册登录、对话、订阅、管理后台等全流程。项目采用 pnpm monorepo 组织职责划分非常清晰packages/frontend基于 Next.js 的用户端与管理后台前端packages/backend基于 Nest.js Fastify 的 API 后端packages/shared前后端共享的 DTO 与类型定义prisma/PostgreSQL 数据模型与迁移脚本见 schema.prisma。这种实例即租户的模式是企业级部署中最可靠的租户隔离方式——你不需要信任任何共享层所有数据都在自己的机房里。用户数据隔离每条记录都有明确归属租户隔离的基础是数据归属。在数据模型定义 schema.prisma 中所有核心业务表都通过外键绑定到用户ChatSession对话会话→userId每个会话只属于一个用户ChatMessage聊天消息→userIdchatSessionId消息双重归属且带isBlocked标记供管理员审核拦截Order订单→userIdproductId每个用户的账单彼此独立ChatSetting→userId个性化设置默认模型、温度等按用户存储。配合User表上的role、isBlocked字段管理员可以在后台封禁某个员工账号其全部数据立即失去访问入口——这是用户级资源隔离的标准做法。角色权限与认证JWT RBAC 双保险权限体系是 CAW 企业级安全的关键一环实现在全局认证守卫 auth.guard.ts全局拦截AuthGuard通过APP_GUARD注入所有 API 默认需要认证只有显式标记Public()的接口才放行JWT 认证Token 采用 HS256 或 ES256 算法签发支持非对称密钥默认有效期 7 天payload 中携带id与role核心逻辑见 jwt.service.tsRBAC 角色控制数据模型中定义了Admin/User两种角色通过Roles(Role.Admin)装饰器即可将管理端接口用户管理、订单审计、内容审核限制为仅管理员可访问。也就是说员工只能操作自己的数据管理员通过独立的管理后台dashboard查看全局统计与对话审计职责边界清晰。资源配额管理API Key 池与套餐限次共享大模型能力最怕被用穿。CAW 用两层机制控制资源第一层Key 池调度。OpenAIKey模型支持配置多把 API Key并附带weight权重、rateLimit限流、usage/tokenUsage用量统计、priceRatio价格比例等字段。管理员可以动态增删 Key、按权重分配流量实现负载均衡与故障切换。第二层套餐限次。中间表ModelInProduct定义了在duration时间内最多使用times次的规则——例如某高级模型每月限 500 次而基础模型不限次。配额与产品套餐绑定让不同等级的用户消耗不同成本档位的资源。按用户计费订阅与订单体系CAW 内置了完整的商业化模块product/order两个后端模块核心模型模型作用Product套餐定义价格分、库存、持续时间-1 表示一次性2592000表示严格的一个月ModelInProduct套餐包含的模型及其使用次数上限Order用户订单状态机Pending → Paid / Failed / Refunded区分订阅与一次性购买Category产品分类支持标签化管理管理员可在后台为不同部门配置不同套餐员工通过前端购买页自助订阅支付通过可插拔的支付服务对接例如迅虎支付的配置效果企业级部署最佳实践一键容器化部署依赖只有两个基础组件均可用 Docker 快速拉起docker run -itd --name caw -e POSTGRES_PASSWORDyour_password -p 5432:5432 -d postgres docker run -p 6379:6379 -d redis/redis-stack:latest然后克隆仓库并完成初始化详见官方快速上手文档 quickstart.mdxgit clone https://gitcode.com/gh_mirrors/ch/ChatGPT-Admin-Web cd ChatGPT-Admin-Web pnpm install export DATABASE_URLpostgres://postgres:your_passwordlocalhost:5432/postgres pnpm run db:init前后端各自带有 Dockerfile可以直接打包成镜像进入企业镜像仓库配合 Nginx 反向代理做静态资源与 API 分流mode: nginx是默认部署模式。进程守护与自动重启生产环境推荐使用 PM2 托管ecosystem.config.js 已内置好配置自动重启 2G内存上限自动拉起保证服务高可用。配置零门槛首次启动时后端会自动生成config.json并校验数据库 / Redis 连接见 main.ts后续修改标题、端口、JWT 密钥、OpenAI Key 列表都只需编辑这一个文件。所有配置项都由 Zod 模式校验config.ts写错会在启动时直接报错避免静默失败。数据库升级则由 run.sh 自动执行prisma migrate部署脚本化程度很高。内容安全与消息触达企业场景下合规触达同样重要内容安全内置content-safe库通过 worker 池异步执行关键词过滤与替换违规内容会被isBlocked标记管理员可在后台审计全部对话与消息短信通知支持阿里云 / 腾讯云 / UniSMS 等服务商用于验证码等场景例如 UniSMS 的配置效果邮件服务支持 SMTP / Resend / Mailgun / Elastic 等多种渠道适合发送订阅提醒与账户通知总结CAW 的多租户架构可以概括为一句话用自托管单实例换取租户级数据隔离用多用户 RBAC 配额计费支撑实例内的组织化协作。它的实践价值在于 实例即租户——数据物理隔离合规成本最低 JWT 全局守卫 Admin/User 角色——权限边界清晰 Key 池 套餐限次 订阅订单——AI 使用成本可预测、可分摊 Docker PM2 单文件配置——部署运维门槛极低。如果你的团队正在评估自托管 AI 平台这套架构是一个非常值得参考的落地范本。【免费下载链接】AChat AChat - An open-source/self-hosted/local-first AI platform, designed for enterprises and teams, perfectly combining powerful local processing capabilities with seamless remote synchronization.项目地址: https://gitcode.com/gh_mirrors/ch/AChat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表