Spot Monitor

参考

常见问题

安装与访问

装完面板打不开

正常现象。一键脚本装出的 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 -1
bash
日志里看到原因与处理
401token 换发过:用面板上这个节点的新命令重装。节点已被删除:用删除时确认框里的命令卸载
连接被拒绝、超时节点到 hub 的网络不通:域名解析、防火墙;或节点只有 IPv6 而 hub 没有 IPv6 入口,见下文只有 IPv6 的机器能装吗
握手时 HTTP 400 等错误反代没转发 WebSocket 升级头,见反向代理
--iface: … is not an interface name,agent 一启动就退出/opt/monitor/agent.env 里 MONITOR_IFACE 的写法不对:完整网卡名,逗号分隔,- 开头表示排除,不能有空格。改好后重启 agent
UnknownIssuerhub 的证书不是公共 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,换来的是准确的数字和很小的二进制;支持其他系统等于重写整个采集部分。

能加负载告警、WebSSH、插件吗

不会加,原因见设计哲学。掉线、流量、到期、登录这几件判定明确的事由通知负责。

在 GitHub 上修改这一页最后更新 2026-10-02