租户设置
本项目是单租户自托管:一次部署服务一个客户环境,应用(appkey)是最外层隔离单位。没有“租户/组织/工作区”对象,也没有跨租户管理接口;需要多租户 SaaS 时应在部署层为每个租户独立实例。
概念
| 需求 | 本项目能力 | 建议 |
|---|---|---|
| 业务线隔离 | 应用(appkey)隔离用户/群/消息/配置 | 每个业务线一个应用 |
| 组织/成员 | 管理端子账号(全局,不按应用) | 用 RBAC 子账号分权 |
| 计费主体 | 无(自托管) | 不适用 |
| 数据驻留 | IM_DATA_DIR 单目录/单库 | 按租户独立部署 |
| 域名/品牌 | 部署层反向代理与静态资源 | 每租户独立域名 |
- 管理 API 的账号与应用列表是部署级全局,不按租户过滤。
- 没有 tenant/organization/workspace 端点;不要按类似路径接入。
- 应用之间数据不互通;同一应用内通过用户/群/聊天室再做业务隔离。
不适用项
自托管版没有租户套餐、席位购买、组织计费与跨租户账单;本页只描述隔离模型。
前置条件
- 服务端已启动(默认
http://127.0.0.1:8080),控制台入口http://127.0.0.1:8080/console/#apps(tab#apps:应用与密钥)。 - 请求头
X-Admin-Secret与服务端IM_ADMIN_SECRET一致(本地默认dev-admin)。 - 已在控制台选中应用;带
{appkey}的接口都按应用隔离。 - 自托管版无购买、计费、套餐、续费与发票流程(不适用项);本页只覆盖配置、查询与治理接口。
步骤
- 规划隔离边界
一个客户/业务线一个应用;不要把不相关业务塞进同一 appkey。
- 创建应用
在「应用与密钥」创建并保存 AppSecret;每个应用独立回调/推送/词表配置。
- 分配管理权限
用子账号 + 角色控制谁能访问控制台;注意账号是部署级全局。
- 多租户部署
需要强隔离时按租户独立实例/独立数据目录,而不是在同一实例里模拟租户。
参数表
| 能力 | 方法与路径 | 说明 |
|---|---|---|
| 应用列表/创建 | GET/POST /api/admin/apps | 部署级;无租户字段 |
| 应用详情 | GET /api/admin/apps/{appkey} | 含用户/消息/在线计数 |
| 管理账号 | /api/admin/accounts | 部署级 RBAC,不按应用 |
| 数据目录 | IM_DATA_DIR | 环境变量(非 API) |
示例
为两个业务线创建独立应用
Shell
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"appkey":"tenant-a","name":"租户 A"}'
curl -sS -X POST "http://127.0.0.1:8080/api/admin/apps" \
-H 'X-Admin-Secret: dev-admin' \
-H 'content-type: application/json' \
-d '{"appkey":"tenant-b","name":"租户 B"}'
curl -sS -X GET "http://127.0.0.1:8080/api/admin/apps" \
-H 'X-Admin-Secret: dev-admin'常见问题
支持多租户 SaaS 吗?
不支持在同一实例内做租户隔离;请按租户独立部署。
应用之间数据会串吗?
不会。用户、群、消息、配置都按 appkey 前缀隔离。
子账号能只管理一个应用吗?
当前 RBAC 是部署级角色,不提供按应用授权。
租户能自己登录控制台吗?
可以给租户创建子账号,但其可见范围是部署级;强隔离请独立部署。