Uptime Kuma 搭建网站监控:网站一掉线,自动发 Telegram 通知

13次阅读
没有评论

网站挂了半天,是访客留言才知道?用开源的 Uptime Kuma 自己搭一个监控面板,网站、接口、服务器一出问题,几十秒内就推送到 Telegram、邮件或企业微信。

本文介绍 Uptime Kuma 是什么、能监控什么,怎样用 Docker 安装并配置 HTTPS,以及最常用的 Telegram 通知和公开状态页怎么设置。项目数据于 2026 年 10 月 11 日查阅 GitHub 仓库、Wiki 和源码。

Uptime Kuma 是什么

Uptime Kuma 是一个自托管的在线监控工具,作者 Louis Lam,MIT 协议,GitHub 上有 9.2 万多颗星,Docker Hub 拉取量超过 1.9 亿次。作者在 README 里说,做它的初衷就是想要一个能自己部署的“UptimeRobot”。

它装在你自己的服务器上,按设定的间隔去访问你的网站或服务,一旦打不开、返回错误或者关键字不对,就通过你配置的渠道发通知。所有监控结果显示在一个网页仪表盘上,还能生成对外公开的状态页。

目前的版本是 2.x:2.0.0 正式版于 2025 年 10 月 20 日发布,结束了长达一年的测试期;最新稳定版是 2026 年 10 月 9 日发布的 2.5.6。

Uptime Kuma 搭建网站监控:网站一掉线,自动发 Telegram 通知
Uptime Kuma 的仪表盘:左侧是监控列表,右侧是响应时间、在线率和证书到期天数(图片来自 Uptime Kuma GitHub 仓库)

它解决什么痛点

  • 网站挂了没人知道:服务器宕机、证书过期、数据库连不上,往往要等访客反馈才发现,搜索排名和广告收入已经受了影响。
  • 在线监控服务的免费额度有限:UptimeRobot、Better Stack 的免费版在检测间隔、监控数量、通知渠道上都有限制,有的还限个人或非商业用途。
  • 国内通知渠道少:海外监控服务大多不支持企业微信、钉钉、飞书这些国内常用的工具。
  • 想把监控数据握在自己手里:内网服务、不想公开的接口,交给第三方监控不方便。

主要功能

以下内容来自 GitHub README 和 2.5.6 版本源码:

  • 监控类型多:HTTP(s)、HTTP(s) 关键字、HTTP(s) JSON 查询、TCP 端口、Ping、DNS、Docker 容器、WebSocket、Push(被动心跳),还有 MySQL/MariaDB、PostgreSQL、Redis、MongoDB、SQL Server 等数据库,以及 MQTT、gRPC、SMTP、SNMP、Steam 游戏服务器等。
  • 通知渠道 90 多种:Telegram、Discord、Slack、邮件(SMTP)、Webhook 等;“地区性通知平台”分类里有钉钉自定义机器人、企业微信群机器人、飞书、Server酱、PushPlus(推送加)、WxPusher、阿里云短信等。
  • 检测间隔可以很短:README 标注支持 20 秒间隔,界面上低于 20 秒会提示可能影响性能。
  • 证书和域名到期提醒:HTTPS 监控会显示证书剩余天数,可以设置到期前通知。
  • 状态页:可以建多个公开状态页,还能绑定自己的域名,比如 status.example.com。
  • 计划维护:设置维护时间段,期间暂停告警,状态页上显示“维护中”。
  • 安全:支持二次验证(2FA);界面有简体中文。

安装:Docker 一条命令或 Docker Compose

准备一台独立的服务器

有一点很重要:监控不要和被监控的网站装在同一台服务器上。服务器整个宕机时,监控也跟着停了,自然发不出通知。最好单独用一台便宜的 VPS,最好还在不同机房、不同商家。文末有推荐。

Uptime Kuma 本身很轻,监控几十个网站,1 核 1 GB 内存的小机器就够用。这是经验值,官方没有写最低配置。

先安装 Docker(官方安装脚本,自带 Compose 插件):

curl -fsSL https://get.docker.com | sh

方式一:Docker 一条命令

官方 README 给出的命令如下。这里把端口改成只监听本机,再由 Caddy 对外提供 HTTPS:

docker run -d --restart=always \
  -p 127.0.0.1:3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:2

如果只是先试试、暂时不配域名,可以把第一行端口写成 3001:3001,然后用 http://服务器IP:3001 访问。

方式二:Docker Compose

官方仓库提供了一份 compose.yaml,下载后同样建议把端口改成只监听本机:

mkdir uptime-kuma && cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
nano compose.yaml

改完的内容大致如下:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - ./data:/app/data
    ports:
      - "127.0.0.1:3001:3001"
docker compose up -d

官方特别提醒:数据目录不支持 NFS 这类网络文件系统,要放在本地目录或 Docker 卷里。

配置 Caddy 反向代理和 HTTPS

Caddy 会自动申请和续期 HTTPS 证书,还自动支持 WebSocket(Uptime Kuma 的界面依赖 WebSocket)。安装方法见 Caddy 官方文档,Debian / Ubuntu 用官方 apt 源即可。

把域名(比如 status.example.com)解析到服务器 IP,然后把 /etc/caddy/Caddyfile 改成这样,这也是 Uptime Kuma Wiki 里给的写法:

status.example.com {
    reverse_proxy 127.0.0.1:3001
}
sudo systemctl reload caddy

服务器防火墙要放行 80 和 443 端口。之后进 Uptime Kuma 的「设置 → 反向代理」,把“可信的代理类字段”设为“是”,日志里就能看到访客的真实 IP。官方说明这一项只在全部流量都经过反向代理时才应该开启。

首次启动

浏览器打开 https://status.example.com:

  1. 先选数据库。2.x 版本可选 SQLite、Docker 镜像内置的 MariaDB,或者外部 MariaDB/MySQL。界面上说明 SQLite 推荐小规模部署使用,个人站长选它就行。
  2. 创建管理员账户,用户名和密码自己设置,没有默认密码。
  3. 登录后建议马上到「设置 → 安全性」里启用二次验证。

用法:监控、通知和状态页

添加一个 HTTP 监控

  1. 点左上角「添加监控项」,监控类型选 HTTP(s)。
  2. 显示名称随便填,URL 填你的网站地址。
  3. 心跳间隔是检测频率,默认 60 秒,个人网站 60 秒足够;重试次数建议设 1 到 2 次,避免网络抖动一次就误报。
  4. 想确认页面内容真的正常(比如不是数据库报错页),可以改用“HTTP(s) – 关键字”,填一个页面上一定会出现的词。
  5. 在高级选项里勾选“证书到期时通知”,证书快过期时也会提醒你。

配置 Telegram 通知

第一步:创建机器人,拿到 Bot Token。 在 Telegram 里搜索 @BotFather,发送 /newbot,按提示给机器人起名字和用户名(用户名必须以 bot 结尾)。完成后 BotFather 会回复一串形如 123456789:AAxxxx 的 Bot Token,复制保存,不要泄露。

第二步:拿到 Chat ID。 先在 Telegram 里打开你的新机器人,点 Start 或随便发一条消息。然后在服务器上运行下面的命令,把 TOKEN 换成你的 Bot Token:

curl -s "https://api.telegram.org/botTOKEN/getUpdates"

返回内容里 “chat”:{“id”:123456789 这一串数字就是 Chat ID。想发到群里,就把机器人拉进群、在群里发一条消息再查,群的 Chat ID 是负数。

Uptime Kuma 的设置界面里也有一个“自动获取”按钮,原理一样,但请求是从你的浏览器发出的,浏览器所在网络要能访问 Telegram 接口才行。

第三步:在 Uptime Kuma 里添加通知。 进入「设置 → 通知 → 设置通知」,通知类型选 Telegram,填入机器人令牌和 Chat ID,点「测试」。手机上收到测试消息就说明配置成功。勾选“默认开启”和“应用到所有现有监控项”,以后新建的监控都会自动发通知。

Uptime Kuma 搭建网站监控:网站一掉线,自动发 Telegram 通知
网站掉线和恢复时,Telegram 机器人推送的消息示例(图片来自 Uptime Kuma GitHub 仓库)

国内常用的通知方式

需要说明的是,Telegram 在中国大陆无法直接使用。团队或自己主要在国内的话,下面这些官方支持的渠道更方便:

  • 企业微信群机器人:在企业微信群里添加机器人,拿到 Webhook 地址填进去即可;
  • 钉钉自定义机器人:同样是群机器人 Webhook,可以配合加签使用;
  • 飞书:飞书群的自定义机器人;
  • Server酱、PushPlus、WxPusher:推送到个人微信,适合一个人用;
  • 邮件(SMTP):用 QQ 邮箱、163 邮箱的 SMTP 服务发告警邮件,最通用。

一个监控可以同时绑定多个通知,比如 Telegram 和邮件各发一份,防止某一个渠道出问题时漏报。

建一个公开状态页

  1. 点顶部「状态页面 → 添加新的状态页」,填名称和路径,比如 blog,访问地址就是 https://status.example.com/status/blog。
  2. 在编辑页面里添加分组,把要公开的监控项加进去,可以写描述、上传 Logo。
  3. 想用独立域名,在状态页设置里填上域名,再把这个域名也解析到监控服务器,并加进 Caddyfile。

需要停机升级时,在「维护」里建一个计划维护,选好时间段和受影响的监控项,期间不会告警,状态页上会显示维护中。

Uptime Kuma 搭建网站监控:网站一掉线,自动发 Telegram 通知
Uptime Kuma 的公开状态页示例,可以按分组展示各服务的在线状态(图片来自 Uptime Kuma GitHub 仓库)

优点和不足

优点:

  • 免费、没有数量限制:监控多少个、间隔多短,只取决于你的服务器;
  • 通知渠道非常多:90 多种,国内的企业微信、钉钉、飞书、Server酱都有;
  • 上手简单:一条 Docker 命令就能跑,界面直观,有中文;
  • 功能够全:关键字检测、证书和域名到期提醒、状态页、计划维护、2FA 都有。

不足:

  • 只有一个检测点:只从你这台服务器去检测,没法像商业服务那样从全球多个地点确认,偶尔会因为监控服务器自身的网络问题误报;
  • 监控本身也要维护:要自己更新、备份,监控服务器挂了也就失去了监控;
  • 从 1.x 升级要小心:2.0 是大版本,有不兼容的改动,官方要求先备份、按迁移指南操作。

适合谁

  • 有个人博客、小网站、小程序后端的站长和独立开发者;
  • 手上有几台 VPS、一堆 Docker 服务,想统一看在线状态的折腾党;
  • 需要给客户或用户一个公开状态页的小团队;
  • 需要企业微信、钉钉、飞书告警的国内团队。

和 UptimeRobot、Better Stack 怎么选

对比项 Uptime Kuma UptimeRobot 免费版 Better Stack 免费版
价格 免费开源,只付服务器钱 0 美元 0 美元
监控数量 不限 50 个 10 个(监控和心跳合计)
检测间隔 自己设,20 秒起比较稳妥 5 分钟 定价页未写明
状态页 多个,可绑自己的域名 1 个基础状态页 1 个
通知 90 多种,含 Telegram、企业微信、钉钉 免费版只能用 5 个集成 Slack 和邮件
数据保留 自己决定 3 个月 —
用途限制 无 官方定位为个人爱好和非营利项目 官方定位为个人项目
检测地点 只有你的服务器 多地 多地

UptimeRobot 和 Better Stack 的数据来自两家 2026 年 10 月 11 日的官方定价页。简单说:只想监控一两个网站、不想维护服务器,用 UptimeRobot 免费版就行;想要短间隔、国内通知渠道、不限数量,或者网站本身有商业收入,自建 Uptime Kuma 更合适。两者也可以一起用:商业服务做多地检测,Uptime Kuma 做细致的监控和国内通知。

服务器推荐

监控服务器对配置要求很低,重点是和网站服务器分开,最好不同商家、不同机房。以下是官网入门标价(2026 年 10 月 9 日查阅):

  • RackNerd:入门 26.99 美元/年,1 核、512 MB 内存、30 GB SSD,美国、加拿大、欧洲都有机房。只跑 Uptime Kuma 够用,用 SQLite 即可。RackNerd 官网
  • CloudCone:28 美元/年起,2 核、1 GB 内存、30 GB SSD;也有按小时计费的套餐,适合先试再长期用。CloudCone 官网
  • 搬瓦工:老牌商家,入门款 49.99 美元/年(1 GB 内存、20 GB SSD),稳定性好,可以在不同机房之间迁移,适合把监控当成“最后一道防线”的用户。搬瓦工官网

便宜套餐多是限量款,可能随时售罄或调价,下单前以官网实时价格为准。

项目信息

项目 信息
名称 Uptime Kuma
作者 Louis Lam
GitHub louislam/uptime-kuma
开源协议 MIT
最新稳定版 2.5.6(2026-10-09)
Docker 镜像 louislam/uptime-kuma:2
默认端口 3001
数据库 SQLite、内置 MariaDB、外部 MariaDB/MySQL
非 Docker 安装 Node.js 20.4 以上,支持主流 Linux 和 Windows 10 / Server 2012 R2 以上
在线演示 demo.kuma.pet(数据 10 分钟后清除)

资料来源

正文完
 0
liujiana
版权声明:本站原创文章,由 liujiana 于2026-10-11发表,共计5609字。
转载说明:本文由(baffox.com)根据项目官网、开源社区及公开资料整理。工具的功能、价格、授权与服务条款可能随时间调整,请以官方最新页面为准。合理引用请注明出处并保留本页链接;如发现内容错误、版权或侵权问题,请通过联系邮箱进行反馈,我们将第一时间核实处理。
评论(没有评论)
验证码