以下自DeepSeek生成
在Linux内网环境中安装Node-RED,由于无法直接访问互联网,需要采用离线安装方式。以下是详细步骤:
1. 准备离线安装包(在外网机器操作)
(1) 下载Node.js二进制包
- 访问 Node.js官网 下载对应架构的Linux二进制包(如
node-v18.x.x-linux-x64.tar.xz
)。 - 通过U盘/内部网络传输到内网机器。
(2) 下载Node-RED及依赖
在外网机器上创建缓存目录:
mkdir node-red-offline
cd node-red-offline
npm init -y # 初始化package.json
npm install node-red # 安装Node-RED核心
npm install --global-style # 确保依赖平铺在node_modules
压缩整个目录:
tar -czvf node-red-offline.tar.gz .
将 node-red-offline.tar.gz
传输到内网机器。
2. 内网机器安装Node.js
# 解压Node.js二进制包
sudo tar -xJvf node-*.tar.xz -C /usr/local --strip-components=1# 验证安装
node -v # 应输出版本号
npm -v
3. 内网安装Node-RED
(1) 解压离线包
mkdir ~/node-red
tar -xzvf node-red-offline.tar.gz -C ~/node-red
cd ~/node-red
(2) 安装Node-RED
# 使用本地路径安装(无需网络)
npm install --offline --no-audit --prefix ./ ./node-red
(3) 启动Node-RED
# 前台启动
./node_modules/.bin/node-red# 后台启动(使用nohup)
nohup ./node_modules/.bin/node-red > node-red.log &
访问 http://<内网IP>:1880
即可使用。
4. 配置系统服务(可选)
创建服务文件 /etc/systemd/system/node-red.service
:
[Unit]
Description=Node-RED
After=network.target[Service]
User=your_username # 改为实际用户
WorkingDirectory=/home/your_username/node-red
ExecStart=/usr/local/bin/node ./node_modules/.bin/node-red
Restart=on-failure[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable node-red
sudo systemctl start node-red
常见问题解决
-
依赖缺失
- 确保外网打包时使用了
--global-style
。 - 在内网手动补缺失模块(需提前下载对应模块的
.tgz
文件):npm install --offline /path/to/module.tgz
- 确保外网打包时使用了
-
端口占用
修改~/.node-red/settings.js
中的uiPort
参数。 -
开机自启失败
- 检查服务文件中的路径和用户权限。
- 使用
journalctl -u node-red
查看日志。
关键注意事项
- 架构一致:确保外网/内网机器的CPU架构(x64/ARM)相同。
- 防火墙:开放内网机器的
1880
端口。 - 版本兼容:Node.js版本需兼容Node-RED(推荐LTS版本)。
通过以上步骤,即可在内网Linux环境中完成Node-RED的离线部署。
设置为服务注意事项
- ExecStart 最好写全部绝对路径:即node.js路径(可用which命令查找) 空格 node-red启动文件路径
- 如果启动报错检查SELinux状态
# 查看 SELinux 状态
sestatus# 如果是 Enforcing 模式,添加权限
sudo semanage fcontext -a -t bin_t "/root/node-red-offline/node_modules/.bin/node-red"
sudo restorecon -Rv /root/node-red-offline# 或临时禁用(测试用)
sudo setenforce 0
- 查看日志
# 实时查看日志
journalctl -u node-red -f# 查看一小时内日志
journalctl -u node-red --since "1 hour ago"