Uptime Kuma 在 Linux 上最稳妥、最主流的安装方式是 Docker 部署,因其规避了 Node.js 版本兼容、npm 依赖冲突及进程守护等易错环节,官方镜像已预构建运行环境,开箱即用。

Uptime Kuma 在 Linux 上最稳妥、最主流的安装方式是 Docker 部署,不是源码编译或 Node.js 直接运行。原因很实际:它省去了 Node.js 版本兼容性问题(比如 Node.js 14+ 要求)、npm 依赖冲突、进程守护配置等易出错环节。官方镜像 louislam/uptime-kuma 已预构建好运行时环境,开箱即用。
为什么别用 npm install -g uptime-kuma?
这个命令根本不存在 —— uptime-kuma 不是一个可全局安装的 npm 包。有人误以为它是 CLI 工具,实际上它是个 Web 应用,必须以服务形式运行。常见错误包括:
-
npm ERR! code E404:因为npm view uptime-kuma查不到该包 - 手动
git clone后npm install失败:常因node-gyp编译失败、sharp二进制下载超时、或系统缺少build-essential/python3 - 启动后访问白屏或 500:多数是
/app/data目录权限不对,或PORT被占用但没报错
docker-compose.yml 最小可用配置怎么写?
核心就三件事:挂载数据目录、映射端口、指定镜像。以下是最简且生产可用的 docker-compose.yml 内容(路径和端口可按需改):
version: '3.3'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- 5702:3001
volumes:
- ./data:/app/data注意点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
restart: unless-stopped必加,否则宿主机重启后服务不自动拉起 -
./data必须是**绝对路径**,相对路径在某些 Docker 版本下会静默失效 - 端口映射左边(
5702)是宿主机端口,右边(3001)是容器内固定端口,不能改 - 别加
environment去设NODE_ENV=production—— 官方镜像已内置优化,加了反而可能触发非预期日志行为
启动后打不开 Web 界面?先查这三处
90% 的“启动成功但无法访问”问题都卡在这几个地方:
- 防火墙没放行端口:
sudo firewall-cmd --permanent --add-port=5702/tcp && sudo firewall-cmd --reload(CentOS/RHEL);Ubuntu 用sudo ufw allow 5702 - Docker 绑定的是
127.0.0.1:3001,但uptime-kuma容器默认监听0.0.0.0:3001—— 所以只要端口映射正确,本地curl http://localhost:5702应该返回 HTML;如果返回空或连接拒绝,说明容器根本没起来:docker ps -a | grep uptime-kuma - 第一次访问时浏览器卡在加载页:不是服务问题,是前端资源(JS/CSS)被国内网络拦截导致加载超时,刷新几次或换 Chrome + 关闭广告屏蔽插件即可,不影响后续使用
HTTPS 和反向代理怎么配才不翻车?
直接在 uptime-kuma 容器里配 TLS 是反模式。它不原生支持证书热加载,且私钥放容器里也不安全。正确做法是用 Nginx 做反代:
- 把
uptime-kuma容器端口只暴露给本地(如127.0.0.1:3001),不映射到宿主机公网端口 - Nginx 配置中用
proxy_pass http://127.0.0.1:3001;,并启用proxy_set_header X-Forwarded-Proto $scheme;,否则登录页会反复跳转 - 务必在 Nginx server 块里加
underscores_in_headers on;,否则带下划线的自定义 Header(如某些通知 Webhook 用的)会被丢弃 - 别在 Nginx 里加
proxy_buffering off;—— 这会导致 WebSocket 断连,Ping 图表实时更新失效
复杂点在于 HTTPS 重定向和 WebSocket 升级头,这两处配置漏掉一个,状态页就变成“半残”:能看不能交互,或者图表不动。

















