Uptime Kuma 是一款自建的服务状态监控工具,界面美观、部署简单,支持 HTTP(S)、TCP、DNS、Ping 等多种监控类型,并可通过 Telegram、邮件、Slack 等多种渠道发送告警通知。在搬瓦工 VPS 上运行它,可以实时掌握自己所有服务的运行状态。

本文要点

  • Docker 一键部署 Uptime Kuma
  • 添加监控项与设置检测间隔
  • 配置 Telegram 等通知渠道
  • Nginx 反向代理与 SSL 保护管理界面

部署 Uptime Kuma

使用 Docker 单容器即可,数据持久化到命名卷:

docker run -d \
  --name uptime-kuma \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --restart unless-stopped \
  louislam/uptime-kuma:latest

或使用 docker-compose.yml:

# docker-compose.yml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma:/app/data
    restart: unless-stopped

volumes:
  uptime-kuma:

启动后访问 http://服务器IP:3001 完成管理员账号创建。

立即保护管理界面

Uptime Kuma 初始没有访问限制,任何人知道地址就能访问。请第一时间创建管理员账号,并尽快配置反向代理 + SSL,避免管理界面暴露。

Nginx 反向代理 + SSL

创建 /etc/nginx/conf.d/uptime.conf

server {
    listen 443 ssl;
    server_name uptime.yourdomain.com;
    ssl_certificate     /etc/letsencrypt/live/uptime.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/uptime.yourdomain.com/privkey.pem;
    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;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto https;
    }
}

WebSocket 支持必须

Uptime Kuma 使用 WebSocket 实时推送状态,Nginx 配置中 必须加上 UpgradeConnection 头,否则界面无法正常刷新。

添加监控项

登录后点击"Add New Monitor",常用配置如下:

监控类型适用场景检测方式
HTTP(S)网站、API 接口检查 HTTP 状态码
TCP 端口数据库、SSH 端口检查端口是否可达
DNS域名解析检查 DNS 响应
Ping基础连通性ICMP ping

建议检测间隔设置为 60 秒,重试次数设为 3,避免网络抖动导致误报。

配置通知渠道

在"Settings → Notifications"中添加通知方式。以 Telegram 为例:

  1. 在 Telegram 中找到 @BotFather,创建一个新 Bot,获取 Bot Token
  2. 给 Bot 发一条消息,访问 https://api.telegram.org/bot<token>/getUpdates 获取 Chat ID
  3. 在 Uptime Kuma 通知配置中填入 Bot Token 和 Chat ID
  4. 点击"Test"验证是否收到测试消息

状态页

Uptime Kuma 支持创建公开"状态页",展示各服务的可用率历史,适合向用户公示服务状态,可绑定独立域名。

小结

  • 单容器、一条命令即可部署,资源占用极低
  • 支持多种监控类型与通知渠道,覆盖常见监控场景
  • 反代配置必须包含 WebSocket 支持
  • 可利用状态页向用户展示服务可用率

常见问题

Uptime Kuma 可以监控多少个服务?

理论上不限数量,实际受服务器性能和网络影响,个人使用几十到上百个监控项完全没有问题。

通知太频繁怎么办?

可以在每个监控项设置「重试次数」和「重试间隔」,只有连续多次失败才发出通知,有效过滤偶发的网络抖动。

数据存在哪里?如何备份?

所有数据存储在 Docker 命名卷 uptime-kuma 中。可用 docker run --rm -v uptime-kuma:/data alpine tar czf - /data > backup.tar.gz 导出备份。