给 Telegram 上的 AI 助手做了个监控面板,塞在 Mini App 里,实时看服务器状态。部署在 tg.eebk.com,Flask 后端 + nginx 反代 + EdgeOne CDN,跑了几天挺稳。

左边是 Telegram 聊天记录,右边是 Mini App 面板。CPU 83%、内存 24.8%、磁盘 8.4%,四个核心的使用率一目了然。

做这个的起因很简单——经常想看服务器状态,但每次要 SSH 上去跑 top 太麻烦。Telegram Mini App 直接在聊天里打开,点一下就行。

做了什么

面板分三个 Tab:监控看系统状态,Hermes管 AI 助手,维护跑运维操作。

监控页实时显示 CPU 每核使用率、内存、磁盘、网络上下行、系统负载。下面一排是服务健康状态:Hermes 核心、Gateway、Ollama、Nginx、Docker 之类的,绿点亮着就说明正常。

技术选择

实时数据用 SSE 推送,Flask 那边 Response(generator(), mimetype='text/event-stream'),前端 EventSource 自动重连。比 WebSocket 简单,比轮询实时,适合这种单向推送场景。

API 端点分几块:/api/dashboard 系统数据,/api/hermes/* AI 助手相关,/api/ops/* 运维操作,/api/stream SSE 实时推送,/api/blog-widget 给博客侧边栏卡片用。

数据本地缓存 30 秒,不用每次都重新算。静态资源走 EdgeOne CDN,图片链路是 Cloudflare → EdgeOne → 腾讯 COS 三级缓存。

安全

源站 IP 不暴露,tg.eebk.com 接入 EdgeOne CDN。nginx 配了白名单,只放 EdgeOne 回源 IP 进来。维护页面额外加了 IP 白名单 + 密码验证。

博客侧边栏

顺便给博客做了个监控卡片,放在侧边栏 Time machine 下面。复用 /api/blog-widget 接口,30 秒刷新一次,CORS 只开给 www.eebk.com

备份

每天凌晨 3 点自动备份到 /home/ubuntu/www/mini-app/backups/,保留最近 10 个版本。源码放 GitHub:ee-blog/hermes-mini-app


部署:2026-04-21 | 地址:tg.eebk.com | 源码:ee-blog/hermes-mini-app