先说为什么折腾

我服务器上已经跑着一堆自部署服务:博客、RSS 阅读器、广告拦截、密码库、图床。服务多了,麻烦也来了——要看的东西太分散:博客访问量在一个后台,RSS 在一个后台,邮箱在一个后台,各个服务挂没挂又要另外看。每天早上拿起手机一通乱点,还经常漏看。

起因很简单:在网上看到有人用 Glance 搭个人主页,正好我服务器闲着也是闲着,就决定自己也搭一个。整个事情是 2026 年 10 月中旬折腾的,核心搭建和反复调整集中在 10 月 19 日一天,从上午一直弄到中午。

我不懂编程,靠 AI 助手干活

先交代一句:我不懂编程。分工大概是——我把想法和官方文档丢给 AI,它来写配置和脚本,我负责看效果、提意见、拍板。几分钟一个功能,挺上瘾的。

技术选型

用的是 Glance,开源自托管的面板程序,Go 写的单个二进制文件,版本 v0.8.7。

  • 不用 Docker,直接跑二进制加 systemd 守护,内存上限限制在 160MB,很省资源。
  • 面板本身只负责拼页面,数据来自一个个小脚本:Python 脚本定时去各个服务拉数据,写成 JSON 文件,再由 nginx 的内部只读端口提供给面板的卡片。
  • 整个站挂在自己的域名下(子域名),加了密码登录。

面板上有哪些卡片

一共 11 张,分三个栏目。

总览栏(第一屏):

  1. 天气——打开就看到
  2. 邮件 · 今日——不是搬邮件全文,是自动分类统计(评论、验证码、广告、账单、日报等),只统计未读,一眼知道今天有没有要紧邮件。分类是 AI 模型做的,卡片右上角有个小齿轮可以换分类用的模型
  3. 博客今日访问量
  4. 站点状态——24 小时/48 小时的热力小格子,一格一小时,绿色代表正常,哪个时间段挂过一眼看出来,每 5 分钟自动探测一次
  5. 服务用量——图床存储容量、边缘函数请求数
  6. 广告拦截统计
  7. 收藏夹——我自己服务的快捷入口,4 列网格布局,图标+文字都要有

日程栏:

  1. 未来 7 天日程
  2. 未完成待办

(接我平时用的日历和任务工具)

分析栏:

  1. RSS 未读文章列表——要的是全部未读,不是最新几条,点过去读完会自动标已读(这里专门做了联动)
  2. 广告拦截的 Top 域名 / Top 客户端排行

踩的坑

  1. 图标加载不出来:Glance 默认图标走国外公共 CDN,国内经常加载失败,页面一堆空白框。→ 把图标全部下载到本地自己托管,问题解决。教训:依赖国外 CDN 的东西在国内都得留心眼。
  2. 「刷新了数据怎么没变」:以为点浏览器刷新按钮数据就会重新拉,其实不是——每个卡片有自己的缓存,刷新只是重新显示缓存。想打开就是最新,得把缓存时间调短。坑不难,但很迷惑人。
  3. 手机体验:默认手机页面字号特别小,底部栏目切换只有几个小圆点,不知道哪个是哪个。→ 圆点改成「总览/日程/分析」的文字标签,字号全部调大。我主要用手机看,这块最在意。
  4. 老弹「翻译此页」:页面默认语言标的是英文,Chrome 每次打开都问要不要翻译。→ 在反向代理层把语言改成中文(这里还有个坑:要先关掉压缩,否则替换不生效),弹窗消失。
  5. 前端脚本点了没反应:卡片内容是异步加载的,脚本在页面加载完就去找按钮,根本找不到,点了没反应也不报错😅。→ 改成事件委托才生效。
  6. 主题返工(最大的坑):第一版让 AI 做了个「深色玻璃风 + 发光角标」,我打开一看:太暗,太做作,全部推翻。最终照着 FreshRSS 的朴素风格定稿:浅灰底 #f0f0f0、纯白卡片、1px 细边框、3px 圆角、几乎无阴影,强调色一个普普通通的蓝 #0084cc。结论:天天要看的东西,耐看比炫酷重要。
  7. 自动刷新:做了个页面角落的倒计时刷新控件,每 5 分钟整页刷新一次,刷新时记住你在哪个栏目、滚动到哪了,不会跳回顶部。
  8. 邮件卡片的设置:齿轮里能改分类模型,保存后立即生效。这个小功能涉及前后端联调,也折腾了一阵。

安全

面板挂在公网,该做的都做了:登录接口限速、安全响应头、敏感令牌不进日志、写操作只收 POST、外站来源拒绝。细节就不展开了。

最后聊聊感受

折腾的时候费点劲,折腾完就是自己的了——没有使用限制,想怎么改就怎么改。这和之前搭广告拦截、RSS 阅读器一脉相承,典型的自部署的快乐。

现在早上起床打开一个页面,天气、邮件、访问量、待办全在上面,不用再一通乱点,这就是最大的收获。

说句实在话,不懂编程也能靠 AI 把这种东西搭起来:我出想法和判断,AI 出手,几分钟一个功能。面板后面还会继续加卡片,慢慢完善。

好了,今天就聊到这里。如果你也搭了自己的面板,或者有什么想加的卡片,欢迎留言交流。我们下篇文章见。