前言

如果你有多个网站或服务运行在不同的VPS上,肯定需要一个监控工具来随时了解它们的运行状态。Uptime Kuma是目前最流行的开源自托管监控工具,界面美观、功能强大,可以监控HTTP/HTTPS、TCP端口、Ping、DNS等多种类型的服务,还支持Telegram、邮件、Webhook等多种通知方式。本文教你如何用Docker快速搭建Uptime Kuma。

一、Uptime Kuma功能简介

  • 支持HTTP/HTTPS、TCP、Ping、DNS、Docker容器等多种监控类型
  • 精美的响应式状态页面,可自定义域名展示
  • 支持90+种通知渠道(Telegram、邮件、Discord、钉钉、企业微信、Bark等)
  • 支持多语言(包含中文)
  • 支持证书到期监控
  • 支持多用户管理
  • 支持API接口
  • 二次验证(2FA)安全登录

二、安装Uptime Kuma

前置条件

确保你的VPS已经安装了Docker和Docker Compose,如果还没有安装可以参考国内用户一键安装Docker并配置镜像源

使用Docker Compose安装(推荐)

创建安装目录:

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

创建 docker-compose.yml 文件:

cat > docker-compose.yml << 'EOF'
version: "3.8"

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

启动服务:

docker compose up -d

使用Docker命令安装

如果不想用Docker Compose,也可以直接用Docker运行:

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

验证安装

# 查看容器状态
docker ps | grep uptime-kuma

# 查看日志
docker logs uptime-kuma

浏览器访问 http://你的VPS_IP:3001 即可打开Uptime Kuma管理界面。

三、初始设置

首次访问需要创建管理员账户:

  1. 打开浏览器访问 http://你的VPS_IP:3001
  2. 输入用户名和密码创建管理员账号
  3. 建议开启二次验证(2FA)提高安全性

四、添加监控项目

监控HTTP/HTTPS网站

  1. 点击左上角的 + 添加新的监控
  2. 选择监控类型为 HTTP(s)
  3. 填写配置:
配置项说明示例
名称监控项名称我的博客
URL要监控的网址https://www.vps69.com
间隔检测间隔时间(秒)60
重试次数失败后重试次数3
  1. 点击 保存 即可开始监控

监控TCP端口

适用于监控数据库、Redis等服务的端口连通性:

  1. 监控类型选择 TCP Port
  2. 填写主机和端口,如 127.0.0.1:3306(MySQL)

监控Ping

适用于监控VPS在线状态:

  1. 监控类型选择 Ping
  2. 填写主机地址,如 8.8.8.8

监控DNS记录

  1. 监控类型选择 DNS
  2. 填写域名和期望的解析结果

监控Docker容器

如果你想监控同一台VPS上的其他Docker容器:

  1. 启动Uptime Kuma时需要挂载Docker socket:
docker run -d \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --name uptime-kuma \
  louislam/uptime-kuma:1
  1. 监控类型选择 Docker Container
  2. 选择要监控的容器即可

五、配置通知渠道

以配置Telegram通知为例:

  1. 在Telegram中搜索 @BotFather,发送 /newbot 创建一个机器人,获取Bot Token
  2. 获取你的Chat ID(可以向 @userinfobot 发送任意消息获取)
  3. 在Uptime Kuma中进入 设置 > 通知 > 添加通知
  4. 选择 Telegram,填入Bot Token和Chat ID
  5. 点击 测试 确认通知正常

其他常用通知渠道:

通知渠道适用场景
Telegram个人使用,方便
邮件(SMTP)通用,适合团队
Discord海外用户常用
钉钉/企业微信国内团队协作
BarkiOS推送通知
Webhook自定义集成
ServerChan微信推送(微信)

六、创建公开状态页面

Uptime Kuma支持创建公开的状态页面,让你的用户可以查看服务运行状态。

  1. 在左侧菜单进入 状态页面
  2. 点击 添加新状态页面
  3. 输入页面名称和自定义URL路径
  4. 选择要展示在状态页面上的监控项
  5. 自定义页面标题和样式

发布后的状态页面地址为:http://你的VPS_IP:3001/status/你的路径

七、配合Nginx反向代理

为了通过域名访问并启用HTTPS,建议使用Nginx反向代理。

如果已经安装了Nginx Proxy Manager,可以直接在面板中添加代理规则。

手动配置Nginx:

server {
    listen 80;
    server_name status.yourdomain.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;
    }
}

然后使用Certbot申请SSL证书:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d status.yourdomain.com

八、数据备份与更新

备份数据

Uptime Kuma的数据存储在Docker卷中。使用Docker Compose安装时,数据在 ./data 目录下,直接备份此目录即可。

# 备份数据目录
tar -czf uptime-kuma-backup-$(date +%Y%m%d).tar.gz /opt/uptime-kuma/data/

更新版本

使用Docker Compose安装的更新方法:

cd /opt/uptime-kuma
docker compose pull
docker compose up -d

总结

Uptime Kuma是目前最好用的开源自托管监控工具,安装简单、界面美观、功能全面。搭配一台便宜VPS,就能搭建出媲美商业监控服务的监控系统。不管你是管理个人博客还是多个业务系统,Uptime Kuma都是不可或缺的运维利器。