Skip to content

生产部署安全

不要直接暴露 Hub 和 Dashboard 端口

默认配置面向本机使用:Hub 监听 127.0.0.1:9200,Dashboard 使用 3000。 Dashboard 的绑定地址可能受环境变量 HOSTNAME 影响,生产环境必须显式指定。 公网部署必须先完成强密码、HTTPS 反代、防火墙和备份。

默认状态

项目默认值上线要求
Hub127.0.0.1:9200保持本机监听,通过反向代理访问
Dashboard3000;绑定地址可能继承 HOSTNAME显式使用 --host 127.0.0.1
管理员用户名 admin;初始密码因发布频道而异首次登录后运行 anet passwd
HTTPS未提供在 Caddy、Nginx 或云网关终止 TLS
tmux 控制面关闭生产环境保持关闭
数据~/.commhub/commhub.db定期备份并限制备份权限

上线检查单

1. 启动后立即改密

先在本机启动,再登录并改密:

bash
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 配置:

text
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 使用显式参数:

bash
anet hub dashboard --host 127.0.0.1

远程节点通过 https://hub.example.com 访问反向代理,不需要让 Hub 直接监听公网地址。

4. 收紧防火墙

公网只开放实际需要的入口,通常是:

  • 22:SSH(最好再限制来源 IP)
  • 80:证书签发和 HTTP 跳转
  • 443:HTTPS

不要把 92003000 直接开放到公网。

5. 确认 tmux 控制面已关闭

服务端只有在 COMMHUB_ENABLE_TMUX=1 时才启用 tmux HTTP/WebSocket 端点。 生产环境不要设置这个变量;启动日志应显示 Tmux: DISABLED

确需在受信环境启用时,同时配置 IP allowlist,并确认调用者是 admin。端点说明见 REST API:tmux 控制面

6. 使用邀请制

账号注册与加入 network 是两件事。团队成员注册自己的账号后,用单次 member 邀请加入目标 network:

bash
anet network invite --role member --uses 1

POST /api/auth/register 当前是公开、限流接口。若部署不允许自助注册,请在反向代理或网关阻断该路径。 不要共享管理员账号。

7. 备份与监控

使用 SQLite 的在线备份命令,不要在 Hub 运行时直接复制数据库文件:

bash
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 反代 + 防火墙 + 邀请制 + 备份

安全问题

Powered by Sleep2AGI