一、前言
作为一名业余时间维护个人网站博主,有时候遇到网站宕机几小时才发现,访客流失不说,搜索引擎收录还可能受影响。之前试过 Uptime Robot、Pingdom 等工具,最终被开源免费、功能全、颜值高的 Uptime Kuma 圈粉。今天就把 2025 年最新的 Docker 部署方案整理出来,从环境准备到反向代理,新手也能一步到位。
在说部署前,先聊聊它的核心优势 —— 毕竟监控工具那么多,选对才不浪费服务器资源:
- 开源无限制:对比 Uptime Robot 免费版仅支持 50 个监控项,Kuma 无任何功能锁,监控 100 个网站也不收费;
- 监控类型全:除了 HTTP (s) 网站,还支持 TCP 端口、Ping、DNS、数据库(MySQL/Redis)、Docker 容器等 20 + 监控场景;
- 实时预警快:支持 SMTP 邮件、Telegram、钉钉、企业微信等 30 + 通知方式,宕机 10 秒内就能收到提醒;
- 可视化直观:自带响应时间曲线图、状态热力图,故障历史一目了然,不用查日志猜问题;
- 轻量省资源:Docker 容器启动后仅占 50MB 内存,比同类工具省 70% 资源,低配服务器也能跑。
放一张我网站的状态页面截图,健康状态、响应时间清晰可见,颜值还不错哦。

二、准备工作
Kuma 的部署门槛极低,只要服务器能跑 Docker,基本零障碍。先确认以下 3 个条件::
- 已安装 Docker 和 Docker Compose
- 有公网 IP(或本地服务器用于测试)
- 开放目标端口(默认 13001,可自定义)
为了方便后续管理配置和数据备份,建议创建独立工作目录(我习惯把工具都放~/opt 目录下,统一管理):
| cd ~ |
| mkdir -p ~/opt/uptime-kuma |
| cd ~/opt/uptime-kuma |
接下来开放端口,这里分两种场景,根据你的服务器防火墙类型选:
| # 场景1:用ufw防火墙(Ubuntu/Debian),开放13001端口 |
| sudo ufw allow 13001/tcp comment 'Uptime Kuma监控服务' && sudo ufw reload |
| # 场景2:用firewalld防火墙(CentOS/RHEL) |
| sudo firewall-cmd --add-port=13001/tcp --permanent && sudo firewall-cmd --reload |
注意:如果是云服务器(阿里云 / 腾讯云),还要在控制台的 “安全组” 里开放 13001 端口,否则外部无法访问。
三、Docker Compose 部署
Uptime Kuma 的 Docker 配置极其简洁,核心就是 “镜像 + 数据卷 + 端口映射”。
在~/opt/uptime-kuma 目录下新建 docker-compose.yml 文件,直接复制以下配置:
| version: '3.3' |
| services: |
| uptime-kuma: |
| # 推荐用镜像源,拉取速度快(国外服务器可换louislam/uptime-kuma:2) |
| image: docker2.leitool.top/louislam/uptime-kuma:2 |
| restart: unless-stopped # 异常自动重启,保障服务稳定 |
| volumes: |
| # 数据持久化:将容器内数据映射到宿主机,删除容器也不丢数据 |
| - ./data:/app/data |
| ports: |
| # 主机端口:容器端口(容器内默认3001,主机端口可自定义) |
| - "13001:3001" |
配置完成后,执行启动命令,Docker 会自动拉取镜像并创建容器:
| # 后台启动服务(-d表示 detached 模式) |
| docker-compose up -d |
| # 查看容器运行状态(出现Up说明启动成功) |
| docker ps |
| # 若启动失败,查看日志排查问题 |
| docker-compose logs -f |
使用 docker ps 命令检查容器是否创建成功。

四、首次配置:监控项添加
4.1 配置引导
打开浏览器访问 “服务器 IP:13001”,就能进入 Uptime Kuma 的安装引导页面,全程可视化操作,非常简单。

Uptime Kuma 2.0 版本最大的升级就是支持 MariaDB 数据库,对比旧版本的 SQLite,两者区别很明显,根据需求选。

创建管理员账号:数据库配置后,设置用户名和密码(建议密码包含大小写 + 数字,避免被暴力破解),点击 “Create” 完成初始化:

自动跳转进入 Uptime Kuma 仪盘表

4.2 监控项配置
- 添加第一个监控项:进入仪表盘后,点击右上角 “+ Add Monitor”,重点配置这几个参数: Monitor Type:选 “HTTP (s)”(监控网站用这个);
- 显示名称:自定义名称(比如 “我的个人博客”);
- URL:填写网站完整地址(如 https://blog.example.com);
- Heartbeat Interval:心跳间隔,默认 60 秒,我建议改成 180 秒(减少误报,也能降低服务器请求压力);
- Max Retries:重试次数,默认 3 次,保留即可。

4.3 通知方式:宕机报警
监控的核心是 “出问题能及时知道”,Uptime Kuma 支持 30 + 通知方式,我推荐使用 SMTP 邮件(通用):填写邮箱 SMTP 服务器信息(比如 QQ 邮箱用 smtp.qq.com,端口 465),测试成功后,网站宕机就会收到邮件提醒:

五、状态页面
正常监控时的响应状态可视化:

状态页面可以把所有监控项整理成一个公开页面,方便访客查看网站状态(比如 “status.example.com”)。创建步骤:
- 点击左侧 “Status Pages”→“+ Add Status Page”;
- 设置页面名称、URL 路径(比如 “website”,访问地址就是 Istatus.example.com/websit);
- 保存后就能通过链接访问状态页面了。

我配置的状态页面长这样,能自定义展示顺序和分组:

六、反向代理
直接通过 IP:端口访问不够美观,且缺乏 HTTPS 安全层。我们可以用 Nginx(或 Caddy、Apache)做反向代理,绑定域名并配置 SSL。
与其他 Web 应用程序不同,Uptime Kuma 基于 WebSocket。您需要另外两个标头 “Upgrade” 和 “Connection” 才能反向代理 WebSocket。
请阅读 wiki 了解更多信息:https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy
先在域名解析平台(如阿里云、Cloudflare)将域名(如 umami.example.com)解析到服务器 IP。
6.1 NPM
NPM 图形化操作,无需写配置文件,适合新手:
- 在 NPM 中添加 “Proxy Host”,填写域名(如 kuma.example.com);
- Scheme 选 “http”,Forward Hostname/IP 填 “127.0.0.1”,Forward Port 填 “13001”;
- 勾选 “WebSockets Support”(关键!否则监控数据无法实时更新);
- 进入 “SSL” 标签,申请 Let’s Encrypt 证书,开启强制 HTTPS。
6.2 Nginx
如果是 Nginx,根据官网的描述,要添加以下代码:
| location / { |
| proxy_set_header X-Real-IP $remote_addr; |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| proxy_set_header Host $host; |
| proxy_pass http://localhost:3001/; |
| proxy_http_version 1.1; |
| proxy_set_header Upgrade $http_upgrade; |
| proxy_set_header Connection "upgrade"; |
| } |
6.3 群晖 NAS
如果把 Kuma 部署在群晖 NAS 上,用系统自带的反向代理即可:
- 打开群晖 “控制面板”→“登录门户”→“高级”→“反向代理”;
- 点击 “新增”,填写来源(域名、端口 443)和目标(群晖本地 IP、端口 13001):

- 切换到 “自定义标题”,点击 “创建”→选择 “Websockets”,自动填充所需头信息:

这样就可以通过域名访问 Uptime-kumaf 服务了。
七、腾讯云 EdgeOne 配置
我把 Kuma 部署在内网群晖里,没有公网 IPv4,所以用腾讯云 EdgeOne 实现 IPv6 转 IPv4,让纯 IPv4 环境也能访问,步骤如下:
- IPv6 域名解析:用 DDNS-go 工具,将域名(如 kuma.example.com)解析到群晖的本地 IPv6 地址。
- EdgeOne 配置:在腾讯云 EdgeOne 控制台,添加站点并选择 “开启 IPv6 访问”,将加速域名指向刚才的 IPv6 域名;
- 验证访问:通过 EdgeOne 分配的加速域名(如 uptime.example.com),纯 IPv4 网络也能访问内网的 Kuma 服务了。

八、小结
作为用了 Uptime Robot 免费版 2 年的老用户,最近用上了 Uptime kuma,部署轻量易上手,监控数据实时性和通知可靠性都经得起考验。
如果你有多个网站、服务器或 API 服务,花 10 分钟部署 Uptime Kuma,就能彻底告别 “被动发现故障” 的尴尬。