Node-Red 内网离线部署完整指南
一、内网服务器安装 Node.js
1. 下载 Node.js 二进制包
在有网络的电脑上,访问 Node.js 官网下载 linux-x64 版本的 .tar.xz 文件(如 node-v20.20.2-linux-x64.tar.xz),拷贝到内网服务器。
2. 解压并配置
# 创建 nvm 目录结构
mkdir -p ~/.nvm/versions/node
cd ~/.nvm/versions/node
# 解压(根据实际文件名调整)
tar xf /path/to/node-v20.20.2-linux-x64.tar.xz
# 创建软链接(方便引用)
ln -s ~/.nvm/versions/node/node-v20.20.2-linux-x64 ~/.nvm/versions/node/v20.20.2
# 创建全局命令软链接
sudo ln -s ~/.nvm/versions/node/v20.20.2/bin/node /usr/local/bin/node
sudo ln -s ~/.nvm/versions/node/v20.20.2/bin/npm /usr/local/bin/npm
sudo ln -s ~/.nvm/versions/node/v20.20.2/bin/npx /usr/local/bin/npx
3. 验证
node -v # 应输出 v20.20.2
npm -v # 应输出对应版本号
二、有网络的电脑上打包 Node-RED 离线包
以下操作我在有网络的 Ubuntu 22.04 电脑的WSL上执行。
1. 安装 Node.js 20.x
sudo apt update
sudo apt install -y ca-certificates curl gnupg
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
#切换到国内镜像源(加速下载)
npm config set registry https://registry.npmmirror.com
sudo apt install -y nodejs
2. 验证:
node -v
npm -v
3. 打包 Node-RED 及全部依赖
cd ~
rm -rf node-red-offline
mkdir node-red-offline
cd node-red-offline
# 初始化项目
npm init -y
# 安装 node-red(会下载所有依赖到 node_modules)
npm install node-red
# 打包整个目录(包含 node_modules)
cd ~
tar czf node-red-full.tar.gz node-red-offline
生成的 ~/node-red-full.tar.gz 就是完整的离线安装包。
三、内网服务器安装 Node-RED
1. 将 **node-red-full.tar.gz** 拷贝到内网服务器的 **/opt** 目录
2. 解压并配置
# 解压
cd /opt
tar xzf node-red-full.tar.gz
# 创建全局命令软链接
sudo ln -s /opt/node-red-offline/node_modules/.bin/node-red /usr/local/bin/node-red
# 设置环境变量
export NODE_PATH=/opt/node-red-offline/node_modules
echo 'export NODE_PATH=/opt/node-red-offline/node_modules' >> ~/.bashrc
source ~/.bashrc
3. 启动验证
node-red
看到 Server now running at http://127.0.0.1:1880/ 即部署成功,浏览器访问 http://<服务器IP>:1880 即可。
四、推荐:后台运行与开机自启
为避免终端关闭导致服务停止,建议配置 systemd 服务实现后台运行与开机自启:
1. 创建服务文件
sudo vi /etc/systemd/system/nodered.service
写入以下内容(请将 **User** 替换为你的实际用户名):
[Unit]
Description=Node-RED Server
After=network.target
[Service]
User=root
WorkingDirectory=/root
Environment="NODE_PATH=/opt/node-red-offline/node_modules"
Environment="PATH=/usr/local/bin:/root/.nvm/versions/node/v20.20.2/bin:$PATH"
ExecStart=/usr/local/bin/node-red
Restart=on-failure
[Install]
WantedBy=multi-user.target
2. 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable nodered.service
sudo systemctl start nodered.service
3. 查看服务状态
sudo systemctl status nodered.service
显示 active (running) 即表示正常运行。
五、不同系统的复用
**场景:**在openEuler24.04LTS操作系统环境,部署了node-v24.15.0-linux-x64.tar.xz,能够直接将node-v20.20.2-linux-x64.tar.xz下打包的"\node-red-full.tar.gz"和\nvm-v0.39.7.tar.gz,上传上去部署使用吗?
**解答:**不能直接启用,但是包可以复用。 核心原因在于 node-red-full.tar.gz 中的 node_modules 依赖包是基于 Node.js 20 编译的,与目标环境的 Node.js 24 存在二进制不兼容风险。
方案:在 openEuler 24.04LTS上重新编译依赖
1. 上传并解压 NVM和Node.js,按照第一章第2步。
2.上传并解压 node-red-full.tar.gz
cd /opt
tar xzf node-red-full.tar.gz
3.重新编译原生依赖(关键步骤)
cd /opt/node-red-offline
npm rebuild
该命令会根据当前 Node.js 24 环境重新编译所有原生扩展模块,确保二进制兼容。
4.按照第三章步骤执行部署验证node-red。然后第四章后台运行与开机自启。
六、踩坑记录
坑1:getaddrinfo ENOTFOUND registry.npmjs.org
● 原因:内网服务器无法访问外网,npm 无法连接官方源下载依赖。
● 解决:在有网络的电脑上用 npm install + tar 打包完整 node_modules,离线部署。
坑2:npm pack 不等于完整离线包
● 原因:npm pack node-red 只打包 Node-RED 自身的源码,不包含依赖。内网安装时仍会尝试联网下载依赖,导致卡住。
● 解决:改用 npm install node-red(会下载所有依赖到 node_modules),再用 tar 打包整个目录。
坑3:/usr/bin/env: ‘bash\r’: No such file or directory
● 原因:WSL 环境下 PATH 中混入了 Windows 的 Node.js 路径(如 /mnt/d/ProgramFiles/nodejs/),导致调用了 Windows 版本的 npm 脚本,其换行符为 CRLF 格式,Linux 无法识别。
● 解决:
○ 清理 PATH 中的 Windows 路径:
○ 如果修复后仍报 Cannot find module '../lib/cli.js',说明 npm 安装已损坏,需彻底卸载重装:
坑4:npm 安装卡住不动(转圈圈)
● 原因:npm 默认使用国外源(registry.npmjs.org),国内访问慢或超时。
● 解决:切换到淘宝镜像源:
坑5:Docker 源报错 Could not handshake
● 原因:Docker 官方源地址无法访问。
● 结论:可忽略,不影响 Node.js 和 Node-RED 的安装。
五、快速复用命令清单
# ===== 有网络的 Ubuntu 电脑上执行 =====
sudo apt update
sudo apt install -y ca-certificates curl gnupg
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
npm config set registry https://registry.npmmirror.com
cd ~ && rm -rf node-red-offline && mkdir node-red-offline && cd node-red-offline
npm init -y
npm install node-red
cd ~ && tar czf node-red-full.tar.gz node-red-offline
# ===== 内网 openEuler 服务器上执行 =====
# (假设 Node.js 已安装,node-red-full.tar.gz 已拷贝到 /opt)
cd /opt && tar xzf node-red-full.tar.gz
sudo ln -s /opt/node-red-offline/node_modules/.bin/node-red /usr/local/bin/node-red
export NODE_PATH=/opt/node-red-offline/node_modules
echo 'export NODE_PATH=/opt/node-red-offline/node_modules' >> ~/.bashrc
source ~/.bashrc
node-red
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)