用 Docker 部署 Uptime Kuma:免费 VPS 监控面板,5 分钟搞定

概述

服务器挂了没人知道,是最头疼的事。Uptime Kuma 是一款开源的监控工具,界面好看,功能实用。它能帮你盯着网站能不能打开、端口通不通、SSL 证书什么时候过期。最关键的是——它免费。

下面教你用 Docker 在 VPS 上 5 分钟部署好。

准备工作

你需要这些东西:

  • 一台 VPS(推荐 Ubuntu 22.04,内存至少 512MB)
  • 已经装好 Docker(没装的话,文末有快速安装命令)
  • 一个域名(可选,用于通过 HTTPS 访问)
  • 你打算监控的目标(你的网站、API、DNS 等)

步骤

第一步:创建数据目录

先建好持久化存储文件夹,Docker 重启后数据不会丢。

mkdir -p ~/uptime-kuma/data

第二步:用 Docker 启动 Uptime Kuma

一行命令搞定:

docker run -d \
  --name uptime-kuma \
  --restart unless-stopped \
  -p 3001:3001 \
  -v ~/uptime-kuma/data:/app/data \
  louislam/uptime-kuma:1

参数说明:

  • -p 3001:3001 把容器的 3001 端口映射到本机。想改端口就改第一个数字,比如 8080:3001
  • -v ~/uptime-kuma/data:/app/data 挂载数据目录,监控配置和告警记录都存在这里
  • --restart unless-stopped 容器挂了会自动重启

第三步:访问面板

打开浏览器,输入 http://你的VPS_IP:3001,就能看到 Uptime Kuma 的界面了。

首次进入会让你设置管理员账号和密码,填好就行。

第四步:添加监控目标

进入面板后,点击「添加监控」:

  • 监控类型选 HTTP(s) 用于检测网站
  • URL 填你的网站地址,比如 https://navbox.com.cn
  • 间隔 默认 60 秒就行
  • 其他选项保持默认,点「创建」

你也可以添加 Ping 监控(检测服务器是否在线)、TCP 端口监控(检测端口是否开放)、DNS 监控等。

第五步:配置通知方式(可选)

告警通知很重要,监控到异常能第一时间提醒你。

在面板左侧点「通知服务」→「添加新通知」:

Telegram 通知:

  1. 在 Telegram 里找 @BotFather,发送 /newbot 创建机器人
  2. 拿到 Bot Token
  3. 再找你的 Bot,发送任意消息
  4. 访问 https://api.telegram.org/bot<你的Token>/getUpdates,找到 chat.id
  5. 在 Uptime Kuma 里填入 Bot Token 和 Chat ID

微信通知(通过 Server 酱):

  1. 访问 sct.ftqq.com 注册并获取 SendKey
  2. 通知类型选「自定义 Webhook」
  3. 请求 URL 填:https://sctapi.ftqq.com/<你的SendKey>.send
  4. 请求体填:{"text": "Uptime Kuma告警", "descrip": "{{monitor.name}} - {{eventType}} - {{monitor.url}}"}

邮件通知(SMTP):

  1. 填 SMTP 服务器地址(如 smtp.qq.com)
  2. 填发件邮箱和密码(QQ 邮箱需要用授权码)
  3. 填收件人地址

第六步:配置反向代理(推荐)

直接用 IP + 端口访问不安全。建议加上 Nginx 或 Caddy 做反向代理,走 HTTPS。

如果你用的是 Caddy(前面装过可以跳过):

cat >> /etc/caddy/Caddyfile <<EOF
kuma.navbox.com.cn {
    reverse_proxy localhost:3001
}
EOF
systemctl reload caddy

如果你的 Nginx 版本支持 HTTP/3,可以这样配:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name kuma.navbox.com.cn;

    ssl_certificate /etc/ssl/certs/kuma.navbox.com.cn/fullchain.pem;
    ssl_certificate_key /etc/ssl/private/kuma.navbox.com.cn/key.pem;

    location / {
        proxy_pass http://localhost: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;
    }
}

重载配置:

nginx -t && systemctl reload nginx

第七步:设置开机自启

如果之前用了 --restart unless-stopped,重启服务器后容器会自动起来。确认一下:

docker ps | grep uptime-kuma

有输出就说明正常运行。

验证

部署完成后,做这几步检查:

  1. 浏览器访问 打开 https://kuma.navbox.com.cn(或用 IP:端口),面板能正常加载
  2. 监控生效 在面板上看到你添加的目标显示「Up」,绿色状态
  3. 手动触发告警 临时关掉你监控的网站(或改个错误的 URL),等监控间隔到了之后,检查是否收到 Telegram/微信/邮件告警
  4. 容器状态 执行 docker ps | grep uptime-kuma,确认容器在运行

如果一切正常,恭喜!你的 VPS 监控体系搭建完成了。

常见问题

Q: 忘记管理员密码怎么办?

目前版本不支持重置密码。解决方法:删掉容器,重新跑 docker run,然后重新配置所有监控。建议密码记到密码管理器里。

Q: 监控间隔最短能设多少?

官方推荐 60 秒。可以手动改到 10 秒,但太频繁会消耗资源,也可能被目标网站当作攻击。

Q: Docker 怎么安装?

如果 VPS 上没装 Docker,跑这条命令:

curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

Q: 容器启动失败,怎么查看日志?

docker logs uptime-kuma

常见错误是 3001 端口被占用。换端口就行:-p 3002:3001

Q: 能监控内网设备吗?

可以。在容器里监控内网 IP 地址就行。不过建议 VPS 和网络在同一个 VPC 内,不然内网 IP 外部访问不到。

Q: 数据会丢吗?

不会。数据存在 ~/uptime-kuma/data 目录,即使删掉容器重新建,数据都在。记得定期备份这个目录。


Uptime Kuma 就是这样,一个轻量、好看、够用的监控工具。不需要花一分钱,一个 Docker 命令就跑起来了。

你还有哪些服务需要监控的?在评论区聊聊。

这篇文章对你有帮助吗?