当前位置: 首页 > news >正文

从零部署自维护版 Uptime Kuma:Node.js + PM2 + Nginx 全链路实战指南

从零部署自维护版 Uptime Kuma:Node.js + PM2 + Nginx 全链路实战指南请添加图片描述

1. 引言:为什么选择“非 Docker”部署?

Uptime Kuma 是一款开源、美观、功能强大的站点监控工具,广受开发者喜爱。官方推荐使用 Docker 部署,简单快捷。但如果你:

  • 对源码进行了深度定制(如新增通知渠道、修改 UI)
  • 需要精细控制运行环境
  • 所在环境禁止使用容器技术

那么,纯 Node.js + PM2 + Nginx 的部署方式就是你的最佳选择。本文将手把手带你完成从环境搭建到上线运行的全过程,并重点解决 Node.js 版本混乱、Nginx 反向代理、数据安全 三大痛点。


2. 环境准备:Ubuntu 20.04 系统初始化

2.1 创建专用运行用户(安全第一)

为避免以 root 身份运行应用,我们创建一个无登录权限的系统用户:

sudo useradd -r -s /bin/false kuma

✅ 该用户仅用于运行服务,无法登录,极大提升安全性。

2.2 选择合理的部署目录

根据 Linux 文件系统标准(FHS),第三方应用应部署在 /opt 目录下

sudo mkdir -p /opt/uptime-kuma
sudo chown -R kuma:kuma /opt/uptime-kuma

📁 最终结构:

/opt/uptime-kuma/
├── dist/          # 前端静态资源
├── server/        # 后端 Node.js 代码
└── package.json

3. Node.js 环境搭建:告别 v10,拥抱 v18+

许多用户在 Ubuntu 20.04 上执行官方安装脚本后,仍发现 node -v 显示 v10.x。这是因为系统仓库默认包含旧版 Node.js,且路径优先级混乱。

3.1 为什么 Nodesource 脚本可能失效?

  • 网络问题导致脚本下载失败(返回 HTML 而非 shell 脚本)
  • 旧版 Node.js 已通过 apt 安装,新版本未覆盖 PATH
  • 国内访问 Nodesource 官方源缓慢或被拦截

3.2 推荐方案:使用 n —— 轻量级 Node.js 版本管理器

n 不依赖 npm,安装简单,可无缝切换版本,特别适合生产环境

3.2.1 卸载旧版 Node.js(如有)
sudo apt remove --purge nodejs npm
sudo apt autoremove
3.2.2 安装 n 最新版的 Node.js v22.21.0
# 安装 n(自动配置 PATH)
curl -L https://git.io/n-install | bash -s -- -y# 重新加载 shell 配置
source ~/.bashrc# 验证
node -v  # 应输出 v18.x.x
npm -v

✅ 输出示例:

$ node -v
v22.21.0

请添加图片描述


4. 项目部署:前后端分离部署策略

4.1 上传代码到服务器

将本地调试完成的 uptime-kuma-master 目录上传至 /opt/uptime-kuma

# 本地执行(假设服务器 IP 为 1.2.3.4)
scp -r ./uptime-kuma-master/* kuma@1.2.3.4:/opt/uptime-kuma/

📦 只需上传以下内容

  • server/(后端核心)
  • package.jsonpackage-lock.json
  • dist/(前端构建产物,若未构建则需在服务器执行 npm run build

4.2 安装生产依赖

切换到项目目录,安装仅生产依赖

cd /opt/uptime-kuma
npm ci --production

--production 参数跳过 devDependencies(如 webpack、babel),节省 70%+ 磁盘空间。


5. 后端服务守护:PM2 进程管理

5.1 安装 PM2

npm install -g pm2

请添加图片描述

5.2 以专用用户启动服务

# 切换到 kuma 用户并启动
sudo -u kuma -H pm2 start /opt/uptime-kuma/server/server.js --name uptime-kuma# 或者以前用户直接启动
pm2 start /opt/uptime-kuma/server/server.js --name uptime-kuma

请添加图片描述

🔄 常用命令

  • pm2 logs uptime-kuma:查看实时日志
  • pm2 restart uptime-kuma:重启服务
  • pm2 list:查看运行状态

6. Nginx 反向代理:前端 + 后端一体化访问

Uptime Kuma 前端是 SPA(单页应用),后端提供 API 和 WebSocket。我们需要 Nginx 同时处理静态文件和动态代理。

6.1 创建 Nginx 配置文件

sudo nano /etc/nginx/sites-available/uptime-kuma

粘贴以下内容:

server {listen 80;server_name _;  # 匹配任意 IP 或域名# 前端静态资源目录root /opt/uptime-kuma/dist;index index.html;# SPA 路由支持location / {try_files $uri $uri/ @proxy;}# 代理动态请求到后端location @proxy {proxy_pass http://127.0.0.1:3001;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";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;proxy_cache_bypass $http_upgrade;proxy_read_timeout 86400;  # 支持长连接}# 安全:禁止访问隐藏文件location ~ /\. {deny all;}
}

6.2 启用配置并重载 Nginx

sudo nginx -t && sudo systemctl reload nginx

✅ 现在访问 http://你的服务器IP 即可看到 Uptime Kuma 界面!

请添加图片描述


7. 结语:安全、稳定、可维护

通过本文,你已成功在 Ubuntu 20.04 上部署了自维护版 Uptime Kuma:

  • ✅ 使用 n 安装纯净 Node.js 18 环境
  • ✅ 采用 /opt 规范化部署目录
  • ✅ 通过 PM2 实现进程守护与开机自启
  • ✅ 配置 Nginx 完美支持 SPA + WebSocket

🔜 下一步建议

  • 使用 Certbot 为站点启用 HTTPS
  • 配置 Fail2ban 防止暴力破解

🔗 GitHub:uptime-kuma

http://www.dtcms.com/a/511073.html

相关文章:

  • 哪个网站可以做纸箱沈阳市住房和城乡建设部网站
  • 腾讯送命题:手写多头注意力机制。。。
  • 信息传递视角下开源AI智能名片链动2+1模式S2B2C商城小程序对零售企业的赋能研究
  • AWS IoT Core 自动化巡检工具开发与实战报告
  • 【开题答辩过程】以《重庆市社区养老服务小程序设计与实现》为例,不会开题答辩的可以进来看看
  • 思淘网站建设网站域名证书
  • Substance Designer的通道合并(Channel Packing)自动化工作流
  • 【数据分析】基于R语言的宏基因组微生物群落下游数据的统计分析与可视化教程
  • TDE透明加密技术原理深度解析与文件在线安全传输实践指南
  • AI协作天花板!CherryStudio让多模型协同像搭积木
  • flash网站开发用什么语言wordpress 静态文件大
  • 小游戏引擎架构设计案例分析
  • [特殊字符] PM2 入门实战:从 0 到线上托管 React SPA
  • 指定位置打开 jupyter notebook
  • 设计模式-单例模式:从原理到实战的三种经典实现
  • 深度解析JVM GC调优实践指南
  • 决策规划仿真平台搭建
  • 河北住房城乡建设厅官方网站wordpress改浏览数数据库
  • 正规的金融行业网站开发wordpress如何生成rss
  • 华为网路设备学习-34(BGP协议 九)BGP路由 选路规则二
  • AR巡检系统:工业非计划停机的终结者
  • ECharts地图数据压缩-ZigZag算法
  • 垃圾分类抠像拍照系统-垃圾分类AR互动游戏-体感漫画拍照一体机
  • 2024年ESWA SCI1区TOP,大规模移动用户移动边缘计算中多无人机部署与任务调度的联合优化方法,深度解析+性能实测
  • 磁悬浮轴承非线性控制的挑战与难点剖析
  • 【开题答辩过程】以《自由绘画师管理系统的设计与实现》为例,不会开题答辩的可以进来看看
  • Spring AI与DeepSeek实战:打造企业级智能体
  • MFE: React + Angular 混合demo
  • CR0 控制位解释
  • 半成品网站周村网站制作哪家好