最可靠省心的部署方式是docker:需先确认docker服务活跃、磁盘空间≥2gb、挂载目录权限为755或777;启动命令必须含--restart=always、-v绝对路径持久化、-p端口映射及--name固定容器名;首次访问后须配置base url、ssl证书路径和至少一种通知方式。

Uptime Kuma 在 Linux 上最可靠、最省心的部署方式就是 Docker,不是 Node.js 源码安装,也不是 1Panel 一类的面板封装 —— 后两者容易因环境差异导致 npm install 失败、build 卡死或权限异常,尤其在 CentOS 7.6、Ubuntu 20.04 等老系统上。
Docker 部署前必须确认的三件事
别急着敲 docker run,先检查这三项,否则容器起来也连不上、打不开、存不了数据:
-
systemctl is-active docker必须返回active,CentOS 7 上常见inactive (dead),得补上sudo systemctl start docker && sudo systemctl enable docker -
df -h /var/lib/docker或你自定义的data-root路径(如/data/docker)剩余空间不能少于 2GB,Uptime Kuma 自身虽轻,但日志+历史图表+证书缓存会随时间增长 -
ls -ld /data/uptime-kuma(你准备挂载的宿主机目录)权限要是777或至少755且属主为root;Docker 容器内进程以非 root 用户(UID 1001)运行,挂载目录权限太严会导致mkdir: cannot create directory '/app/data'错误
启动命令里这几个参数不能省
官方文档常简化成一行,但生产环境必须显式指定关键参数,否则重启后配置丢失、端口冲突、SSL 失效都是高频问题:
-
-p 3001:3001是默认端口,若服务器已有服务占用了 3001,必须改左边(如-p 8080:3001),不能只改右边 -
-v /data/uptime-kuma:/app/data是持久化核心,路径必须绝对完整;用相对路径(如./data)会导致容器重启后目录变空 -
--restart=always必须加,否则宿主机 reboot 后监控就停了;用unless-stopped会保留手动docker stop的状态,不适合监控这种“永远要跑”的服务 -
--name uptime-kuma建议固定,方便后续docker logs uptime-kuma或docker exec -it uptime-kuma sh排查
完整命令示例(适配多数环境):
docker run -d \ --restart=always \ --name uptime-kuma \ -p 3001:3001 \ -v /data/uptime-kuma:/app/data \ -u root \ ghcr.io/louislam/uptime-kuma:latest
首次访问后立即要做的三步配置
浏览器打开 http://你的IP:3001 后,注册管理员账号只是第一步。真正影响后续可用性的操作在这几步:
- 进
Settings → General把Base URL设为你的实际访问地址(如https://status.example.com),否则邮件通知里的链接、状态页跳转、Cloudflare Tunnel 穿透都会出错 - 进
Settings → SSL如果你用 Nginx 反代并已配好 HTTPS,这里勾选Enable SSL并填入证书路径(/etc/letsencrypt/live/example.com/fullchain.pem),否则 Uptime Kuma 内置的 HTTP 服务无法直接提供 HTTPS - 进
Settings → Notifications至少配一个Email或Webhook,测试发送成功后再添加监控项;没配通知的监控等于“只看不喊”,故障时毫无意义
CentOS 7 和 Ubuntu 22.04 的典型坑
这两个系统占比高,但细节差异大,容易栽在同一行命令上:
- CentOS 7 默认
firewalld开着,sudo firewall-cmd --permanent --add-port=3001/tcp和sudo firewall-cmd --reload必做,否则外网打不开 - Ubuntu 22.04 默认用
systemd-resolved,容器内 DNS 解析可能失败,启动时加--dns 8.8.8.8参数可绕过(docker run --dns 8.8.8.8 ...) - 二者都可能出现
docker: command not found,不是没装 Docker,而是/usr/bin不在普通用户$PATH里,临时解决:用sudo /usr/bin/docker run ...,长期解决:把/usr/bin加进/etc/environment
挂载目录权限、DNS 解析、防火墙放行 —— 这三个点漏掉任何一个,Uptime Kuma 就只能本地 curl 通,对外不可见,或者能访问但存不下监控记录。











