源码屋 YUANMAWU
运维与自动化 作者:源码屋 发布于 更新于

用 Docker 部署 Uptime Kuma:从安装到通知配置

从零开始用 Docker 部署 Uptime Kuma,完成监控项、通知渠道与反向代理配置,并说明数据备份与升级注意事项。

  • Docker
  • 网站监控
  • 自托管

关联项目: Uptime Kuma 开源网站监控系统

Uptime Kuma 的部署门槛不高,真正容易出问题的是后续的 HTTPS、反向代理和数据备份。这篇文章按实际部署顺序整理一遍,命令与配置都可以直接参考。

部署前准备

需要准备:

  • 一台可以运行 Docker 的 Linux 服务器;
  • 一个可用的域名(配置 HTTPS 时需要);
  • 服务器防火墙或云安全组放行对应端口。

如果服务器还没有安装 Docker,请先按官方文档完成安装,并确认 docker --version 能正常输出。

启动 Uptime Kuma 容器

创建并启动容器:

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

几个参数的含义:

  • --restart=always:服务器重启或容器异常退出后自动拉起;
  • -p 3001:3001:把容器内的 3001 端口映射到宿主机;
  • -v uptime-kuma:/app/data:数据目录持久化,删除容器不会丢失监控数据。

启动后访问 http://服务器IP:3001,按页面提示创建管理员账号。建议设置足够复杂的密码,并限制管理面板的访问来源。

添加第一个监控项

登录后点击「添加监控项」,以 HTTP 监控为例:

  1. 监控类型选择 HTTP(s);
  2. 填写需要监控的地址;
  3. 设置检查间隔与重试次数;
  4. 保存后等待第一次检测结果。

监控项创建后,面板会展示状态、响应时间与历史事件。可以先添加一个确定可访问的地址,确认整条链路正常,再逐个补充业务地址。

配置通知渠道

在「设置 → 通知」中选择通知类型,常见的有:

  • Telegram Bot;
  • Discord / Slack Webhook;
  • SMTP 邮件;
  • 自定义 Webhook。

配置完成后务必点击「测试」按钮,确认能够实际收到消息。很多「没有告警」的问题,都是通知配置未测试导致的。

配置 Nginx 反向代理与 HTTPS

直接暴露 3001 端口不利于安全,建议用 Nginx 反向代理。Uptime Kuma 使用 WebSocket,需要在代理配置中保留 Upgrade 头:

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;
    }
}

HTTPS 证书可以用 Certbot 等工具申请,配置完成后应确认状态页与实时状态都能正常刷新。

数据备份与升级

数据都在容器的 /app/data 目录中,备份 volume 即可:

docker run --rm \
  -v uptime-kuma:/data \
  -v "$(pwd)":/backup \
  alpine tar czf /backup/uptime-kuma-backup.tar.gz -C /data .

升级时先拉取新镜像,再用相同的挂载参数重新创建容器。由于数据在 volume 中,重建容器不会影响已有监控配置,但仍建议升级前先做一次备份。

常见问题

面板打不开:先确认容器处于运行状态,再检查安全组与防火墙是否放行端口。

监控显示超时:确认服务器到目标地址的网络连通性,必要时在服务器上用 curl 验证。

通知收不到:在通知设置中执行测试;SMTP 场景注意端口、加密方式与发件人限制。

反向代理后频繁断开:检查 WebSocket 相关请求头是否完整透传。

如果需要部署协助或希望把监控纳入现有运维体系,可以查看 Uptime Kuma 项目详情 或 部署协助服务。

关联开源项目