Uptime Kuma

一、前言

作为一名业余时间维护个人网站博主,有时候遇到网站宕机几小时才发现,访客流失不说,搜索引擎收录还可能受影响。之前试过 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% 资源,低配服务器也能跑。

放一张我网站的状态页面截图,健康状态、响应时间清晰可见,颜值还不错哦。

 

image-20251113005153562

 

二、准备工作

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 命令检查容器是否创建成功。

 

image-20251112232938100

 

四、首次配置:监控项添加

4.1 配置引导

打开浏览器访问 “服务器 IP:13001”,就能进入 Uptime Kuma 的安装引导页面,全程可视化操作,非常简单。

 

image-20251112233158904

 

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

 

image-20251112233403365

 

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

 

image-20251112234919428

 

自动跳转进入 Uptime Kuma 仪盘表

 

image-20251112235137679

 

4.2 监控项配置

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

 

image-20251112235339076

 

4.3 通知方式:宕机报警

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

 

image-20251112235750240

 

五、状态页面

正常监控时的响应状态可视化:

 

image-20251113000314827

 

状态页面可以把所有监控项整理成一个公开页面,方便访客查看网站状态(比如 “status.example.com”)。创建步骤:

  1. 点击左侧 “Status Pages”→“+ Add Status Page”;
  2. 设置页面名称、URL 路径(比如 “website”,访问地址就是 Istatus.example.com/websit);
  3. 保存后就能通过链接访问状态页面了。

 

image-20251113000655060

 

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

 

image-20251113010812792

 

六、反向代理

直接通过 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 图形化操作,无需写配置文件,适合新手:

  1. 在 NPM 中添加 “Proxy Host”,填写域名(如 kuma.example.com);
  2. Scheme 选 “http”,Forward Hostname/IP 填 “127.0.0.1”,Forward Port 填 “13001”;
  3. 勾选 “WebSockets Support”(关键!否则监控数据无法实时更新);
  4. 进入 “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 上,用系统自带的反向代理即可:

  1. 打开群晖 “控制面板”→“登录门户”→“高级”→“反向代理”;
  2. 点击 “新增”,填写来源(域名、端口 443)和目标(群晖本地 IP、端口 13001): 
    image-20251113004508066

     

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

 

image-20251113004551420

 

这样就可以通过域名访问 Uptime-kumaf 服务了。

七、腾讯云 EdgeOne 配置

我把 Kuma 部署在内网群晖里,没有公网 IPv4,所以用腾讯云 EdgeOne 实现 IPv6 转 IPv4,让纯 IPv4 环境也能访问,步骤如下:

  1. IPv6 域名解析:用 DDNS-go 工具,将域名(如 kuma.example.com)解析到群晖的本地 IPv6 地址。
  2. EdgeOne 配置:在腾讯云 EdgeOne 控制台,添加站点并选择 “开启 IPv6 访问”,将加速域名指向刚才的 IPv6 域名;
  3. 验证访问:通过 EdgeOne 分配的加速域名(如 uptime.example.com),纯 IPv4 网络也能访问内网的 Kuma 服务了。

 

image-20251113001344020

 

八、小结

作为用了 Uptime Robot 免费版 2 年的老用户,最近用上了 Uptime kuma,部署轻量易上手,监控数据实时性和通知可靠性都经得起考验。

如果你有多个网站、服务器或 API 服务,花 10 分钟部署 Uptime Kuma,就能彻底告别 “被动发现故障” 的尴尬。

参考

上一篇 yituma
柳沐风

柳沐风管理员

这个人很懒,什么都没有留下。

本月创作热力图

2026年4月
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
加载中...
目录