monitor

使用

主题

换主题、上传主题、一键更新。

主题决定公开状态页长什么样。后台和登录页始终由 hub 内置提供,不属于主题—— 所以第三方主题不需要重做节点管理、OAuth 和密码设置。

默认主题已经嵌在二进制里,没装任何外部主题时,部署仍然是一个二进制加一个数据库文件。

切换

主题 页选一个,无需重启。选中的主题缺失或损坏时自动回落到内置默认主题。

安装

两种方式:

从面板上传theme.tar.gz 直接拖进去。

或者手工复制:把主题目录放到 hub 的 --themes 位置(一键脚本装出来的是 /opt/monitor/data/themes/),刷新面板就能看到。

themes/<short>/
├── theme.json
└── dist/
    └── index.html

目录名必须和 theme.json 里的 short 一致。

上传的主题是在访客浏览器里运行的第三方代码,和 hub 同源。装之前的检查挡的是 写到目录外和撑爆磁盘,不体检里面的 JS——那件事没法自动做。只装你信得过的来源。

一键更新

主题卡片上的 ⟳ 从这个主题自己 theme.jsonurl 指的 GitHub 仓库拉最新 release 的 theme.tar.gz。tag 和已装版本相同就不下载。

设置里配的 GitHub 代理(如果填了的话)。

上限

限制
整包32 MiB
解压总量64 MiB
单个文件8 MiB

解压总量必须和上传上限分开限制——gz 的压缩比没有上界。

写一个主题

主题是纯静态 SPA,只依赖四个同源接口。完整契约见主题契约

默认主题(React + Vite + shadcn/ui)就是参考实现, 源码在 monitor-theme-default

发布的 theme.tar.gz 解开就是一个可安装的主题目录——hub 嵌进去的那个文件, 和你解到 themes/ 的那个是同一个,所以默认主题和第三方主题走完全一样的契约。