为全球中文用户,精选值得用的数字资源独立编辑 · 透明推荐
RANGKA JOURNAL · 2026.11.02

Uptime Kuma 自建网站监控上手指南:Docker 十分钟跑起来,挂了第一时间收到 Telegram 提醒

让卡优选编辑 · 依据公开资料整理

Uptime Kuma 自建网站监控上手指南:Docker 十分钟跑起来,挂了第一时间收到 Telegram 提醒(AI 概念图)

网站挂了,最尴尬的发现方式是网友在群里告诉你。自己搭一个监控面板,这件事就可以反过来:服务一出问题,你先收到提醒,再去处理。Uptime Kuma 就是适合这个场景的开源工具,部署简单,界面直观,一个容器就能跑起来。

本文面向已经有一台 VPS、想给自己的网站和服务加一层存活监控的读者。按下面的步骤走,一台小机器、十来分钟,就能搭好一个带 Telegram 提醒的监控面板。

Uptime Kuma 是什么,能做什么

Uptime Kuma 是一款开源的自建监控工具,采用 MIT 开源协议。它定期向你指定的地址发起检查,记录每一次检查的结果,并在状态异常时通过你配置的渠道发通知。

它常见的监控类型包括 HTTP(s)、TCP 端口、Ping、DNS 记录、关键词匹配、JSON 查询和推送心跳。通知渠道覆盖 Telegram、Discord、Slack、邮件等多种类型,你可以在设置页先发一条测试通知,确认通道真的通了再投入使用。

需要先说清边界。Uptime Kuma 做的是存活与可达性监控,回答的是网站能不能打开、端口通不通、证书还有几天到期这类问题。它不是全链路追踪和日志分析平台,不能替代专业的 APM 工具。把它定位成第一道哨兵,而不是万能体检仪,这个预期才合理。

准备工作

开始之前确认三件事。第一,有一台可以长期开机的 VPS,监控服务本身不适合放在会被频繁关机的机器上。第二,这台机器已经安装 Docker Engine 与 Docker Compose 插件,安装方法按 Docker 官方文档为你的系统选择对应步骤。第三,准备一个域名用于反代访问,这一步不是必需的,但直接用 IP 加端口长期暴露管理面板并不推荐。

还有一个部署原则值得先定下来。监控机最好不要和被监控的服务放在同一台机器上,否则机器一挂,监控和被监控对象会同时失联,提醒也可能发不出来。如果只有一台机器,先用它跑起来也可以,但要清楚这个单点风险,重要服务最好再配一个外部检查做兜底。

第一步:用 Docker Compose 把它跑起来

在服务器上新建一个专用目录,并写入 compose.yml 文件:

mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma

compose.yml 内容如下。端口这里特意只绑定到本机,后面再通过 Nginx 反代对外提供访问,不要一开始就把 3001 端口直接暴露到公网:

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

这里用 2 这个移动标签对应 v2 版本线。v2 版本首次启动时会让你先选择数据库,个人小实例直接选 SQLite 即可,简单且够用。数据目录必须放在本机磁盘上,不要放到 NFS 这类网络文件系统上,官方文档明确提示过这类存储与 SQLite 的文件锁不兼容。

启动并确认容器在运行:

docker compose up -d
docker compose ps
docker compose logs --tail 50 uptime-kuma

看到容器状态为运行、日志没有报错,就可以进入下一步。

第二步:先通过 SSH 隧道打开面板,建好管理员账号

由于端口只绑定了本机,临时访问最稳妥的办法是 SSH 本地端口转发。在你自己的电脑上执行:

ssh -L 3001:localhost:3001 root@你的服务器IP

保持这条 SSH 连接不要断,然后在浏览器打开 http://localhost:3001 ,首次进入会引导你创建管理员账号。这个账号建好之后要立即妥善保存,监控面板里有你的服务地址和通知配置,账号泄露就等于服务清单泄露。

第三步:用 Nginx 反代加 HTTPS 长期访问

长期使用建议走域名加 HTTPS。Nginx 配置的关键是必须透传 WebSocket 升级头,Uptime Kuma 的实时状态推送依赖 WebSocket,漏了这两个头,面板会一直转圈、数据刷不出来:

server {
    listen 443 ssl;
    server_name monitor.example.com;

    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}

把 monitor.example.com 换成你自己的域名,并按你现有的方式配好证书。配置完成后用域名访问一次,确认面板能正常打开、数据能实时刷新,再关掉 SSH 隧道。

第四步:加上第一批监控项

进入面板后,点添加监控,先把最关键的几项建起来。每一项的界面路径基本一致,填好后保存即可:

  • 网站首页 HTTP(s) 监控:类型选 HTTP(s),友好名称写网站名,URL 填首页地址,心跳间隔填 60 秒,重试次数填 2 次。首页能打开是最基础的存活信号。
  • 关键接口关键词监控:如果首页能打开但接口已经挂了,单纯的状态码检查发现不了。类型选 HTTP(s) 关键词,期望页面里出现某个固定关键词,关键词消失即报警。
  • TCP 端口监控:数据库、SSH 这类不走 HTTP 的服务,用 TCP 端口检查端口是否可达。注意不要把内网端口的监控结果放到公开状态页上。
  • 证书到期提醒:在 HTTP(s) 监控里开启证书到期通知,提前天数按你的续期节奏填,例如提前 14 天提醒,留出足够时间处理续期。
  • 备份任务推送心跳:备份脚本跑完后向 Uptime Kuma 的推送地址发一次请求,超过设定时间没收到推送即报警。备份失败常常是静默失败,心跳监控就是用来抓这种沉默的。

第五步:接通 Telegram 提醒,并先发一条测试

提醒通道没经过实测,等于没有提醒。Telegram 的接通步骤如下:先在 Telegram 里找 BotFather 创建一个机器人,拿到 Bot Token;再给这个机器人发一条消息,然后通过 Bot API 的 getUpdates 接口查到你的 Chat ID;最后回到 Uptime Kuma 的设置、通知设置里添加 Telegram 通知,把这两项填进去。

填好之后一定要点发送测试,手机上收到测试消息才算接通。还有一个容易踩的坑:通知规则必须挂到监控项上。你可以在通知设置里把该通知设为默认启用,也可以逐个在监控项里勾选,否则监控项变红了,通知也不会发出来。

第六步:做一个公开状态页,但只公开该公开的

Uptime Kuma 支持生成公开状态页,适合挂在网站页脚或者发给用户看。路径是状态页、添加状态页,选好要展示的监控项后保存,得到一个公开链接。

公开状态页只放对外服务,例如网站首页和公开接口。内网服务、管理后台、数据库端口这类监控项不要放进公开状态页,状态页的用途是告知访客服务状态,不是公开你的架构清单。

常见坑:这 6 个最容易翻车

坑 后果 正确做法
3001 端口直接暴露公网 任何人都能尝试登录你的监控面板 只绑定本机,走 Nginx 反代加 HTTPS 访问
容器里写 localhost 当被监控地址 检查的是容器自己,不是宿主机服务 监控宿主机服务时用宿主机 IP 或者 Docker 网关地址
数据目录放在 NFS 上 SQLite 文件锁异常,数据可能损坏 数据目录放在本机磁盘,迁移时整体拷贝目录
挂载 Docker Socket 做容器监控 相当于把 Docker 控制权交给面板,暴露到公网风险极高 非必要不挂载,必须用时绝不把面板暴露到公网
通知没挂到监控项 服务挂了,手机一声不响 设为默认启用,或者逐项检查通知勾选,并发测试消息验证
反代漏了 WebSocket 头 面板一直转圈,实时数据刷不出来 按上文配置透传 Upgrade 和 Connection 头

备份与升级:两条命令,别等出事才想起来

Uptime Kuma 的监控配置、通知设置和历史数据都存在数据目录里,备份就是备份这个目录。先停容器再打包,拷走备份文件后重新启动:

docker compose stop
tar -czf /root/uptime-kuma-backup.tar.gz -C /opt/uptime-kuma data
docker compose start

升级时先备份,再拉取新镜像并重新创建容器,数据目录不变,配置和历史就都在:

docker compose pull
docker compose up -d

FAQ

监控面板本身需要多大配置?个人小实例起步用 1 核 1GB 的机器一般够用,监控项数量和心跳频率上去了再按实际负载加配置,具体以你机器的实际占用为准。

免费吗?Uptime Kuma 本身开源免费,自托管的成本是你自己的服务器、域名和通知通道费用,软件本身不收费。

监控机挂了怎么办?这是自建监控的固有短板,监控机和被监控服务同时出问题,提醒可能发不出来。重要服务建议再配一个独立的外部检查做兜底,不要把所有鸡蛋放在一个面板里。

参考资料

📢 订阅让卡优选 Telegram 频道,第一时间获取 VPS 优惠、免费资源与注册福利推送。

资料核查:2026年11月2日。本文根据公开资料独立整理撰写;封面为 AI 生成的概念插画。

内容仅供信息参考,具体条件以官方最新说明为准。编辑与商业说明 →