Spot Monitor

安装

安装 hub

一键脚本

安装命令见快速开始。脚本从 GitHub release 下载二进制,按 sha256sums.txt 校验后放进 /opt/monitor,建一个 monitor 系统用户,写一个加固过的 systemd 单元,hub 只监听 127.0.0.1。

脚本只支持 systemd。有终端时显示菜单(安装 / 升级、卸载、状态、日志);经 curl ... | sh 管道执行时没有终端可以作答,直接按默认值安装。

参数

参数说明
--host <addr>监听地址,默认 127.0.0.1。改成 0.0.0.0 或内网地址后端口就明文可达了,只应在内网、或反向代理之后这样用
--port <n>本机监听端口,默认 28080
--site <url>一般不用填,见下文什么时候需要 --site
--uninstall卸载,数据保留在 /opt/monitor/data,见卸载
--purge卸载并删除数据库,不可恢复
--yes / -y跳过确认
--help / -h显示用法

目录结构

除了 systemd 单元,其余都在一个目录下:

/opt/monitor/
├── monitor-hub          # hub 二进制
├── monitor-agent        # 这台机器也装了 agent 时才有
├── agent.env            # agent 的 token,0600 root
└── data/                # 服务唯一可写的目录,0700 monitor
    ├── monitor.db
    └── themes/          # 在面板上安装的主题

服务以 monitor 用户运行,单元里写了 ReadWritePaths=/opt/monitor/data,hub 改不了自己的二进制。

常用命令

# 服务状态
systemctl status monitor-hub
# 实时日志
journalctl -u monitor-hub -f
bash

应急密码忘了怎么办,见登录与安全。

升级

在当初下载脚本的目录里重跑一次,菜单里选「安装 / 升级」,端口回车沿用原来的:

sudo ./install-hub.sh
bash
  • 新二进制校验通过才替换;新版起不来时自动换回上一版
  • 没写的参数沿用上次安装的,监听地址、端口和 --site 不会被冲掉

脚本不会自我更新:每次用到的就是手上这一份。要拿到新脚本,按快速开始里的命令重新下载一次。

面板左上角在站点名旁显示正在运行的 hub 版本。Docker 部署的升级见 Docker 部署。

不用脚本

二进制在 release 页面,文件名是 monitor-hub-<arch>-unknown-linux-musl,静态链接,不需要配置文件:

# 监听 [::]:28080,数据库 ./monitor.db,首次启动在标准输出打印应急密码
monitor-hub
bash
参数默认说明
--listen[::]:28080监听地址
--dbmonitor.dbSQLite 路径
--site空对外地址,只有个别反代场景需要
--themes数据库同级的 themes/主题目录
--group-dropdown关「分组」字段列出已在用的分组名,分组很多时好用

默认的 [::]:28080 在 Linux 上同时接收 IPv6 和 IPv4(v4-mapped 地址),双栈机器不用额外配置;内核禁用了 IPv6 或设了 bindv6only=1 时自动退回 0.0.0.0:28080。

自己指定 --listen 时注意地址族:只听 IPv4 的 hub 收不到只有 IPv6 的节点,反之亦然。节点只会不断重连,两边都没有日志说明原因。

--group-dropdown 让编辑节点里的「分组」在输入框下方列出已经在用的分组名(继续输入新名字照旧)。默认关闭:它只在分组很多、名字记不全时有用,而那个字段本来也是新建分组的地方。

前面有反向代理时,加 --listen 127.0.0.1:28080。否则明文端口对外可达,别人可以绕过反代直接访问面板,并伪造 X-Forwarded-Proto。

什么时候需要 --site

不带 --site 时,面板按浏览器地址栏里的地址生成安装命令,会话 cookie 的 Secure 标志看反代发来的 X-Forwarded-Proto。常规反代不用填。

两种情况要填:

  • 节点要连的域名和你进面板用的域名不是同一个:填节点可达的 HTTPS 域名
  • 反代不发 X-Forwarded-Proto:cookie 拿不到 Secure,用 --site https://... 强制加上

内网直连可以用明文

从同一内网直接访问(没有经过反向代理)时,面板允许用 http://私网IP:28080 添加节点:hub 看到 TCP 对端是私网地址、且这次请求没有声明 X-Forwarded-Proto,就按「令牌不出这个网络」处理。--site 不必填,安装命令用浏览器地址栏里的地址。

两种情况下这个例外不成立,仍是「必须 HTTPS 域名」:请求是反代转发的(hub 会取 X-Forwarded-For 的最后一段,那就是真实客户端),或者声明了 X-Forwarded-Proto。

回环地址(localhost、127.0.0.1)也不算:那样生成的安装命令只有本机能用。

--site 必须是 https:// 加域名,可以带端口,不能是 IP,不能带路径。不符合时 hub 照常启动,但拒绝添加和安装节点。

能不能添加节点,看两件事:hub 收到的 Host 必须是域名(不能是 IP,也不能是 localhost),以及这次请求必须是走 HTTPS 进来的——反代发了 X-Forwarded-Proto: https,或者给 hub 配了合法的 --site https://…。所以从 IP 直接进面板时,填了 --site 也加不了节点:Host 仍然是那个 IP。

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