📅 最后更新于 2026-06-23
用 VPS 搭一个网站监控
Uptime Kuma 是轻量的开源网站监控工具,用 Docker 部署只需 512MB 内存。与其付费买 UptimeRobot 或 Better Uptime,不如用一台便宜 VPS 自己跑。
什么是 Uptime Kuma?
Uptime Kuma 是一个开源的网站和服务监控工具,可以:
- 监控 HTTP/HTTPS 网站是否在线、返回状态码
- 监控 TCP 端口是否可达(数据库、SSH、SMTP 等)
- 监控 DNS 记录是否正常
- 监控 Docker 容器状态
- 通过 Telegram、邮件、钉钉、飞书、企业微信、Discord 等 30+ 渠道发告警通知
- 提供状态页面,公开展示服务可用性
部署后完全替代 UptimeRobot(免费版限制 50 个监控项),所有数据都在自己的 VPS 上。
需要什么配置?
最低
- 1 vCPU
- 512 MB 内存
- 10 GB SSD
- 适合:监控 20 个以内的网站或服务
- 月费约 $2-3
推荐
- 1 vCPU
- 1 GB 内存
- 20 GB SSD
- 适合:50-100 个监控项,含状态页面
- 月费约 $3-5
有余量
- 1-2 vCPU
- 2 GB 内存
- 30 GB SSD
- 适合:100+ 监控项 + 同时跑其他服务
- 月费约 $5-10
Uptime Kuma 是资源占用最小的自托管工具之一。用 Node.js 写的单进程应用,内存占用通常在 100-300 MB,加上 SQLite 数据库,512 MB VPS 就能跑得很稳。
Docker Compose 部署(3 分钟)
1. 安装 Docker
apt update && apt upgrade -y curl -fsSL https://get.docker.com | sh 2. 创建 docker-compose.yml
mkdir -p /opt/uptime-kuma && cd /opt/uptime-kuma 复制以下内容到 docker-compose.yml:
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:latest
container_name: uptime-kuma
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- kuma_data:/app/data
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
volumes:
kuma_data: 3. 启动
docker compose up -d 访问 http://你的服务器IP:3001,创建管理员账号,然后就能添加监控项了。
4. 配置告警通知(可选但推荐)
进入「设置 → 通知」,添加至少一个通知渠道。Telegram 通知最简单:
- 在 Telegram 找 @BotFather 创建一个 Bot,拿到 Token
- 把 Bot 拉进一个群或频道
- 在 Uptime Kuma 的通知设置中选 Telegram,填入 Token 和 Chat ID
配置完成后,任何一个监控项出问题,都会即时推送到 Telegram。
监控什么?
Uptime Kuma 最常见的监控场景:
- 网站是否在线:监控你的主站、博客、API 端点,返回 200 才算正常
- SSL 证书到期时间:提前 30 天提醒续期,避免证书过期导致网站不可访问
- 数据库端口:监控 MySQL/PostgreSQL/Redis 端口是否可连接
- Docker 容器:如果通过 Docker Socket 连接,可以直接监控容器状态
- DNS 记录:检查域名解析是否正常,防止 DNS 被篡改或过期
用哪家 VPS?
关键原则:监控 VPS 应该和被监控的服务不在同一台机器上。否则被监控的 VPS 宕机,监控也跟着挂了,起不到告警作用。
| 商家 | 推荐配置 | 月费 | 适合场景 |
|---|---|---|---|
| RackNerd | 1GB KVM 活动款 | $10-15/年 | 纯监控用途,不需要中国优化 |
| InterServer | 1 Slice (2GB) | $3/月 | 监控 + 跑其他自托管服务 |
| Hetzner | CX22 (2GB) | €3.79/月 | 欧洲方向,IP 稳定 |
| Vultr | 1GB Cloud Compute | $6/月 | 全球多机房可选,按小时测试 |
选择建议
- 不需要 CN2 GIA:监控服务到被监控目标的延迟要求很低,普通线路完全够用。
- 选和主要服务不同的机房:如果你的网站在洛杉矶,监控 VPS 选纽约或达拉斯,避免同一个数据中心同时出问题。
- 512 MB 内存真的够:Uptime Kuma + SQLite 内存占用约 200 MB,最小规格的 VPS 就能跑。
常见问题
常见问题
Uptime Kuma 和 UptimeRobot 有什么区别?
功能相近,核心区别:Uptime Kuma 免费且不限监控数量,数据在你自己 VPS 上;UptimeRobot 免费版限 50 个监控项、5 分钟检测间隔。自托管的代价是 VPS 月费($3-5),但换来了无限制监控和完全数据控制。
监控 VPS 可以和网站放在同一台 VPS 上吗?
技术上可以(512MB 内存足够),但不推荐。如果这台 VPS 宕机了,监控也跟着失效。监控应该在另一台独立的 VPS 上,最好是不同机房、不同商家。
1GB 流量够吗?
完全够。Uptime Kuma 每次 HTTP 检测只发一个 HEAD/GET 请求,几十字节的流量。即使每分钟检测 50 个网站,月流量也在 2-5 GB 以内。任何 VPS 的流量包都绰绰有余。
怎么备份 Uptime Kuma 的数据?
最简单的是备份 Docker 数据卷。Uptime Kuma 用 SQLite 存储所有数据,停掉容器后把 volume 目录打包就行。也可以设置定时任务用 rsync 同步到另一台 VPS。
Uptime Kuma 支持多用户吗?
支持。可以在设置中创建多个用户账号,给团队成员分别分配监控项权限。还支持 2FA(双因素认证)。