网站打不开,往往是客户先发现。搭建一套网站监控,可以定时检查访问情况,并在网站出现故障或恢复时发送邮件提醒。
本教程使用 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. 搭建视频
配套视频按照以下顺序演示:
- 安装并验证 Docker 和 Compose。
- 解析域名并配置端口。
- 部署 Uptime Kuma。
- 通过 HTTPS 创建管理员。
- 添加网站监控和 QQ 邮箱通知。
- 验证故障与恢复邮件。
- 创建公开状态页。
【视频位置:由执行人员完成录制后嵌入,发布时删除本提示。】
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 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

这份配置中:
- 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://你的监控域名
首次进入时,按照页面提示完成以下操作:
- 选择界面语言。
- 填写管理员用户名。
- 设置独立的高强度密码。
- 确认密码并创建账户。

配置文件已经指定 SQLite,通常不需要另外填写数据库服务器。
部署完成后应及时创建管理员。登录后,可以在设置中启用双重验证。
本教程已通过 Caddy 配置 HTTPS,直接使用自己的域名登录即可。
如果浏览器出现证书警告,先检查域名解析和 Caddy 日志,处理完成后再登录。
7. 添加网站监控
点击“添加监控项”,按下面的示例填写:
| 设置项 | 填写内容 |
|---|---|
| 监控类型 | HTTP(s) |
| 显示名称 | 我的网站 |
| URL | 自己网站的完整 HTTPS 地址 |
| 检测间隔 | 60 秒 |
| 重试次数 | 1 次 |
| 重试间隔 | 60 秒 |

保存后等待实际检测结果。
页面显示正常,说明当前这次检测成功。后续会持续记录网站状态和响应时间。
请监控自己拥有或获准检测的网站。如果需要检查某个 TCP 端口,也可以新增 TCP 监控,填写对应主机地址和端口。
8. 使用 QQ 邮箱发送告警
这里使用普通 QQ 邮箱,不需要搭建邮件服务器。
准备两个邮箱:
- 邮箱 A: QQ 邮箱,用于发送通知。
- 邮箱 B: 自己可以访问的邮箱,用于接收和验证通知。
开启 QQ 邮箱 SMTP
登录 QQ 邮箱网页版,进入:
右上角头像 → 设置 → 账号与安全 → 安全设置
开启 POP3/IMAP/SMTP 相关服务,并按页面提示生成授权码。

保存好授权码,下一步使用。这里使用的是邮箱授权码,不是 QQ 登录密码。
在 Uptime Kuma 中添加通知
进入通知设置,新增 Email(SMTP)通知:
| 设置项 | 填写内容 |
|---|---|
| 通知名称 | QQ邮箱告警 |
| 通知类型 | Email(SMTP) |
| SMTP 主机 | smtp.qq.com |
| SMTP 端口 | 465 |
| 安全连接 | SSL/TLS |
| 用户名 | 邮箱 A 的完整 QQ 邮箱地址 |
| 密码 | 刚生成的 QQ 邮箱授权码 |
| 发件人 | 与用户名相同的邮箱 A |
| 收件人 | 邮箱 B |
保持证书校验开启,不要勾选忽略 TLS 或证书错误。

点击“测试”,然后打开邮箱 B,确认真正收到测试邮件。
确认后保存通知,再编辑网站监控项,勾选这条“QQ邮箱告警”。
收到测试邮件、保存通知、关联监控项,这三步都要完成。

9. 验证故障和恢复通知
使用配置中的演示网站进行测试,方便观察完整过程。
启动演示网站
在服务器执行:
cd /opt/uptime-kuma
docker compose --profile demo up -d demo-web
在 Uptime Kuma 中新增监控:
| 设置项 | 填写内容 |
|---|---|
| 监控类型 | HTTP(s) |
| 显示名称 | 演示站点 |
| URL | http://demo-web |
| 检测间隔 | 20 秒 |
| 重试次数 | 1 次 |
| 重试间隔 | 20 秒 |
| 通知 | 勾选 QQ邮箱告警 |
http://demo-web 是容器内部地址,填写在监控配置中即可,不需要在电脑浏览器中打开。
保存并等待监控状态正常。
模拟网站故障
在服务器执行:
docker compose --profile demo stop demo-web

等待检测和重试结束,确认监控项进入最终故障状态,再检查邮箱 B 是否收到故障邮件。
如果仍处于等待或重试状态,需要继续等待。

恢复网站
执行:
docker compose --profile demo start demo-web

等待监控恢复正常,再检查邮箱 B 是否收到恢复邮件。
同一次测试中,故障和恢复邮件都实际收到,才算完成验证。

演示结束后,可以先删除“演示站点”监控项,再停止演示网站:
docker compose --profile demo stop demo-web
10. 创建公开状态页
进入“状态页”,创建一个新页面:
- 填写页面名称。
- 将路径标识设置为
services。 - 添加分组。
- 选择允许公开的监控项。
- 保存页面。
随后用浏览器无痕窗口访问:
https://你的监控域名/status/services
确认访客可以看到状态信息,页面没有后台编辑控件。
这个地址可以分享给客户,管理员账户由自己保管。只将允许公开的网站名称和监控信息加入状态页。

11. 检查 HTTPS 访问
部署完成后,检查以下三项:
- 使用自己的 HTTPS 域名可以正常登录。
- 浏览器证书详情中的域名正确,证书处于有效期内。
- 监控页面能够持续更新状态。
本教程通过 Caddy 配置 HTTPS,后续证书续期也由它自动处理。
长期运行时,要保持域名解析正确、证书验证所需端口可达,并保留 caddy-data 目录。

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,持续检查网站状态,并在网站故障和恢复时接收邮件。
后续可以继续添加需要监控的网站,整理公开状态页,并定期备份监控数据。
长期使用时,建议将监控服务部署在独立于被监控网站的服务器上,减少同一台服务器故障导致监控也停止的情况。








