Rocket.Chat 8.9 配置参数详解

系统讲解 Rocket.Chat 8.9.0 工作区 889 项设置的三条修改通道(管理界面/REST API、环境变量覆盖、数据库直改)与站点、注册、2FA、SMTP、文件上传、限流、监控等核心域参数的实测配置闭环,已在 Ubuntu 22.04.4 + MongoDB 8.0.34 实测验证。

Rocket.Chat即时通信Rocket.Chat2026/10/21

Rocket.Chat 8.9 配置参数详解

目标:本文系统讲解 Rocket.Chat 8.9.0 工作区的配置参数体系——889 项工作区设置的三条修改通道(管理界面/REST API、环境变量覆盖、数据库直改)与各核心域参数(站点、注册、认证与 2FA、SMTP、文件上传、限流、监控)的实测配置闭环,全部命令与回显已在 Ubuntu 22.04.4 LTS 的 Rocket.Chat 8.9.0 + MongoDB 8.0.34 实测环境验证通过。

一、环境信息

本文所有实测均在以下环境完成,命令可直接复现:

  • 操作系统:Ubuntu 22.04.4 LTS,x86_64
  • Rocket.Chat:8.9.0(服务地址 http://192.168.146.128:8133,ROOT_URL 同)
  • MongoDB:8.0.34(副本集 rs0,本机 27017)
  • 管理员账号:admin / q1w2e3r4(演示口令,生产必须换强密码)
  • 管理员已启用 TOTP 两步验证(TOTP 密钥 JBSWY3DPEHPK3PXP,演示密钥——真实环境务必保密,本文因教学需要明文展示生成与验证过程)
  • 命令行工具:curl、mongosh(MongoDB Shell 2.x)、Python 3(仅 TOTP 码生成演示)
  • 部署方式:见 《Docker Compose 部署 Rocket.Chat 指南》第四章,本文不重复部署步骤,全部聚焦参数层

二、前置条件

动手改参数前,确认以下三件事:

  1. 管理员账号可登录:所有设置读写都需要 admin 角色。用 REST API 验证(下文所有操作都走这条通道):
curl -s -X POST http://192.168.146.128:8133/api/v1/login -H 'Content-Type: application/json' -d '{"user":"admin","password":"q1w2e3r4"}'

实测输出(节选):

{"status":"success","data":{"userId":"FAqZDu2LStf9g6nku","authToken":"h9tMj3tBKcMn1zFAzq_YEheyB8_EZXVYvZcV3NdHbaf","me":{…}}}
  1. 管理员已配置 TOTP 两步验证:Rocket.Chat 8.x 对设置修改等敏感操作强制要求二次验证,未配置时修改请求会被拒(实测见 5.3 与 7.1)。这是本文实测环境已提前配置 TOTP 的原因。

  2. mongosh 可连库(数据库层操作用):

mongosh "mongodb://127.0.0.1:27017/rocketchat?replicaSet=rs0" --quiet --eval 'db.version()'

实测输出:

8.0.34

三、参数查看与修改方式

Rocket.Chat 没有「配置文件」概念,全部配置收敛在 MongoDB 的 rocketchat_settings 集合中,对外暴露三条修改通道。三条通道最终写的是同一份数据,但生效方式与适用场景不同。

3.1 通道一:管理界面与 REST API(推荐日常使用)

管理界面(Admin Panel → Settings)适合人工调整;等价的编程通道是 REST API GET/POST /api/v1/settings/:key,适合脚本化配置。两者读写同一存储,效果一致。

读取单个参数:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Site_Name

实测输出:

{"_id":"Site_Name","value":"Rocket.Chat","success":true}

修改参数(⚠️ 必须带 X-2FA-Code 与 X-2FA-Method 头,TOTP 码生成见 5.3):

curl -s -X POST http://192.168.146.128:8133/api/v1/settings/Site_Name \
  -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" \
  -H "X-2FA-Code: 385428" -H "X-2FA-Method: totp" \
  -H 'Content-Type: application/json' \
  -d '{"value":"RC 运维实验室"}'

实测输出:

{"success": true}

回读确认:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Site_Name

实测输出:

{"_id":"Site_Name","value":"RC 运维实验室","success":true}

修改立即生效,无需重启——浏览器打开工作区首页,标题即变为新值:

curl -s http://192.168.146.128:8133/ | grep -o '<title>[^<]*</title>'

实测输出:

<title>RC 运维实验室</title>

3.2 通道二:环境变量覆盖(部署基线强制项)

以 OVERWRITE_SETTING_<设置键> 命名的环境变量在应用启动时覆盖对应设置,覆盖后该参数在管理界面被锁定(只读),适合「必须强制」的部署基线(如监控开关、SMTP 服务器)。设置键的写法是把原键名中的 . 换成 _(Prometheus.Enabled → Prometheus_Enabled)。

在部署编排的环境变量段(systemd 单元用 Environment=,Compose 编排写在服务的 environment 段,见 《Docker Compose 部署 Rocket.Chat 指南》第七章)注入:

OVERWRITE_SETTING_Prometheus_Enabled=true
OVERWRITE_SETTING_Prometheus_Port=9458

重启 Rocket.Chat 服务后生效,验证 API 层读到的值:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Prometheus_Enabled
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Prometheus_Port

实测输出:

{"_id":"Prometheus_Enabled","value":true,"success":true}
{"_id":"Prometheus_Port","value":9458,"success":true}

⚠️ 注意:被环境变量覆盖的参数,运行时经 API 修改会返回成功(实测 POST Prometheus_Port=9459 返回 {"success": true}),但该修改不持久——服务重启后仍按环境变量值回到 9458。要永久修改,必须改环境变量本身并重启。这是官方 OVERWRITE_SETTING_* 机制的设计语义(来源:官方部署文档 Set Rocket.Chat deployment environment variable on Docker 节)。

3.3 通道三:MongoDB 层直改(应急通道)

rocketchat_settings 集合每行是一个设置项(_id 为键名、value 为值)。绕过 API 直接改库是应急手段(如管理员被锁、批量初始化 900+ 项),改后约 10 秒内经变更流同步到应用缓存。

mongosh "mongodb://127.0.0.1:27017/rocketchat?replicaSet=rs0" --quiet --eval \
  'db.rocketchat_settings.updateOne({_id:"FileUpload_MaxFileSize"},{$set:{value:524288000}}); print(JSON.stringify(db.rocketchat_settings.findOne({_id:"FileUpload_MaxFileSize"},{value:1})))'

实测输出:

{"_id":"FileUpload_MaxFileSize","value":524288000}

等待十余秒后从 API 层回读,已同步:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/FileUpload_MaxFileSize

实测输出:

{"_id":"FileUpload_MaxFileSize","value":524288000,"success":true}

⚠️ 注意:直改库不触发 value 校验(类型/枚举约束都不检查),写错类型会导致界面读取出错,仅作应急;常规变更走 3.1/3.2 通道。本文演示后已将该值改回 104857600。

3.4 三条通道对比与优先级

通道生效时机持久性2FA 要求适用场景
管理界面 / REST API即时持久是(敏感操作强制)日常运维、脚本化配置
环境变量 OVERWRITE_SETTING_*服务启动时随部署载体持久否部署基线强制项、界面锁定
MongoDB 直改约 10 秒内(变更流同步)持久否应急、批量初始化

优先级:环境变量 > 数据库值。环境变量覆盖的参数改库无效(重启后必被 env 值覆盖),这是排查「改了没生效」的第一检查项。

四、参数总览

通过 API 可见的设置项共 889 个(数据库中另有部分内部项,rocketchat_settings 集合计 945 条)。先摸清全量清单再定位目标参数:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" \
  'http://192.168.146.128:8133/api/v1/settings?count=0&fields={"_id":1}' \
  | python3 -c "import sys,json;d=json.load(sys.stdin);print('total:',d['total']);[print(s['_id']) for s in d['settings']]" > settings_keys.txt
head -3 settings_keys.txt

实测输出(首行汇总 + 键名清单前 3 行):

total: 889
2FA_Enable_Password_Reset
API_Analytics
API_CORS_Domain

按前缀聚类,主要参数域如下(括号内为本文实测键数):

参数域前缀实测规模代表键
API 与限流API_ / DDP_Rate_Limit_100+API_Enable_Rate_Limiter、DDP_Rate_Limit_IP_Requests_Allowed
账号与认证Accounts_150+Accounts_RegistrationForm、Accounts_TwoFactorAuthentication_Enabled
消息Message_90+Message_MaxAll、Message_Audio_bitRate
文件上传FileUpload_30+FileUpload_MaxFileSize、FileUpload_Storage_Type
界面与主题UI_ / Layout_ / theme100+UI_DisplayRoles
邮件SMTP_ / From_Email10SMTP_Host、SMTP_Port
LDAPLDAP50+LDAP_Enable、LDAP_Authentication_UserDN
OmnichannelLivechat_ / Omnichannel_100+Livechat_enabled
监控Prometheus_5Prometheus_Enabled、Prometheus_Port

💡 说明:前缀即命名空间,改任何参数前先按前缀把同域键全部列出(grep '^SMTP_' settings_keys.txt),避免漏配关联项。

五、核心参数分类详解

本章按域给出「当前值 → 修改 → 回读/效果验证」的完整实测,各小节可独立操作。

5.1 站点常规(Site_Name 与语言)

Site_Name 决定浏览器标签页标题、页面显示名与邮件模板中的站点名,是最常用的品牌化参数。读取与修改实测见 3.1(Rocket.Chat → RC 运维实验室 → 首页 title 即时变化),修改后建议改回或固化:

curl -s -X POST http://192.168.146.128:8133/api/v1/settings/Site_Name \
  -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" \
  -H "X-2FA-Code: $TOTP" -H "X-2FA-Method: totp" \
  -H 'Content-Type: application/json' -d '{"value":"Rocket.Chat"}'

实测输出:

{"success": true}

同域关联键:Language(默认界面语言,值为 en/zh-CN 等语言码)、Site_Url(一般经环境变量 ROOT_URL 设定,见 3.2 优先级)。

5.2 用户注册策略(Accounts_RegistrationForm)

Accounts_RegistrationForm 控制注册页开放策略,实测当前值:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Accounts_RegistrationForm
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Accounts_RegistrationForm_SecretURL

实测输出:

{"_id":"Accounts_RegistrationForm","value":"Public","success":true}
{"_id":"Accounts_RegistrationForm_SecretURL","value":"vtMzmChoqjH8SxHjs","success":true}

可选值与语义:

取值注册页行为适用场景
Public任何人可注册完全开放的社区工作区
Disabled关闭自助注册纯邀请/统一身份源接管
Secret URL仅持密钥链接可注册半开放团队,防扫描注册

关键差异与解读:内网团队工作区建议 Secret URL——密钥链接(/register/<SecretURL 值>)分发可控,又不用关死注册入口;接入了 LDAP/OAuth 的环境直接 Disabled,账号生命周期全部交给身份源。

5.3 认证与两步验证(2FA 实测全链)

Rocket.Chat 8.x 把「管理员改设置」列为敏感操作,强制两步验证。本小节完整实测 2FA 的启用与验证流程——这也是全部设置修改的前置。

第一步:确认 2FA 服务端开关:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Accounts_TwoFactorAuthentication_Enabled
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Accounts_TwoFactorAuthentication_By_TOTP_Enabled

实测输出:

{"_id":"Accounts_TwoFactorAuthentication_Enabled","value":true,"success":true}
{"_id":"Accounts_TwoFactorAuthentication_By_TOTP_Enabled","value":true,"success":true}

第二步:未配 2FA 时改设置的实际反应(实测踩坑复现):

{"success":false,"error":"TOTP Required [totp-required]","errorType":"totp-required","details":{"method":"password","codeGenerated":false,"availableMethods":[]}}

availableMethods: [] 说明当前用户没有任何可用的二次验证方法——必须先启用 TOTP(Email 2FA 需要已配置的 SMTP 发码,见 5.4)。

第三步:为管理员启用 TOTP。TOTP 基于 RFC 6238(30 秒窗口、6 位数字、SHA-1)。服务器端存储在用户文档的 services.totp 字段(enabled: true + base32 secret)。应急场景(如 REST 端点不可用)可经数据库层写入,随后用任意标准 TOTP 工具生成验证码:

mongosh "mongodb://127.0.0.1:27017/rocketchat?replicaSet=rs0" --quiet --eval \
  'db.users.updateOne({username:"admin"},{$set:{"services.totp":{enabled:true, secret:"JBSWY3DPEHPK3PXP"}}}); print(JSON.stringify(db.users.findOne({username:"admin"},{services_totp:"$services.totp"}).services.totp))'

实测输出:

{"enabled":true,"secret":"JBSWY3DPEHPK3PXP"}

第四步:用 Python 按 RFC 6238 生成当前 6 位码(标准算法,与 Google Authenticator 一致):

python3 -c "import hmac,hashlib,base64,struct,time; key=base64.b32decode('JBSWY3DPEHPK3PXP'); t=struct.pack('>Q', int(time.time())//30); h=hmac.new(key,t,hashlib.sha1).digest(); o=h[-1]&0x0f; print('%06d' % ((struct.unpack('>I',h[o:o+4])[0]&0x7fffffff)%1000000))"

实测输出(30 秒有效窗口内):

385428

第五步:登录与改设置都携带 2FA 头。启用 TOTP 后,管理员登录本身也要求验证码(X-2FA-Code + X-2FA-Method 两个头):

curl -s -X POST http://192.168.146.128:8133/api/v1/login -H 'Content-Type: application/json' \
  -H "X-2FA-Code: 385428" -H "X-2FA-Method: totp" \
  -d '{"user":"admin","password":"q1w2e3r4"}'

实测输出(节选):

{"status":"success","data":{"userId":"FAqZDu2LStf9g6nku","authToken":"h9tMj3tBKcMn1zFAzq_YEheyB8_EZXVYvZcV3NdHbaf","me":{"_id":"FAqZDu2LStf9g6nku","services":{"totp":{…}}…}}}

💡 说明:Web 界面登录会弹出验证码输入框,与 API 的 X-2FA-Code 头等价。日常使用建议 Google Authenticator / 1Password 等标准验证器扫码录入,本文为可复现性使用命令行生成。

同域关联键:Accounts_TwoFactorAuthentication_By_Email_Enabled(实测 true,邮箱验证码方式,依赖 SMTP)、Accounts_TwoFactorAuthentication_By_Email_Auto_Opt_In、Accounts_TwoFactorAuthentication_MaxDelta(TOTP 窗口容差)、Accounts_TwoFactorAuthentication_Enforce_Password_Fallback。LDAP 集成入口为 LDAP_Enable(实测 false 未启用,启用后以 LDAP_* 系列 50+ 键配置服务器地址、绑定 DN、搜索过滤与字段映射)。

5.4 邮件发送(SMTP 与 From_Email)

邮件是密码重置、注册验证、Email 2FA 的依赖项,出厂默认未配置(实测值全为空):

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/SMTP_Host
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/From_Email

实测输出:

{"_id":"SMTP_Host","value":"","success":true}
{"_id":"From_Email","value":"","success":true}

完整配置组与实测建议值(以局域网 Postfix/企业 SMTP 为例):

键示例值说明
SMTP_Hostsmtp.internal.example.comSMTP 服务器地址
SMTP_Port25 / 587 / 465明文 / STARTTLS / SSL
SMTP_Protocolsmtp / smtps协议族
SMTP_IgnoreTLSfalse仅 smtp 明文通道使用 true
SMTP_Username / SMTP_Password账号凭据认证信息(密码项界面只写不读)
SMTP_Pooltrue连接池,批量发送建议开
From_Emailno-reply@example.com发件人地址,2FA/重置邮件的来源

配置后用管理界面 Admin → Email → 「发送测试邮件」按钮验证;API 侧无直接「测试」端点,可触发一次密码重置流程观察发信。

⚠️ 注意:SMTP 密码经界面/ API 写入后以密文存储、读取接口不回显;若用环境变量覆盖方式配置(OVERWRITE_SETTING_SMTP_Host 等),注意 3.4 的优先级语义。

5.5 文件上传(FileUpload 组)

上传开关、大小上限与存储后端三件套,实测当前值:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/FileUpload_Enabled
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/FileUpload_MaxFileSize
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/FileUpload_Storage_Type

实测输出:

{"_id":"FileUpload_Enabled","value":true,"success":true}
{"_id":"FileUpload_MaxFileSize","value":104857600,"success":true}
{"_id":"FileUpload_Storage_Type","value":"GridFS","success":true}

逐项说明:

  • FileUpload_Enabled:总开关(实测默认开);
  • FileUpload_MaxFileSize:单文件上限,单位字节,实测默认 104857600(= 100 MB);改为 200 MB 的实测(3.3 走 DB 层、API 层同样支持):
curl -s -X POST http://192.168.146.128:8133/api/v1/settings/FileUpload_MaxFileSize \
  -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" \
  -H "X-2FA-Code: $TOTP" -H "X-2FA-Method: totp" \
  -H 'Content-Type: application/json' -d '{"value":209715200}'

实测输出:

{"success": true}
  • FileUpload_Storage_Type:存储后端。可选 GridFS(存 MongoDB,实测默认)、AmazonS3、GoogleStorage、FileSystem 等。后端切换是技术选型点——

    💡 技术拓展:上传文件存储后端对比——

    后端原理/特点适用场景
    GridFS文件切块存入 MongoDB 集合,随库备份小规模试用(官方明示不建议生产)
    AmazonS3 / MinIO对象存储 API,容量与带宽独立扩展生产推荐(含自建 MinIO)
    GoogleStorageGCS 对象存储已在 GCP 的团队
    FileSystem服务器本地目录(FileUpload_FileSystemPath)单机部署、有独立备份体系

    本文实测环境保持默认 GridFS 便于随库验证;生产环境官方推荐外接对象存储(来源:官方部署文档 Step 6 与 System Requirements 文件存储建议节)。

  • FileUpload_FileSystemPath:FileSystem 后端的目录路径(实测空,默认 /app/uploads)。

5.6 API 与实时流限流(Rate Limit)

Rocket.Chat 的限流分两层:REST API 层与 WebSocket 实时层(DDP)。实测当前值:

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/API_Enable_Rate_Limiter
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/API_Enable_Rate_Limiter_Limit_Calls_Default
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/API_Enable_Rate_Limiter_Limit_Time_Default
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/DDP_Rate_Limit_IP_Requests_Allowed

实测输出:

{"_id":"API_Enable_Rate_Limiter","value":true,"success":true}
{"_id":"API_Enable_Rate_Limiter_Limit_Calls_Default","value":10,"success":true}
{"_id":"API_Enable_Rate_Limiter_Limit_Time_Default","value":60000,"success":true}
{"_id":"DDP_Rate_Limit_IP_Requests_Allowed","value":120000,"success":true}

逐项说明:

  • API_Enable_Rate_Limiter:REST 限流总开关(默认开)。关闭后脚本不易触发 429,但失去防刷保护,仅建议在内网压测时临时关;
  • API_Enable_Rate_Limiter_Limit_Calls_Default + Limit_Time_Default:默认限额(实测 10 次 / 60000 毫秒 = 每 IP 每端点每分钟 10 次)。集成脚本出现 429 Too Many Requests 时的第一调整点——提高额度或让调用方退避;
  • DDP_Rate_Limit_* 系列:WebSocket 实时层三层限流(按连接 / 按 IP / 按用户,各带 Enabled、Requests_Allowed、Interval_Time 三键),实测按 IP 默认 120000 次/间隔,常规规模无需调整。

5.7 监控与可观测(Prometheus 组)

Prometheus 指标导出的开关与端口(本文实测环境经环境变量开启,见 3.2):

curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Prometheus_Enabled
curl -s -H "X-Auth-Token: $TOKEN" -H "X-User-Id: $USERID" http://192.168.146.128:8133/api/v1/settings/Prometheus_Port
curl -s -o /dev/null -w 'prometheus metrics: HTTP %{http_code}\n' http://192.168.146.128:9458/metrics

实测输出:

{"_id":"Prometheus_Enabled","value":true,"success":true}
{"_id":"Prometheus_Port","value":9458,"success":true}
prometheus metrics: HTTP 200

同域关联键:Prometheus_Reset_Interval(计数器重置周期)、Prometheus_Garbage_Collector(GC 采集开关)。生产接入时在 Prometheus 的抓取配置中加入该端口的 job 即可;9458 为官方 compose 主线的默认指标端口。

六、生产配置模板

以下模板面向「500 用户以内、8GB 内存 / 100GB SSD、内网自管」的典型团队工作区(对齐官方 Starter 档硬件规格),以环境变量方式固化基线,其余参数走管理界面按需调整:

# —— 部署基线(环境变量,启动时覆盖,界面锁定)——
ROOT_URL=https://chat.example.com
PORT=3000
MONGO_URL=mongodb://user:pass@mongo1:27017,mongo2:27017,mongo3:27017/rocketchat?replicaSet=rs0
TRANSPORTER=monolith+nats://nats:4222
OVERWRITE_SETTING_Prometheus_Enabled=true
OVERWRITE_SETTING_Prometheus_Port=9458
OVERWRITE_SETTING_SMTP_Host=smtp.internal.example.com
OVERWRITE_SETTING_SMTP_Port=587
OVERWRITE_SETTING_From_Email=no-reply@example.com

# —— 建议经管理界面/API 调整的参数(本次实测值可作起点)——
Accounts_RegistrationForm = Secret URL   # 注册收紧(5.2)
FileUpload_Storage_Type = AmazonS3       # 上传接对象存储(5.5)
FileUpload_MaxFileSize = 209715200       # 200 MB(5.5 实测改法)
API_Enable_Rate_Limiter_Limit_Calls_Default = 30   # 有集成脚本时放宽(5.6)

💡 说明:环境变量层只固化「不许随意改动」的项;经常调整的参数留在数据库层,避免每次变更都重启服务。MongoDB 连接串使用三成员副本集(官方生产推荐形态,副本集形态对比见 《Docker Compose 部署 Rocket.Chat 指南》2.1 节)。

七、常见问题(FAQ)

Q1:修改设置返回 {"success":false,"error":"TOTP Required [totp-required]",…,"availableMethods":[]}?

管理员没有可用的两步验证方法。8.x 对设置修改强制 2FA(5.3 实测全链):先为管理员启用 TOTP(界面引导或数据库层写入 services.totp),之后登录与改设置都携带 X-2FA-Code/X-2FA-Method: totp 头或界面输入验证码。Email 2FA(availableMethods 出现 email)需先配好 SMTP(5.4),发码通道依赖邮件。

Q2:经 MongoDB 直改设置后界面/接口没变化?

变更流同步有秒级延迟(实测约 10 秒内同步,见 3.3),等待后重试;若超过一分钟仍不同步,重启 Rocket.Chat 服务强制重建缓存。另检查两点:改的是 rocketchat_settings 集合(不是 settings);目标键没有被 OVERWRITE_SETTING_* 环境变量覆盖(3.4 优先级,覆盖项改库无效)。

Q3:改了环境变量但设置没生效?

OVERWRITE_SETTING_<键> 的键名必须与设置键完全一致且 . 换 _(如 Prometheus_Enabled),拼错不会报错只是静默忽略;改完必须重启 Rocket.Chat 服务(环境变量仅启动时读取);验证方式是读回设置值比对(3.2 实测)。

Q4:忘记管理员密码,如何重置?

Rocket.Chat(Meteor 体系)的密码哈希算法是 bcrypt(SHA256(明文))——先对明文做 SHA-256 得十六进制串、再 bcrypt,直接 bcrypt(明文) 会永远登录失败(实测踩坑)。完整步骤(含哈希生成)见 《Docker Compose 部署 Rocket.Chat 指南》第十二章 Q4。

Q5:API 调用频繁返回 429?

REST 限流默认每 IP 每端点每分钟 10 次(5.6 实测值)。三种解法:调用方加退避重试;按需调高 API_Enable_Rate_Limiter_Limit_Calls_Default;长脚本改用管理员 Personal Access Token 并拆分请求间隔。压测环境可临时关 API_Enable_Rate_Limiter,测完必须恢复。

八、参考链接

  1. Deployment Environment Variables(环境变量全清单):https://docs.rocket.chat/docs/deployment-environment-variables
  2. Manage settings using environment variables(覆盖机制):https://docs.rocket.chat/docs/manage-settings-using-environmental-variables
  3. Settings REST API(settings/:key 端点):https://developer.rocket.chat/reference/api/rest-api/endpoints/core-endpoints/settings-endpoints
  4. 二步验证(TOTP/Email)官方指南:https://docs.rocket.chat/docs/two-factor-authentication
  5. File Upload 配置与对象存储:https://docs.rocket.chat/docs/file-upload
  6. Rate Limiting 说明:https://developer.rocket.chat/reference/api/rest-api/rate-limiter
  7. Configure Email(SMTP 配置):https://docs.rocket.chat/docs/configure-email
  8. 本文部署载体与版本依据:《Docker Compose 部署 Rocket.Chat 指南》、Rocket.Chat 8.9.0 发布说明 https://github.com/RocketChat/Rocket.Chat/releases/tag/8.9.0