参考
常见问题
安装与访问
装完面板打不开
正常现象。一键脚本装出的 hub 只监听 127.0.0.1,公网访问不到。配好反向代理,用域名访问。
「添加节点」是灰的
从 IP 地址或明文 HTTP 进面板时,添加节点、批量添加和安装命令都不可用:安装脚本和二进制要经这条链路下载,脚本以 root 执行,token 也会明文传输。按钮上方那行字写明了具体原因。
- 配好域名和 TLS,从
https://域名进面板即可。hub 看反代转发的Host是不是域名、X-Forwarded-Proto是不是https,以及浏览器发来的Origin(带了的话)是不是和Host同源 - 地址栏已经是
https://加域名,按钮仍是灰的:hub 启动时带的--site不是https://加域名(写成了 IP,或带了路径),或者反代把Host改写成了上游地址(nginx 忘了proxy_set_header Host $host),或者没有透传X-Forwarded-Proto: https - 通过 SSH 隧道进面板(地址栏是
http://127.0.0.1:PORT):不能添加节点,--site也补不了,因为 hub 拿到的Host还是127.0.0.1。要添加节点就用域名访问
应急密码忘了
hub 没有内置的重置命令,要清掉数据库里的密码哈希再重启,见应急密码忘了。
hub 连不上 GitHub
hub 从 GitHub release 取 agent 二进制转发给节点,主题更新也从那里取。hub 所在机器访问不了 GitHub 时,在设置页的 GitHub 代理填一个镜像地址,节点侧不用改。
这个地址返回的字节会作为 agent 装到每一台节点上:hub 原样转发,install.sh 直接安装,中间没有签名或摘要校验。只在 hub 确实访问不了 GitHub 时填,只填信得过的镜像。设置只接受 https://。
代理只作用于 github.com 上的二进制和主题包;主题页的「从 GitHub 更新」先用 api.github.com 读 release
的 tag,这一步不走代理,读不到时会提示只能手动上传新包。
节点
节点一直不上线
按顺序查:
# 1. agent 是否在运行;OpenRC 用 rc-service monitor-agent status
systemctl status monitor-agent
# 2. 日志里报了什么;OpenRC 用 tail -n 50 /var/log/monitor-agent.log
journalctl -u monitor-agent -n 50 --no-pager
# 3. 这台机器能否连上 hub
curl -sI https://hub.example.com/install.sh | head -1bash| 日志里看到 | 原因与处理 |
|---|---|
401 | token 换发过:用面板上这个节点的新命令重装。节点已被删除:用删除时确认框里的命令卸载 |
| 连接被拒绝、超时 | 节点到 hub 的网络不通:域名解析、防火墙;或节点只有 IPv6 而 hub 没有 IPv6 入口,见下文只有 IPv6 的机器能装吗 |
| 握手时 HTTP 400 等错误 | 反代没转发 WebSocket 升级头,见反向代理 |
--iface: … is not an interface name,agent 一启动就退出 | /opt/monitor/agent.env 里 MONITOR_IFACE 的写法不对:完整网卡名,逗号分隔,- 开头表示排除,不能有空格。改好后重启 agent |
UnknownIssuer | hub 的证书不是公共 CA 签发的,见下一条 |
agent 日志里 UnknownIssuer
hub 用的是自签证书或私有 CA 签发的证书。agent 只认编译进去的公共根证书,不读系统的信任库,所以把 CA
装进 /usr/local/share/ca-certificates 再执行 update-ca-certificates 对它无效:同一台机器上 curl 和
install.sh 都正常,只有 agent 连不上,日志里每隔几秒一条 UnknownIssuer。
给 hub 换一张公共 CA 签发的证书,Let's Encrypt 或 Cloudflare 的边缘证书都可以。内网部署确实没有域名的,另一条路是让 agent 用明文连 hub:同一台机器走回环地址;其他机器在安装命令里把 --server 写成 http://
地址并加 --insecure。代价是 token、每条上报和安装时下载的二进制都明文传输,链路上的人能读到 token,也能替换以 root 执行的安装脚本和二进制,所以只在可信的内网里这样做。
节点隔一阵掉线,又自己回来
反代的读写超时太短,或没转发 WebSocket 头。按反向代理的第 1 项检查。
关机后多久显示离线
agent 正常退出、机器正常关机或重启时,连接立即断开,节点马上显示离线。断电、断网时连接不会正常关闭:hub 每 30 秒发一次心跳,连续 120 秒收不到任何数据才断开,所以最慢 150 秒显示离线。离线通知还要再等一个宽限期,见通知。
只有 IPv6 的机器能装吗
能。agent 二进制由 hub 转发,节点不需要访问 GitHub,只要能连上 hub。
hub 只有 IPv4 而节点只有 IPv6 时,给 hub 加一个 IPv6 入口,以下任选一种:
- 给 hub 所在机器配一个 IPv6 地址,多数 VPS 免费提供
/64 - 套一个双栈 CDN
- 用 Cloudflare 隧道:隧道由源站向外建立,源站只有 IPv4 也能得到双栈入口
节点地址是内网 IP,或者国家不对
在编辑节点里手动填 IPv4、IPv6 或国家/地区,留空恢复自动。地址和国家是怎么选出来的、哪些部署会判断错,见节点。
数字
内存、硬盘和别的面板对不上
面板的数字对齐 free 和 df,登上机器执行一遍就能核对。已用内存是 MemTotal - MemAvailable,和 free
的 used 列一致;不少采集工具把 page cache 也算作已用,跑了几天的机器在那些工具里看起来内存快满了。
磁盘总量不含被 agent 服务的沙箱遮住的挂载点(例如单独分区的 /home),agent 启动时会在日志里逐个列出。
总流量和商家对不上
- agent 装上之前的流量算不进来
- 机器重启时,开机到首次上报之间的流量会丢掉,通常几十秒、几百 KB
- 面板里的每月重置日或计算方式和商家的不一致
- 软路由、PVE 宿主机这类转发流量的机器,同一个包经过两块网卡,默认规则会算两遍,见流量统计
agent 掉线期间的流量会在重连后补上,这是有意的:这段时间内核照样在计数。
今日流量到点不归零
Docker 部署没设 TZ,按 UTC 切换日期,见 Docker 部署。
过了到期日,节点还显示已过期
只有在线的节点会自动续期,hub 每小时巡检一次;离线期间过期、之后又连上的,等到下一轮巡检。付款周期为「一次性」的不续期。Docker 部署没设 TZ 时,东八区要到早上 8 点才跨日。规则见节点。
面板和公开页的「N 天后到期」按访客浏览器的日期算,所以和 hub 的日期可能差一天;顺延以 hub 的日期为准。
维护
怎么升级
| 对象 | 做法 |
|---|---|
| hub(一键脚本) | 重跑脚本,见安装 hub |
| hub(Docker) | 拉新镜像、重建容器,见 Docker 部署 |
| agent | 在每台机器上重新执行该节点弹窗里的安装命令,见接入节点 |
| 主题 | 主题页卡片上的「从 GitHub 更新」 |
面板左上角在站点名旁显示正在运行的 hub 版本;agent 的版本在节点详情里,写作 agent <版本>。
搬到另一台机器
导出备份、在新 hub 上导入,再把域名指过去,见数据与备份。
数据库越来越大
调小保留天数,再在数据页点回收空间,见数据与备份。
范围
支持 Windows、macOS 吗
不支持,也不打算支持。agent 直接读 /proc 和 statvfs,换来的是准确的数字和很小的二进制;支持其他系统等于重写整个采集部分。