自托管网站与服务可用性监控,Docker 或 PM2 部署并推送告警通知
方案简介
Uptime Kuma 是一个易于使用的自托管监控工具,用于监控网站与服务的在线状态。它支持对 HTTP(s)、TCP、关键字、JSON 查询、WebSocket、Ping、DNS 记录、Push、Steam 游戏服务器、Docker 容器等多种目标的可用性监控,并通过 Telegram、Discord、Slack、Email 等 90+ 通知服务推送告警。
部署上提供两条路线:推荐使用 Docker / Docker Compose 一键容器化部署;也可以在主流 Linux 或 Windows 上以非 Docker 方式运行,此时需要 Node.js >= 20.4、Git 以及 PM2(用于后台常驻运行)。该方案适合希望将监控数据掌握在自己手中的个人开发者与中小团队,替代 Uptime Robot 等托管服务。
亮点与能力
- 监控 HTTP(s) / TCP / HTTP(s) 关键字 / HTTP(s) JSON 查询 / WebSocket / Ping / DNS 记录 / Push / Steam 游戏服务器 / Docker 容器的在线状态
- 精美、响应式、快速的 UI/UX
- 通过 Telegram、Discord、Gotify、Slack、Pushover、Email (SMTP) 等 90+ 通知服务发送通知
- 20 秒检测间隔
- 多语言支持
- 多状态页
- 将状态页映射到特定域名
- Ping 图表
- 证书信息
- 代理支持
- 2FA(双因素认证)支持
组成与分工
- Uptime Kuma:核心监控应用,提供监控项管理、状态页、告警通知与 Web UI
- Docker / Docker Compose:容器化部署方式,通过 compose.yaml 编排并挂载数据卷
- Node.js (>= 20.4):非 Docker 方式下运行服务端的运行时
- PM2:让 Uptime Kuma 在后台常驻运行,配合 pm2-logrotate 管理日志、pm2 startup 实现开机自启
- Git:非 Docker 方式下克隆源码仓库
- Telegram / Discord / Slack / SMTP 等:通知渠道,接收告警消息
前置要求
非 Docker 安装要求:
- 平台:
- ✅ 主流 Linux 发行版,如 Debian、Ubuntu、Fedora、ArchLinux 等
- ✅ Windows 10 (x64)、Windows Server 2012 R2 (x64) 或更高
- ❌ FreeBSD / OpenBSD / NetBSD
- ❌ Replit / Heroku
- Node.js >= 20.4
- Git
- pm2 - 用于后台运行
Docker 方式只需安装 Docker / Docker Compose。
实施步骤
1. Docker Compose 方式(推荐)
bash
mkdir uptime-kuma
cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yaml
docker compose up -d
启动后 Uptime Kuma 监听所有网络接口,访问 http://localhost:3001 或 http://your-ip:3001 即可使用。
2. Docker 命令方式
bash
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:2
如需仅暴露给本机:
bash
docker run ... -p 127.0.0.1:3001:3001 ...
3. 非 Docker 方式
bash
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
Option 1. Try it
node server/server.js
(Recommended) Option 2. Run in the background using PM2
Install PM2 if you don't have it:
npm install pm2 -g && pm2 install pm2-logrotate
Start Server
pm2 start server/server.js --name uptime-kuma
4. 高级安装
如需更多选项或通过反向代理访问,请阅读官方安装 Wiki:
使用与配置要点
- 启动成功后访问 http://localhost:3001 或 http://your-ip:3001
- 在 Web UI 中添加监控项(HTTP(s)、TCP、Ping、Docker 容器等),最短可设置 20 秒间隔
- 配置通知渠道(Telegram、Discord、Slack、Email 等 90+ 服务)接收告警
- 创建多个状态页并映射到特定域名对外展示
- PM2 方式下常用命令:
bash
If you want to see the current console output
pm2 monit
If you want to add it to startup
pm2 startup && pm2 save
- 可先在演示服务器体验:https://demo.kuma.pet/start-demo(临时演示,10 分钟后数据删除)
注意事项与常见问题
- NFS 不支持:NFS(网络文件系统)等文件系统不受支持,请将数据映射到本地目录或卷
- 端口暴露:默认监听所有网络接口,若只想本机访问请绑定 127.0.0.1
- 平台限制:不支持 FreeBSD/OpenBSD/NetBSD,也不支持 Replit/Heroku
- 提问渠道:一般或技术问题请勿发邮件,建议使用 GitHub Issues 或 subreddit (r/UptimeKuma)
- 升级:请阅读官方 How to Update Wiki
优缺点
- ✓ 20秒超短检测间隔
- ✓ 90+通知服务集成
- ✕ 不支持NFS文件系统
- ✕ 不支持BSD及Replit/Heroku
出处
本方案挖掘自开源项目 louislam/uptime-kuma,方案内容与实施命令均来自其 README 原文。
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。