服务挂掉最怕的不是挂,是你不知道它挂了。等用户来反馈,损失已经造成了。Uptime-Kuma 是最省事的自托管监控之一:一条 Docker 命令起服务,界面点几下就能加监控项。
它的工作方式

Uptime-Kuma 按你设的间隔探测目标 → 状态变化时触发通知 → 飞书机器人把消息推到群里。
操作步骤速览

一、一条命令起服务

docker run -d --restart=always \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
-v uptime-kuma:/app/data 这句别省——监控历史和配置都在里面,不挂卷容器一重建就全丢了。起来后访问 http://你的IP:3001,第一次打开会让你设管理员账号。
二、加监控项

点「添加新的监控项」,常用四类:
| 类型 | 用途 | 例子 |
|---|---|---|
| HTTP(s) | 盯网页是否正常 | 你的博客首页 |
| 关键词 | 页面里是否含某段文字 | 首页出现「最新文章」 |
| TCP 端口 | 端口是否在监听 | 22 / 3306 |
| Ping | 主机是否在线 | 服务器 IP |
间隔建议 60 秒起步。
三、接飞书机器人

先在飞书侧:群设置 → 群机器人 → 添加「自定义机器人」→ 复制 Webhook 地址。
再在 Kuma 侧:设置 → 通知 → 添加通知 → 类型选 Feishu (Lark),把 Webhook 地址粘进去 → 点「测试」。测试消息能收到,就说明通了。
四、给站点加一层保护

监控地址别直接暴露公网,前面的 Nginx 加一段反代 + Basic 认证:
location / {
auth_basic "restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:3001;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
用 htpasswd -c /etc/nginx/.htpasswd admin 生成密码文件。(WebSocket 那两行是因为 Kuma 状态页用了长连接,不加会一直转圈。)
小结
从零到「掉线自动通知手机」,这套下来不到十分钟。之后再也不用靠感觉判断服务有没有活着。
常见问题
Uptime-Kuma 占用资源大吗?
很小。单容器常驻内存几十 MB,1 核 1G 的小服务器也能跑,适合和别的服务共用一台机器。
探测间隔设多少合适?
建议 60 秒起步。设太短既没必要,还可能被目标站当成攻击,把你的监控 IP 封掉。