2026 Uptime Kuma 自建服务监控:Docker 一键部署,所有服务状态一目了然
在 PVE 上跑了七八个 Docker 服务,NPM 反代配好了域名,Tailscale 打通了远程访问——看起来一切正常。但怎么知道这些服务是不是真的在正常运行?Immich 半夜挂了没人知道,Jellyfin 的转码服务悄无声息地停了,AdGuard Home 的 DNS 解析突然不响应了——而你可能要到第二天打开网页要用的时候才发现。这种”我以为服务在跑,其实早就挂了”的情况,跑过自部署的人多少都遇到过。
检查服务状态靠”手动刷新”根本不现实。你不可能每分钟去登录一遍 PVE 看虚拟机状态、去刷新每个服务的网页看能不能打开、去查 DNS 解析正不正常。而且有些问题是你登录了也看不出来的——比如 DNS 解析变慢了但没挂、API 响应超时但页面能打开、SSL 证书快过期了但浏览器还没报错。这些问题不及时处理,等用户或家人来告诉你”服务打不开”的时候就晚了。
Uptime Kuma 就是来解决这些问题的。它是一个开源的服务监控工具,Docker 一键部署后,你只需要填入要监控的服务地址和期望的检查间隔,它就会定时给你的服务发 HTTP 请求或者 Ping,如果服务挂了或者响应太慢,通过 Telegram、邮件、企业微信等方式通知你。而且它自带一个漂亮的状态页,可以公开给朋友或者同事看——“这些服务目前都是正常的”。
部署好之后的效果:你在 PVE 上跑的所有服务——Jellyfin、Immich、AdGuard Home、FreshRSS、n8n——在 Uptime Kuma 的仪表盘上全部显示为绿色。某天半夜 Jellyfin 因为内存泄露挂了,两分钟后你的手机收到企业微信通知:“Jellyfin 宕机了”。你从床上爬起来在 PVE 上重启容器,三分钟后通知又来了:“Jellyfin 已恢复”。继续睡。没有这个工具的话,你第二天早上才会发现,然后不知道它到底挂了多久。
一、Uptime Kuma 能监控什么
| 监控类型 | 检测方式 | 适用场景 |
|---|---|---|
| HTTP(S) | 发送 HTTP 请求,检查返回码和关键字 | 网站、Web 服务、API 接口 |
| Ping | ICMP 探测目标地址 | 服务器是否在线 |
| TCP 端口 | 尝试建立 TCP 连接 | 数据库、SSH 等端口级服务 |
| DNS | 查询域名解析是否正常 | DNS 服务器健康检查 |
| Docker 容器 | 检查容器运行状态 | 监控所有容器是否正常运行 |
| 关键字检测 | HTTP 响应中搜索指定文本 | 确认页面内容正确,非 502 错误页 |
对自部署用户来说最常用的就是 HTTP 监控和关键字检测。比如监控 Jellyfin 的 8096 端口,Uptime Kuma 每秒请求一次,如果连续 3 次超时就算宕机。
二、Docker 部署
一个 Compose 文件搞定。Uptime Kuma 使用 SQLite 存储所有监控数据,不需要额外装 MySQL 或者 PostgreSQL,省一个容器,也少一个需要监控的服务。
services: uptime-kuma: image: louislam/uptime-kuma:latest container_name: uptime-kuma restart: unless-stopped ports: - "3001:3001" volumes: - ./uptime-kuma/data:/app/data3001 是管理界面端口。如果你已经在用 NPM 管理域名,可以配个子域名反代到 3001 端口,方便在公网访问管理界面。不过 Uptime Kuma 本身跑在内网、通过 Tailscale 访问也完全可以——监控服务没必要暴露到公网。
docker compose up -d启动后访问 http://你的IP:3001,注册一个管理员账号。注册信息存在本地的 ./uptime-kuma/data 目录里,不会传到任何外部服务器。登录后会看到一个空白的仪表盘——中间一个大大的加号按钮,点它添加你的第一个监控项。
三、添加第一个监控项
点「添加监控」,填入服务信息:
| 字段 | 填写内容 | 说明 |
|---|---|---|
| 名称 | 比如「Jellyfin」 | 方便识别的名字,通知里也会用这个名字 |
| 监控类型 | HTTP(s) | 最常用的方式 |
| URL | https://jellyfin.你的域名.com | 你的服务地址 |
| 间隔 | 60 秒 | 每隔多久检查一次。普通服务 60 秒够用 |
| 超时时间 | 30 秒 | 多久没响应算超时 |
| 重试次数 | 3 次 | 连续失败几次才算宕机,避免网络抖动误报 |
点保存后 Uptime Kuma 就开始监控了。几秒后仪表盘上会显示绿色「运行中」的标签。如果是红色「宕机」——说明服务有问题或者地址填错了。
关键字检测很实用:有些服务虽然返回 200,但页面其实是错误的(比如 Nginx 默认页代替了真实服务)。在高级选项里打开”关键字检测”,搜索你的服务首页上一定会出现的关键词——比如 Jellyfin 搜索”Jellyfin”、Immich 搜索”Immich”。如果响应里没有这个关键词,Uptime Kuma 也会标记为宕机。
四、配置通知
服务挂了光在仪表盘上显示红色不够——你得第一时间知道。Uptime Kuma 支持几十种通知方式。
点右上角头像 →「设置」→「通知」→「添加通知」:
| 通知方式 | 配置难度 | 推荐指数 | 说明 |
|---|---|---|---|
| Telegram | ⭐⭐ 中等 | ⭐⭐⭐⭐⭐ | 需要创建 Bot,国内网络需要梯子 |
| 邮件 (SMTP) | ⭐⭐ 中等 | ⭐⭐⭐⭐ | 自建邮箱或 QQ/163 邮箱的 SMTP |
| 企业微信机器人 | ⭐ 简单 | ⭐⭐⭐⭐⭐ | 最推荐。创建群聊→添加机器人→复制 Webhook URL |
| Webhook | ⭐ 简单 | ⭐⭐⭐⭐ | 可以接入 n8n 等自动化平台 |
| Bark (iOS) | ⭐ 简单 | ⭐⭐⭐ | iPhone 推送通知 |
国内用户最推荐企业微信机器人——不需要搭梯子、配置简单、推送及时。在微信群里添加一个机器人,复制 Webhook 地址,粘贴到 Uptime Kuma 里就可以。服务挂了微信群直接弹出消息。而且可以建一个单独的”服务监控群”,把运维相关的通知都集中到这一个群里,不干扰其他工作群的聊天。
Telegram 也很好用,Bot API 稳定可靠,但需要国内服务器能访问 Telegram 的 API 地址——可能需要给服务器配代理。邮件是兜底方案,配置 SMTP 后任何能收邮件的设备都能收到通知,但时效性不如即时通讯工具。
建议配置至少两种通知方式——主要用企业微信或 Telegram,再加一个邮件做备份。万一主要通知渠道出了问题(比如微信挂了),邮件还能补上。配置好后点「测试」按钮,收不到通知就检查配置。
五、配置状态页
Uptime Kuma 可以生成一个公开的状态页,朋友或者同事能看到你的服务是否正常。
点「状态页」→「添加状态页」:
- 起个名字,比如「我的服务状态」
- 选一个好看的域名(或者就用 Uptime Kuma 的地址)
- 勾选要展示哪些监控项——不想公开的可以不开
- 可以选择是否需要密码保护
保存后你会得到一个链接,打开就能看到所有服务的实时状态。绿色=正常,红色=宕机,黄色=响应缓慢。这个状态页对展示给朋友或者同事看很实用——你不用每次都去确认服务是否正常运行,打开状态页扫一眼就全知道了。也可以把状态页嵌入到自己的个人网站或者导航页里,访客能直接看到你看的各项服务运行状态。
六、进阶配置
监控 Docker 容器: 在 Uptime Kuma 的服务器上装 Docker 后,可以选”Docker”监控类型,直接监控本机或远程 Docker 主机的容器状态。需要配置 Docker Socket 连接。
SSL 证书到期提醒: 添加一个 HTTP 监控,URL 填你的域名,在高级设置里勾选”检查 SSL 证书有效期”。证书到期前 30 天会自动通知你——这样就再也不会忘了续期导致网站打不开了。之前用 Let’s Encrypt 证书的人应该都有过”啊证书过期了”的尴尬时刻,Uptime Kuma 直接帮你排掉这个雷。
Uptime Kuma 配合 PVE: 如果把 Uptime Kuma 部署在 PVE 的虚拟机上,建议顺便监控 PVE 宿主机的 8006 端口。宿主机宕机了直接收到通知,能第一时间处理。
七、常见问题
Q:监控项一直显示”宕机”但服务明明能打开?
检查 URL 是不是填了 localhost 或者 127.0.0.1——Uptime Kuma 运行在容器里,localhost 指向容器自己,不是你的服务。填你的内网 IP 或者域名地址。
Q:通知收不到? 检查通知方式的配置。企业微信机器人最常见的问题是 Webhook 地址填错了。可以在 Uptime Kuma 里测试通知——设置页面点「测试」,工具会发一条测试消息。
Q:Uptime Kuma 本身需要监控吗? 好问题。Uptime Kuma 如果挂了,你就收不到任何通知了。建议搭配一个第三方的免费监控服务(比如 Better Uptime 的免费版)专门盯着 Uptime Kuma 的地址。或者在 PVE 上设置一个定时任务,每分钟 curl 一下 Uptime Kuma 的页面,页面打不开就发邮件。不过对小规模自部署用户来说,Uptime Kuma 本身宕机的概率很低——它自己就一个容器,不依赖其他服务。
Q:监控太多会不会占用资源? 不会。Uptime Kuma 本身非常轻量,即使监控 50 个服务,每 60 秒检查一次,CPU 占用也基本在 1% 以下。内存占用不到 200MB。跟其他服务放在同一台机器上毫无压力。
延伸阅读
- Docker 换源避坑指南 — 部署前的必备准备
- Nginx Proxy Manager 反代面板 — 统一管理所有服务的访问入口
- 自建 RSS 信息流 — 彻底告别算法推荐
Uptime Kuma 部署一次后基本不用管,它默默在后台每分钟检查你的所有服务。服务正常时你几乎感觉不到它的存在——仪表盘上全是绿色,安安静静。出问题了它第一时间通知你,不用你整天盯着甚至半夜惊醒去查服务状态。自部署全家桶的最后一块拼图——搭了的服务你心里有数,不用猜它是不是还在跑。
推荐指数:⭐⭐⭐⭐⭐(自部署用户必备)
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!