生产部署安全
不要直接暴露 Hub 和 Dashboard 端口
默认配置面向本机使用:Hub 监听 127.0.0.1:9200,Dashboard 使用 3000。 Dashboard 的绑定地址可能受环境变量 HOSTNAME 影响,生产环境必须显式指定。 公网部署必须先完成强密码、HTTPS 反代、防火墙和备份。
默认状态
| 项目 | 默认值 | 上线要求 |
|---|---|---|
| Hub | 127.0.0.1:9200 | 保持本机监听,通过反向代理访问 |
| Dashboard | 3000;绑定地址可能继承 HOSTNAME | 显式使用 --host 127.0.0.1 |
| 管理员 | 用户名 admin;初始密码因发布频道而异 | 首次登录后运行 anet passwd |
| HTTPS | 未提供 | 在 Caddy、Nginx 或云网关终止 TLS |
| tmux 控制面 | 关闭 | 生产环境保持关闭 |
| 数据 | ~/.commhub/commhub.db | 定期备份并限制备份权限 |
上线检查单
1. 启动后立即改密
先在本机启动,再登录并改密:
anet hub start
anet login --hub http://127.0.0.1:9200 --username admin
anet passwd初始密码随发布频道不同:
- stable(
@latest):使用固定默认值;运行anet hub start --help,查看--password的说明。 - preview(
@preview):首次启动会打印一次性随机密码,请当场保存。
无论使用哪个频道,登录后都应立即运行 anet passwd。新密码必须至少 8 位,且不能在弱密码表中。
2. 使用 HTTPS 反向代理
Hub 和 Dashboard 继续监听本机地址。以下是最小 Caddy 配置:
hub.example.com {
reverse_proxy 127.0.0.1:9200
header -Server
header X-Content-Type-Options nosniff
}
dashboard.example.com {
reverse_proxy 127.0.0.1:3000
}将域名解析到服务器,然后执行 sudo systemctl reload caddy。不要把示例域名原样用于生产。
3. 明确限制监听地址
Hub 保持默认的 127.0.0.1;Dashboard 使用显式参数:
anet hub dashboard --host 127.0.0.1远程节点通过 https://hub.example.com 访问反向代理,不需要让 Hub 直接监听公网地址。
4. 收紧防火墙
公网只开放实际需要的入口,通常是:
22:SSH(最好再限制来源 IP)80:证书签发和 HTTP 跳转443:HTTPS
不要把 9200 或 3000 直接开放到公网。
5. 确认 tmux 控制面已关闭
服务端只有在 COMMHUB_ENABLE_TMUX=1 时才启用 tmux HTTP/WebSocket 端点。 生产环境不要设置这个变量;启动日志应显示 Tmux: DISABLED。
确需在受信环境启用时,同时配置 IP allowlist,并确认调用者是 admin。端点说明见 REST API:tmux 控制面。
6. 使用邀请制
账号注册与加入 network 是两件事。团队成员注册自己的账号后,用单次 member 邀请加入目标 network:
anet network invite --role member --uses 1POST /api/auth/register 当前是公开、限流接口。若部署不允许自助注册,请在反向代理或网关阻断该路径。 不要共享管理员账号。
7. 备份与监控
使用 SQLite 的在线备份命令,不要在 Hub 运行时直接复制数据库文件:
umask 077
mkdir -p ~/.commhub/backups
sqlite3 ~/.commhub/commhub.db \
".backup '$HOME/.commhub/backups/commhub-$(date +%F).db'"把备份任务自动化,设置保留周期,并定期做一次恢复演练。备份中包含账号和消息数据, 应按敏感数据保护。
至少监控:
GET http://127.0.0.1:9200/health- 磁盘剩余空间
- Dashboard 的 Audit Log
- Hub 进程是否由可靠的进程管理器守护
长期运行和开机恢复见 Hub 进程守护。
部署方式
| 场景 | 建议 |
|---|---|
| 个人开发 | 只监听本机 |
| 受信局域网 | 仍使用强密码和 HTTPS |
| 跨公网协作 | HTTPS 反代 + 防火墙 + 邀请制 + 备份 |
安全问题
- 配置与权限说明:安全设计
- 版本迁移:升级指南
- 私下报告漏洞:GitHub Security Advisories