Uptime Kuma 部署教程:5 分钟搭好网站监控与状态页
Uptime Kuma 是一个自托管(self-hosted)的网络监控工具,作者最初只是想做一款对标 UptimeRobot、但能跑在自己服务器上的替代品。它支持 HTTP(s)、TCP、Ping、DNS、关键字、JSON Query、WebSocket、Docker 容器、Steam 游戏服务器等多种监控类型,内置 90 多种通知渠道,还自带漂亮的状态页(Status Page)。整个项目是开源的,单个 Docker 镜像就能跑起来,对个人开发者和小团队非常友好。
下面这篇教程会从零开始,带你用 Docker 把 Uptime Kuma 部署起来,配置监控、通知、状态页,最后再加一层 Nginx 反向代理和 HTTPS。
准备工作
部署 Uptime Kuma 本身没有特别高的硬件门槛:
- 一台 Linux 服务器(Ubuntu / Debian / CentOS 等主流发行版都可以)
- 已安装 Docker 与 Docker Compose(如果还没装,可以参考官方文档一键安装)
- 至少 256M 可用内存,1 核 CPU 即可
- 一个可用的端口(默认 3001)
如果使用云厂商的安全组或系统防火墙,记得提前放行 3001 端口(后面接 Nginx 反代后就可以只开 80/443)。
> [!WARNING]
> 官方 README 明确提示:NFS 等网络文件系统不支持,数据卷必须映射到本地目录或本地 volume,否则可能因为文件锁问题导致数据异常。

用 Docker 一键部署
最简单的部署方式就是单容器跑起来。新建一个目录,进入目录后执行:
mkdir -p /opt/uptime-kuma && cd /opt/uptime-kuma
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2
这条命令做了几件事:
-d:后台运行--restart=always:开机自启,崩溃自动重启-p 3001:3001:把宿主机的 3001 端口映射到容器内-v uptime-kuma:/app/data:把数据持久化到一个名为uptime-kuma的 Docker volume--name uptime-kuma:给容器起个名字,后面操作方便
如果只想让本机访问,不暴露给外网,可以把端口映射改成:
-p 127.0.0.1:3001:3001
部署完成后,用浏览器打开 http://服务器IP:3001,如果看到登录界面,就说明跑起来了。
如果更喜欢 Docker Compose 的写法,可以执行:
mkdir uptime-kuma && cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
docker compose up -d
两种方式二选一即可,效果一样。
首次进入:设置管理员账号
第一次访问 3001 端口时,Uptime Kuma 会让你创建一个管理员账号:
- 设置一个用户名(默认就是
admin) - 设置一个强密码(务必用密码管理器生成一个)
- 设置完成后会自动登录,进入主仪表盘
进去之后建议立刻做两件事:
- 在「Settings」里把语言切换成中文(如果官方提供了中文包的话;项目内置多语言支持,但具体语言列表以官网为准)
- 开启 2FA 两步验证,降低被爆破的风险
添加第一个监控项
点击左上角的「+ Add New Monitor」,进入添加监控的页面。Uptime Kuma 的监控类型非常丰富,常用的几个:
| 类型 | 用途 |
|---|---|
| HTTP(s) | 监控网站、API 接口的可用性 |
| TCP | 监控数据库、Redis、自定义服务的端口 |
| Ping | 监控主机是否在线 |
| DNS Record | 监控域名解析是否正确 |
| HTTP(s) Keyword | 监控页面是否包含某个关键词 |
| HTTP(s) Json Query | 监控接口返回的 JSON 中某个字段 |
| Docker Container | 监控同一台机器上的其他容器 |
以监控一个网站为例,填写:
- Monitor Type:HTTP(s)
- Friendly Name:随便起,例如「我的博客」
- URL:填你要监控的完整 URL,例如
https://example.com - Heartbeat Interval:检测间隔,默认 20 秒一次
- Retries when failed:失败重试次数,避免误报
点击「Save」保存,仪表盘上立刻就会出现这个监控项,过几秒就能看到绿色的「Up」状态。

配置通知渠道
光有监控还不够,关键是要在出问题的时候及时收到告警。Uptime Kuma 支持 90 多种通知方式,国内常用的几个都可以在「Settings → Notifications」里添加。
推荐至少配置一个即时通讯类(Telegram / 钉钉 / Slack)+ 一个邮件类(SMTP)作为兜底。下面以 Telegram 为例:
- 在 Telegram 里找
@BotFather,创建一个 Bot,拿到 Token - 给 Bot 发一条消息,然后访问
https://api.telegram.org/bot/getUpdates拿到你的chat_id - 在 Uptime Kuma 的通知页面,选择 Telegram Bot,填入 Token 和 chat_id
- 点「Test」,如果 Telegram 收到测试消息就说明通了
钉钉、企业微信、飞书、Bark、Pushover、Gotify、Webhook 等等也都有现成的模板,按提示填字段即可。
创建公开状态页
Uptime Kuma 内置了一个对外公开的状态页功能,可以分享给你的用户、团队成员。
- 进入「Status Pages」页面
- 点「New Status Page」
- 填写标题、描述,选择一个路径(slug),例如
status - 在「Monitors」里勾选要展示在这个状态页上的监控项
- 可以为每个监控项设置一个对外显示的名称(避免暴露内部命名)
- 保存后访问
http://服务器IP:3001/status/就能看到公开状态页
状态页支持浅色/深色主题切换、移动端适配,还可以把不同的状态页映射到不同的域名(需要配合反代)。

反向代理 + HTTPS(Nginx)
直接把 3001 端口暴露在外网既不优雅也不安全,更常见的做法是用 Nginx 做反代并启用 HTTPS。Uptime Kuma 的实时状态是通过 WebSocket 推送的,所以 Nginx 配置里必须加上 WebSocket 升级相关的 header,否则实时刷新会失效。
下面是一份可以直接参考的配置(请把 status.example.com 换成你自己的域名):
server {
server_name status.example.com;
listen 80;
location / {
return 301 https://$host$request_uri;
}
}
server {
server_name status.example.com;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3001;
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;
# 关键:WebSocket 升级头
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
SSL 证书推荐用 Let’s Encrypt + certbot --nginx 一键签发,自动续期。
升级与数据备份
Uptime Kuma 的所有数据(监控配置、历史记录、通知配置、用户账号等)都存在 /app/data 这个目录里,所以备份只需要备份这个 volume。
升级前的标准流程:
- 停掉旧容器:
docker stop uptime-kuma - 备份数据卷:
docker run --rm -v uptime-kuma:/app/data -v $(pwd):/backup alpine tar czf /backup/uptime-kuma-backup.tar.gz -C /app/data . - 拉取新镜像并启动:
docker pull louislam/uptime-kuma:2 docker rm uptime-kuma docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2
数据卷名保持不变,配置和历史曲线都会完整保留。具体版本号和升级注意事项以官方仓库的 Release Notes 为准。
小结
到这里,一个生产可用的 Uptime Kuma 就部署完成了:Docker 起容器 → 配置监控和通知 → 创建公开状态页 → Nginx 反代 + HTTPS → 定期备份。整个流程控制在十几分钟以内,资源占用非常低,却能解决 90% 个人项目和小团队的监控需求。
如果想进一步了解 Uptime Kuma 的功能细节、优缺点对比、是否适合自己的场景,可以阅读这篇更完整的 Uptime Kuma 评测。

评论(0)