首页 · 使用指南 · 常见问题 · 配置参数 · 架构 · 安全 · 多 Agent · 多渠道 · 命令
本文档介绍 openclaw-rocketchat 插件的安全设计、凭据生命周期和备份恢复机制。
安装 (install-rc.sh) 配置 (setup / add-bot) 运行时
┌──────────────────────┐ ┌──────────────────────────┐ ┌──────────────────┐
│ 生成 20 位随机密码 │ │ 弱密码检测 → 自动加固 │ │ WebSocket + TLS │
│ ↓ │ │ ↓ │ │ authToken 认证 │
│ 通过环境变量传入 RC │ ──→ │ 凭据存入安全目录 (0600) │ ──→ │ 凭据不进入日志 │
│ ↓ │ │ ↓ │ │ │
│ 保存到 .rc-info (0600)│ │ 同步备份到 .rc-credentials │ │ │
│ ↓ │ │ │ │ │
│ 关闭公开注册 │ │ │ │ │
└──────────────────────┘ └──────────────────────────┘ └──────────────────┘
install-rc.sh 在安装时自动生成 20 位强随机密码:
# 密码生成逻辑(/dev/urandom + base64)
RC_ADMIN_PASS=$(head -c 18 /dev/urandom | base64 | tr -d '/+=' | head -c 20)密码通过 Docker 环境变量 ADMIN_PASS 传入 Rocket.Chat 容器,从启动那一刻起就不存在弱口令窗口。
同时自动开启:
Accounts_RegistrationForm: "Disabled"— 禁止公开注册Accounts_TwoFactorAuthentication_By_Email_Enabled: "false"— 禁用邮箱二步验证(自建服务无邮件服务)
如果 Rocket.Chat 仍使用默认 admin/admin,openclaw rocketchat setup 会自动检测并执行加固:
- 用
admin/admin登录成功 → 确认为弱口令 - 调用 RC API
users.update将密码改为 24 位强随机密码 - 新密码保存到凭据文件和备份文件
setup 自动加固流程:
admin/admin 登录成功 → 生成强密码 → 调用 API 修改 → 保存凭据 → 关闭公开注册
所有凭据分布在两个位置,互为备份:
~/.openclaw/credentials/rocketchat/ ← 插件凭据目录(插件重装可能丢失)
├── admin.json ← 管理员 userId + authToken + password
├── bots.json ← 机器人 userId + password / authToken
└── users.json ← 用户列表 + 权限
~/rocketchat/ ← RC 安装目录(插件重装不影响)
├── .rc-info ← 安装信息(服务器地址、域名、管理员凭据)
├── .rc-credentials ← 凭据完整备份(管理员、机器人、用户密码)
├── docker-compose.yml
├── nginx.conf
└── ssl/
| 文件 | 位置 | 用途 | 插件重装后 |
|---|---|---|---|
admin.json |
~/.openclaw/credentials/ |
管理员登录 | ❌ 可能丢失 |
bots.json |
~/.openclaw/credentials/ |
机器人连接 | ❌ 可能丢失 |
.rc-info |
~/rocketchat/ |
安装信息 + setup 自动检测 | ✅ 保留 |
.rc-credentials |
~/rocketchat/ |
全量凭据备份 | ✅ 保留 |
每当创建或更新凭据时,自动同步到 ~/rocketchat/.rc-credentials:
saveAdminCredentials()→ 自动备份管理员凭据saveBotCredentials()→ 自动备份机器人凭据createPersonalAccount()→ 自动备份用户密码
插件重装后再次运行 setup 或 add-bot,如果用户/机器人在 RC 中已存在:
用户名冲突恢复(3 级降级策略):
1. 从 .rc-credentials 读取备份密码 → 登录验证 → 恢复成功
↓ 失败
2. 用用户刚输入的密码尝试登录 → 匹配则恢复
↓ 失败
3. 用管理员权限调用 API 强制重置密码
机器人名冲突恢复(2 级降级策略):
1. 从 .rc-credentials 读取备份密码 → 登录验证 → 恢复成功
↓ 失败
2. 用管理员权限调用 API 强制重置密码 → 保存新凭据
| 文件 | 权限 | 说明 |
|---|---|---|
~/.openclaw/credentials/rocketchat/ |
0700 |
仅所有者可进入 |
admin.json / bots.json / users.json |
0600 |
仅所有者可读写 |
~/rocketchat/.rc-info |
0600 |
仅所有者可读写 |
~/rocketchat/.rc-credentials |
0600 |
仅所有者可读写 |
Windows 上不设置 Unix 权限,但文件位于用户主目录下,默认受 NTFS ACL 保护。
- 不要分享
.rc-info和.rc-credentials文件 — 它们包含明文密码 - 不要将凭据目录加入 Git —
~/.openclaw/credentials/应始终排除在版本控制外 - 定期检查防火墙 — 确保只开放 443 和 80 端口
- HTTPS 是必须的 —
install-rc.sh自动配置 Let's Encrypt 证书,不要降级为 HTTP - 关注 RC 安全更新 — 定期
docker pull获取最新的 Rocket.Chat 镜像