使用
主题
换主题、上传主题、一键更新。
主题决定公开状态页长什么样。后台和登录页始终由 hub 内置提供,不属于主题—— 所以第三方主题不需要重做节点管理、OAuth 和密码设置。
默认主题已经嵌在二进制里,没装任何外部主题时,部署仍然是一个二进制加一个数据库文件。
切换
主题 页选一个,无需重启。选中的主题缺失或损坏时自动回落到内置默认主题。
安装
两种方式:
从面板上传,theme.tar.gz 直接拖进去。
或者手工复制:把主题目录放到 hub 的 --themes 位置(一键脚本装出来的是
/opt/monitor/data/themes/),刷新面板就能看到。
themes/<short>/
├── theme.json
└── dist/
└── index.html目录名必须和 theme.json 里的 short 一致。
上传的主题是在访客浏览器里运行的第三方代码,和 hub 同源。装之前的检查挡的是 写到目录外和撑爆磁盘,不体检里面的 JS——那件事没法自动做。只装你信得过的来源。
一键更新
主题卡片上的 ⟳ 从这个主题自己 theme.json 里 url 指的 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/ 的那个是同一个,所以默认主题和第三方主题走完全一样的契约。