部署
安装 hub
install-hub.sh 的参数、目录结构、升级与卸载。
一键脚本
curl -fsSL https://raw.githubusercontent.com/stqfdyr/monitor/main/install-hub.sh -o install-hub.sh
sudo sh install-hub.shbash脚本做的事:核对 release 的 sha256sums.txt 之后才把二进制放进 /opt/monitor,
建一个 monitor 系统用户,写一个加固过的 systemd 单元,然后把三种反向代理的配法打印出来。
重跑一次就是升级:校验通过才替换,起不来自动回滚到上一版,没写的参数沿用上次的——
所以升级不会把你的端口和 --site 冲掉。
参数
| 参数 | 说明 |
|---|---|
--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——服务连自己的二进制都写不了。
常用命令
systemctl status monitor-hub
journalctl -u monitor-hub -f
journalctl -u monitor-hub | grep Emergency # 找回首次启动打印的应急密码bash不用脚本
二进制自己就能跑,零配置启动:
monitor-hub # 监听 [::]:28080,数据库 ./monitor.dbbash| 参数 | 默认 | 说明 |
|---|---|---|
--listen | [::]:28080 | 监听地址。一个 socket 同时收 IPv6 与 IPv4 |
--db | monitor.db | SQLite 路径 |
--site | 空 | 对外地址,只有个别反代场景需要 |
--themes | 数据库同级的 themes/ | 外部主题目录 |
默认监听 [::]:28080:Linux 上一个 v6 socket 通过 v4-mapped 地址同时收两族,双栈机器什么都不用配。
内核禁用了 IPv6 或 bindv6only=1 时自动退回 0.0.0.0:28080。
这件事只影响谁连得上——纯 v4 的 hub 收不到只有 IPv6 的节点,反之亦然,而且两边都是静默失败: 节点只会一直重连,两头都没有一行日志说明原因。
手工部署时记得自己加 --listen 127.0.0.1:28080,否则明文端口对外可达,绕过反代就能明文访问面板。
一键脚本已经写死了这一条。
什么时候才需要 --site
不带 --site 时,hub 不假设自己的地址:面板用浏览器地址栏里的地址拼安装命令,
cookie 的 Secure 标志看请求的 X-Forwarded-Proto。常规反代都不需要填它。
只有两种情况要填:
- 面板域名和节点连接的域名不同(比如你走 SSH 隧道进面板)。用
--site指定节点可达的 HTTPS 域名 - 反代不发
X-Forwarded-Proto,cookie 拿不到Secure,用--site https://...强制
--site 不能把 IP 入口变成域名入口。从 IP 或明文地址进面板时,添加节点、批量注册和
安装命令都不可用——这道闸不接受绕过,请从 HTTPS 域名进入。
卸载
sudo sh install-hub.sh --uninstall # 保留 /opt/monitor/data
sudo sh install-hub.sh --purge # 连数据库一起删bash