Uptime Kuma 部署教程:用 Docker 搭建自托管网站监控面板

作为站长,你一定希望第一时间知道网站是否宕机。商业监控服务(如 UptimeRobot、Pingdom)虽然好用,但免费版通常有数量限制,而且数据掌握在别人手里。Uptime Kuma 是一个开源的自托管监控工具,界面美观、功能强大、部署简单,是目前最受欢迎的自托管监控方案之一。

Uptime Kuma 是什么

Uptime Kuma 是一个开源的网站和服务监控工具,类似于 “Uptime Robot” 的自托管版本。它支持监控 HTTP(S)、TCP、DNS、Docker 容器等多种类型的检查,并提供美观的仪表盘和状态页面。

项目地址:https://github.com/louislam/uptime-kuma(65000+ Stars)

核心功能

  • 多种监控类型:HTTP(S)、TCP Port、Ping、DNS、Steam Game Server、Docker 容器、Push 监控等
  • 通知推送:支持 90+ 种通知渠道,包括 Telegram、Discord、邮件、微信、钉钉、企业微信等
  • 状态页面:可以创建公开的状态页面,向用户展示服务运行状态
  • 多语言支持:支持中文在内的 30+ 种语言
  • 证书监控:自动监控 SSL 证书到期时间
  • 分组管理:支持按项目、按环境分组管理监控项

Docker 部署步骤

方法一:Docker 命令

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

运行后访问 http://your-server-ip:3001 即可打开管理面板。首次访问需要创建管理员账号。

方法二:Docker Compose(推荐)

# docker-compose.yml
version: '3.3'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: always
    volumes:
      - uptime-kuma-data:/app/data
    ports:
      - "3001:3001"

volumes:
  uptime-kuma-data:

启动:

docker compose up -d

方法三:配合 Nginx 反向代理

如果你希望通过域名访问(如 monitor.example.com),需要配置 Nginx 反向代理:

# /etc/nginx/sites-available/uptime-kuma
server {
    listen 80;
    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;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

注意:UpgradeConnection 头是必须的,因为 Uptime Kuma 使用 WebSocket 进行实时数据推送。

添加监控项

监控网站

  1. 点击 “Dashboard” → “+ New Monitor”
  2. 选择类型为 “HTTP(s)”
  3. 填写名称(如 “主站”)和 URL(如 “https://feng.cx”)
  4. 设置检查间隔(推荐 60 秒)
  5. 选择通知渠道(如 Telegram、邮件等)
  6. 点击保存

监控端口

如果你运行了数据库或其他服务,可以用 TCP Port 类型监控:

  1. 类型选择 “TCP Port”
  2. 填写主机和端口(如 your-server-ip:3306 监控 MySQL)
  3. 设置检查间隔

监控 SSL 证书

Uptime Kuma 会自动检查 HTTPS 监控项的 SSL 证书。你可以在通知设置中配置”证书到期提醒”,在证书到期前 N 天收到通知。

配置通知渠道

Telegram 通知

  1. 在 Telegram 中搜索 @BotFather,创建一个 Bot
  2. 获取 Bot Token
  3. 在 Uptime Kuma 中添加通知渠道,选择 Telegram
  4. 填入 Bot Token 和 Chat ID

邮件通知

  1. 添加通知渠道,选择 Email (SMTP)
  2. 填写 SMTP 服务器信息(如 Gmail 的 smtp.gmail.com:587)
  3. 填写发件人邮箱和密码
  4. 填写收件人邮箱

企业微信/钉钉通知

Uptime Kuma 原生支持企业微信和钉钉的通知推送。添加通知渠道时选择对应类型,填入 Webhook URL 即可。

公开状态页面

Uptime Kuma 支持创建公开的状态页面,让你的用户了解服务运行状态:

  1. 在设置中创建 Status Page
  2. 选择要展示的监控项
  3. 自定义页面标题、描述和主题
  4. 发布后会得到一个公开链接(如 https://status.example.com

数据备份

Uptime Kuma 的数据存储在 /app/data 目录下的 SQLite 数据库中。备份方法:

# 备份数据卷
docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup alpine tar czf /backup/uptime-kuma-backup.tar.gz -C /data .

# 恢复
docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup alpine tar xzf /backup/uptime-kuma-backup.tar.gz -C /data

注意事项

  • Uptime Kuma 本身也需要被监控——建议在不同的服务器上部署一个备用实例,或者使用外部服务监控主 Uptime Kuma 实例
  • 如果监控项很多(100+),建议增加检查间隔,避免对目标服务造成压力
  • WebSocket 连接在 Nginx 反向代理场景下需要特殊配置,否则实时更新可能不工作
  • 定期更新 Docker 镜像,获取最新的安全补丁和功能

简评

Uptime Kuma 是目前最好的自托管监控工具之一。它界面美观、功能全面、部署简单,而且完全免费。对于有多个网站或服务需要监控的站长来说,花 10 分钟部署一个 Uptime Kuma 实例,可以省去很多半夜被用户告知”网站挂了”的尴尬。

来源:

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容