欢迎光临
我们一直在努力

Docker搭建Uptime Kuma网站监控

网站打不开,往往是客户先发现。搭建一套网站监控,可以定时检查访问情况,并在网站出现故障或恢复时发送邮件提醒。

本教程使用 Docker 部署 Uptime Kuma,通过 Caddy 自动配置 HTTPS,再用普通 QQ 邮箱发送通知。从安装 Docker 到验证故障邮件,按照下面的步骤操作即可。

1. 项目介绍

Uptime Kuma 是一款开源监控工具,可以检查网站、TCP 端口等服务的可用性,并提供响应时间、历史状态、消息通知和公开状态页。

本次教程完成以下功能:

  • 定时检查网站是否可以访问。
  • 网站故障和恢复时发送邮件。
  • 通过 HTTPS 域名管理监控。
  • 创建可以分享给客户的状态页。

本文主要监控网站可用性。服务器 CPU、内存等指标需要另外配置系统监控。

2. 相关地址

Uptime Kuma 项目地址:
https://github.com/louislam/uptime-kuma

Caddy 自动 HTTPS 文档:
https://caddyserver.com/docs/automatic-https

3. 搭建环境

本次建议使用以下配置:

  • CPU:建议 2 核
  • 内存:建议 2GB,监控数量增加后按需调整
  • 磁盘:建议预留 10GB 可用空间
  • 系统:Debian 12 或 Ubuntu 24.04
  • Docker:需要安装 Docker Engine
  • Compose:需要使用新版 docker compose 插件
  • 域名:一个可以修改 DNS 解析的子域名
  • 端口:服务器的 TCP 80、443 端口空闲,并允许公网访问
  • 邮箱:一个发送通知的 QQ 邮箱,以及一个接收通知的邮箱

Docker 和 Compose 的安装步骤见第 5.1 节。

本教程适用于新建部署。为了方便跟做,建议使用独立服务器。如果服务器已经运行宝塔、Nginx 或其他网站,需要先确认 80、443 端口是否被占用。

本次教程推荐使用莱卡云 Linux 云服务器进行搭建。

查看官网购买链接: https://www.lcayun.com

9折优惠码:bloglcayun

4. 搭建视频

配套视频按照以下顺序演示:

  1. 安装并验证 Docker 和 Compose。
  2. 解析域名并配置端口。
  3. 部署 Uptime Kuma。
  4. 通过 HTTPS 创建管理员。
  5. 添加网站监控和 QQ 邮箱通知。
  6. 验证故障与恢复邮件。
  7. 创建公开状态页。

【视频位置:由执行人员完成录制后嵌入,发布时删除本提示。】

5. 正式搭建

以下命令均在服务器终端执行,使用 root 用户。

5.1 安装 Docker 和 Docker Compose

如果服务器尚未安装 Docker,先参考本站教程,完成其中的 Docker 安装步骤:

安装教程: 服务器上安装docker和docker-compose教程

上述教程的 Compose 部分为旧版安装方法。本项目使用新版 Compose 插件,命令为:

docker compose

完成 Docker 安装后,在 Debian 12 或 Ubuntu 24.04 服务器终端执行:

apt-get update
apt-get install -y docker-compose-plugin
systemctl enable --now docker

以上命令需要服务器已经配置 Docker 官方软件源。

随后检查版本和运行状态:

docker --version
docker compose version
systemctl is-active docker

前两条命令应正常显示版本信息,第三条应返回:

active
验证Docker和Compose插件安装成功

再运行一个测试容器:

docker run --rm hello-world

看到输出中包含 Hello from Docker!,说明测试容器成功运行,可以继续部署。

如果已经安装 Docker 和 Compose,并通过上述检查,可以跳过安装步骤。

如果提示找不到 docker-compose-plugin 软件包,请按实际系统检查 Docker 官方软件源:

5.2 解析域名

进入域名的 DNS 管理页面,添加一条 A 记录:

设置项填写内容
记录类型A
主机记录status
记录值服务器实际公网 IPv4 地址

例如,主域名是 example.com,监控地址就是:

status.example.com

本文的 status.example.com 只是示例,后续需要替换成你自己的域名。

本次使用直接 DNS 解析。没有配置 IPv6 时,不要为这个子域名添加 AAAA 记录;如果已有错误的 AAAA 记录,需要先修正。

同时,在云服务器安全组和系统防火墙中放行入站 TCP 80、443 端口。

将监控域名解析到云服务器

5.3 保存部署配置

先创建项目目录:

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

接着复制下面整段命令,将其中的 status.example.com 换成自己的域名,再执行。

命令会在当前目录生成 compose.yaml 配置文件:

cat > compose.yaml <<'EOF'
name: uptime-kuma

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2.5.6-slim
    restart: unless-stopped
    environment:
      TZ: Asia/Shanghai
      UPTIME_KUMA_DB_TYPE: sqlite
    volumes:
      - ./data:/app/data

  caddy:
    image: caddy:2-alpine
    restart: unless-stopped
    command:
      - caddy
      - reverse-proxy
      - --from
      - status.example.com
      - --to
      - uptime-kuma:3001
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./caddy-data:/data
      - ./caddy-config:/config
    depends_on:
      - uptime-kuma

  demo-web:
    image: nginx:alpine
    profiles: [demo]
    restart: unless-stopped
EOF
Docker部署Uptime Kuma和Caddy自动HTTPS

这份配置中:

  • Uptime Kuma: 负责监控,使用 SQLite 保存数据。
  • Caddy: 负责 HTTPS 访问和证书管理。
  • demo-web: 用于后面测试故障通知,默认不会启动。

Uptime Kuma 的 3001 端口通过容器内部网络访问,无需在安全组中开放。

5.4 启动服务

在 /opt/uptime-kuma 目录执行:

docker compose config -q && docker compose up -d

查看运行状态:

docker compose ps

查看 Caddy 日志:

docker compose logs --tail=50 caddy

首次启动需要下载镜像并申请证书。等待服务正常运行、证书签发成功后,再打开浏览器。

6. 访问页面并创建管理员

在自己电脑的浏览器中打开:

https://你的监控域名

首次进入时,按照页面提示完成以下操作:

  1. 选择界面语言。
  2. 填写管理员用户名。
  3. 设置独立的高强度密码。
  4. 确认密码并创建账户。
通过HTTPS创建Uptime Kuma管理员

配置文件已经指定 SQLite,通常不需要另外填写数据库服务器。

部署完成后应及时创建管理员。登录后,可以在设置中启用双重验证。

本教程已通过 Caddy 配置 HTTPS,直接使用自己的域名登录即可。

如果浏览器出现证书警告,先检查域名解析和 Caddy 日志,处理完成后再登录。

7. 添加网站监控

点击“添加监控项”,按下面的示例填写:

设置项填写内容
监控类型HTTP(s)
显示名称我的网站
URL自己网站的完整 HTTPS 地址
检测间隔60 秒
重试次数1 次
重试间隔60 秒
Uptime Kuma添加网站监控

保存后等待实际检测结果。

页面显示正常,说明当前这次检测成功。后续会持续记录网站状态和响应时间。

请监控自己拥有或获准检测的网站。如果需要检查某个 TCP 端口,也可以新增 TCP 监控,填写对应主机地址和端口。

8. 使用 QQ 邮箱发送告警

这里使用普通 QQ 邮箱,不需要搭建邮件服务器。

准备两个邮箱:

  • 邮箱 A: QQ 邮箱,用于发送通知。
  • 邮箱 B: 自己可以访问的邮箱,用于接收和验证通知。

开启 QQ 邮箱 SMTP

登录 QQ 邮箱网页版,进入:

右上角头像 → 设置 → 账号与安全 → 安全设置

开启 POP3/IMAP/SMTP 相关服务,并按页面提示生成授权码。

QQ邮箱开启SMTP并获取授权码入口

保存好授权码,下一步使用。这里使用的是邮箱授权码,不是 QQ 登录密码。

在 Uptime Kuma 中添加通知

进入通知设置,新增 Email(SMTP)通知:

设置项填写内容
通知名称QQ邮箱告警
通知类型Email(SMTP)
SMTP 主机smtp.qq.com
SMTP 端口465
安全连接SSL/TLS
用户名邮箱 A 的完整 QQ 邮箱地址
密码刚生成的 QQ 邮箱授权码
发件人与用户名相同的邮箱 A
收件人邮箱 B

保持证书校验开启,不要勾选忽略 TLS 或证书错误。

Uptime Kuma配置QQ邮箱邮件告警

点击“测试”,然后打开邮箱 B,确认真正收到测试邮件。

确认后保存通知,再编辑网站监控项,勾选这条“QQ邮箱告警”。

收到测试邮件、保存通知、关联监控项,这三步都要完成。

验证QQ邮箱测试通知送达

9. 验证故障和恢复通知

使用配置中的演示网站进行测试,方便观察完整过程。

启动演示网站

在服务器执行:

cd /opt/uptime-kuma
docker compose --profile demo up -d demo-web

在 Uptime Kuma 中新增监控:

设置项填写内容
监控类型HTTP(s)
显示名称演示站点
URLhttp://demo-web
检测间隔20 秒
重试次数1 次
重试间隔20 秒
通知勾选 QQ邮箱告警

http://demo-web 是容器内部地址,填写在监控配置中即可,不需要在电脑浏览器中打开。

保存并等待监控状态正常。

模拟网站故障

在服务器执行:

docker compose --profile demo stop demo-web
演示站点停止后触发故障状态

等待检测和重试结束,确认监控项进入最终故障状态,再检查邮箱 B 是否收到故障邮件。

如果仍处于等待或重试状态,需要继续等待。

Uptime Kuma发送网站故障邮件

恢复网站

执行:

docker compose --profile demo start demo-web
演示站点启动后恢复正常

等待监控恢复正常,再检查邮箱 B 是否收到恢复邮件。

同一次测试中,故障和恢复邮件都实际收到,才算完成验证。

Uptime Kuma发送服务恢复通知

演示结束后,可以先删除“演示站点”监控项,再停止演示网站:

docker compose --profile demo stop demo-web

10. 创建公开状态页

进入“状态页”,创建一个新页面:

  1. 填写页面名称。
  2. 将路径标识设置为 services。
  3. 添加分组。
  4. 选择允许公开的监控项。
  5. 保存页面。

随后用浏览器无痕窗口访问:

https://你的监控域名/status/services

确认访客可以看到状态信息,页面没有后台编辑控件。

这个地址可以分享给客户,管理员账户由自己保管。只将允许公开的网站名称和监控信息加入状态页。

Uptime Kuma公开状态页展示网站状态

11. 检查 HTTPS 访问

部署完成后,检查以下三项:

  • 使用自己的 HTTPS 域名可以正常登录。
  • 浏览器证书详情中的域名正确,证书处于有效期内。
  • 监控页面能够持续更新状态。

本教程通过 Caddy 配置 HTTPS,后续证书续期也由它自动处理。

长期运行时,要保持域名解析正确、证书验证所需端口可达,并保留 caddy-data 目录。

验证Uptime Kuma域名HTTPS证书

12. 数据备份与更新

监控数据保存在项目的 data 目录中。建议定期备份,并在升级前额外备份一次。

下面的命令会短暂停止监控和网页访问,完成打包后尝试重新启动服务:

(
  set -e
  cd /opt/uptime-kuma
  umask 077
  mkdir -p /opt/uptime-kuma-backups

  trap 'docker compose start uptime-kuma caddy' EXIT
  docker compose stop uptime-kuma caddy

  tar -czf "/opt/uptime-kuma-backups/kuma-$(date +%Y%m%d-%H%M%S).tar.gz" \
    compose.yaml data caddy-data caddy-config
)

备份文件保存在:

/opt/uptime-kuma-backups

备份后检查容器状态,并重新打开 HTTPS 页面确认服务恢复:

cd /opt/uptime-kuma
docker compose ps

备份中包含数据库、通知配置和证书私钥,应妥善保管,并复制到其他设备。生成压缩包后,还应安排恢复测试。

更新前先查看 Uptime Kuma 版本说明,确认升级要求并完成备份,再调整配置中的镜像版本。

13. 常见问题

域名打不开或证书申请失败

优先检查:

  • A 记录是否指向正确的服务器。
  • 是否存在错误的 AAAA 记录。
  • 安全组和防火墙是否放行 80、443。
  • 端口是否已被其他服务占用。

然后查看 Caddy 日志:

cd /opt/uptime-kuma
docker compose logs --tail=100 caddy

页面显示 502

检查 Uptime Kuma 是否完成启动:

cd /opt/uptime-kuma
docker compose ps
docker compose logs --tail=100 uptime-kuma

首次初始化可能需要等待。如果持续报错,按日志提示处理。

容器一直重启

查看报错日志和剩余磁盘空间,不要直接删除数据目录。

可以参考本站的 Docker 容器一直重启怎么办?Restarting 状态排查教程。

容器运行状态与应用实际可用性也需要分别检查,相关内容可参考 Docker Compose healthcheck 怎么配置?容器健康检查教程。

没有收到邮件

依次检查:

  • QQ 邮箱 SMTP 服务是否开启。
  • 密码栏填写的是否为有效授权码。
  • 用户名与发件人是否为同一个完整 QQ 邮箱。
  • 服务器能否向 smtp.qq.com:465 建立出站连接。
  • 通知是否关联到对应监控项。
  • 接收地址是否正确。
  • 邮件是否进入垃圾邮件文件夹。

这里需要服务器向外连接 SMTP 服务,无需开放服务器入站 465 端口。

测试按钮显示成功后,也需要到接收邮箱确认实际收件。

14. 总结

完成以上配置后,就可以通过 HTTPS 管理 Uptime Kuma,持续检查网站状态,并在网站故障和恢复时接收邮件。

后续可以继续添加需要监控的网站,整理公开状态页,并定期备份监控数据。

长期使用时,建议将监控服务部署在独立于被监控网站的服务器上,减少同一台服务器故障导致监控也停止的情况。

赞(0)
未经允许不得转载:莱卡云 » Docker搭建Uptime Kuma网站监控