本文记录了在中国网络环境中使用 Docker 自托管 Rocket.Chat 升级至 7.x 后,遇到“只读模式”限制的问题。核心原因并非配置错误,而是由于 中国防火墙(GFW)阻断了关键的 DNS 与 API 请求。最终通过 软路由启用全局代理 成功解决,特此记录分享。
🧩 问题现象
升级 Rocket.Chat 到 7.2.0 后,后台出现以下提示:
Workspace in read-only mode. Admins can restore full functionality by connecting it to the internet or upgrading to a premium plan.
📖 背景介绍
Rocket.Chat 从 7.0 起更改许可策略:
- 社区版也需定期联网与 Rocket.Chat Cloud 通信
- 若无法联网或未注册 workspace,将默认进入 只读模式
- 免费的 Starter 计划(最多 50 用户)依然支持
⚠️ 核心问题并非配置,而是 GFW 拦截
在我的部署环境中:
- 宿主机、容器 理论上可以访问外网
/etc/resolv.conf已正确配置 Google DNS (8.8.8.8)- 容器的 Docker DNS 显示正常
但容器中执行:
bashCopyEditwget https://releases.rocket.chat/v2/server/supportedVersions
始终报错:
vbnetCopyEditwget: bad address 'releases.rocket.chat'
这意味着请求被 DNS 劫持或解析失败。
🛠️ 排查过程(简略)
尝试的修复方法:
- ✅ 修改
daemon.json添加 DNS - ✅ docker-compose 加
dns字段 - ✅ 重启 Docker 并强制重建容器
- ✅ 容器内
resolv.conf显示正确
但一切正常的前提下,仍然无法解析 Rocket.Chat 的域名。
✅ 最终解决方案:开启软路由全局代理
原本使用的是“绕过大陆IP”的透明代理模式:
- 国内网站直连,国外网站走代理
- 但 DNS 请求仍经常被拦截或污染(即使配置了 8.8.8.8)
切换为“全局代理模式”后,问题立即解决:
- 容器内成功解析
releases.rocket.chat - 后台点击
Sync license成功 - “只读模式”提示消失

🔓 成功注册 Starter 计划后界面
- Plan: ✅ Starter(免费)
- License: ✅ 同步成功
- Seats: ✅ 10/50 使用中
- 系统恢复读写功能,工作区可正常运行
🧠 经验总结
| 项目 | 内容 |
|---|---|
| 真正原因 | 中国防火墙限制访问 Rocket.Chat 云服务 |
| 修复关键 | 开启软路由全局代理,让容器网络走代理 |
| 无效操作 | 仅修改 DNS、compose 配置无法突破 GFW |
| 建议方式 | 若在中国大陆运行,建议一律开启容器代理或使用 VPN 路由 |
| 社区版限制 | 从 7.0 起不再支持无许可证离线运行 |
📦 建议补充操作
- 备份
docker-compose.yml与注册令牌 - 确保注册 Rocket.Chat Cloud Workspace,享受免费的 Starter 计划(<50用户)
- 后续升级时注意版本日志变化(推荐用 7.2.1 或更高)
✍️ 结语
这次排查意识到,在中国使用开源软件不仅要关注技术配置,更要理解 网络访问现实。即使一切配置正确,如果缺乏“代理意识”,也可能被困在看似神秘的错误中。
感谢软路由全局代理,让 Rocket.Chat 起死回生 🙏