Uptime Kuma 2025最新Docker部署教程,轻量高效监控网站连通性

一、前言

作为一名业余时间维护个人网站博主,有时候遇到网站宕机几小时才发现,访客流失不说,搜索引擎收录还可能受影响。之前试过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,就能彻底告别“被动发现故障”的尴尬。

参考

  1. Uptime Kuma的部署与简单使用-腾讯云开发者社区-腾讯云
  2. Docker系列 Uptime Kuma监测网站连通性 - Bensz
  3. Reverse Proxy · louislam/uptime-kuma Wiki
  4. Home · louislam/uptime-kuma Wiki
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇