2. Node-RED开发环境搭建
在开始构建物联网仪表盘之前,必须正确搭建 Node-RED 的运行环境。本章将引导你完成从 Node.js 安装到 Node-RED 安全配置的完整流程,确保开发环境稳定、可访问且安全。
2.1 Node.js 安装
Node-RED 基于 Node.js 运行时,因此安装 Node.js 是第一步。建议使用 LTS(长期支持)版本以获得最佳稳定性。
| 操作系统 | 推荐安装方式 | 版本要求 |
|---|---|---|
| Windows | 官方安装包 (.msi) | Node.js 18.x LTS 或 20.x LTS |
| macOS | Homebrew 或官方安装包 (.pkg) | Node.js 18.x LTS 或 20.x LTS |
| Linux (Ubuntu/Debian) | NodeSource 仓库或 nvm | Node.js 18.x LTS 或 20.x LTS |
| Raspberry Pi (ARM) | NodeSource 仓库 | Node.js 18.x LTS |
node --version
npm --version
如果正确显示版本号(如 v18.17.0 和 9.6.7),则 Node.js 和 npm 已就绪。
2.2 Node-RED 的安装与启动
Node.js 安装完成后,使用 npm(Node 包管理器)全局安装 Node-RED。全局安装使 node-red 命令可在任意目录下使用。
npm install -g node-red
安装完成后,通过以下命令启动 Node-RED:
node-red
启动成功后,终端会显示类似以下信息:
Welcome to Node-RED
===================
...
Server now running at http://127.0.0.1:1880/red/
-p, --port:指定端口号,例如node-red -p 3000-u, --userDir:指定用户数据目录,例如node-red -u ~/my-nodered-data-s, --settings:指定自定义设置文件路径
2.3 首次访问与界面导览
打开浏览器,访问 http://localhost:1880(或 http://127.0.0.1:1880),即可看到 Node-RED 的 Web 编辑器界面。首次访问时,界面主要分为以下几个区域:
| 区域名称 | 位置 | 功能说明 |
|---|---|---|
| 节点面板 | 左侧 | 按分类列出所有可用节点,可拖拽至工作区 |
| 工作区 | 中央 | 拖放节点、连接节点、编排流程的可视化画布 |
| 信息侧栏 | 右侧 | 显示选中节点的帮助文档、属性说明 |
| 调试侧栏 | 右侧(可切换) | 显示调试输出消息、日志信息 |
| 顶部菜单栏 | 顶部 | 部署、导入/导出、管理节点、设置等操作入口 |
2.4 设置用户名与密码
默认情况下,Node-RED 编辑器无需登录即可访问。在生产环境或暴露于网络的设备上,必须启用身份验证以保护流和敏感配置。Node-RED 使用基于 settings.js 文件的用户名/密码认证机制。
步骤 1:生成密码哈希
Node-RED 不存储明文密码,而是使用 bcrypt 哈希。使用以下命令生成密码哈希:
node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" 你的密码
将 你的密码 替换为实际密码,终端将输出类似 $2a$08$... 的哈希字符串。
步骤 2:编辑 settings.js 文件
找到用户数据目录下的 settings.js 文件(默认位于 ~/.node-red/settings.js)。如果文件不存在,可复制模板文件:
# Linux / macOS
cp ~/.node-red/node_modules/node-red/settings.js ~/.node-red/settings.js
# Windows (PowerShell)
Copy-Item "$env:USERPROFILE\.node-red\node_modules\node-red\settings.js" "$env:USERPROFILE\.node-red\settings.js"
使用文本编辑器打开 settings.js,找到 adminAuth 部分(通常被注释),修改为以下内容:
adminAuth: {
type: "credentials",
users: [
{
username: "admin",
password: "$2a$08$...", // 替换为生成的哈希
permissions: "*"
}
]
},
步骤 3:重启 Node-RED
保存文件后,在终端中按 Ctrl+C 停止 Node-RED,然后重新启动:
node-red
再次访问 http://localhost:1880,浏览器将显示登录页面,输入设置的用户名和密码即可进入编辑器。
users 数组中添加多个用户,并为不同用户设置不同权限:
users: [
{
username: "admin",
password: "哈希1",
permissions: "*" // 完全权限
},
{
username: "viewer",
password: "哈希2",
permissions: "read" // 只读权限
}
]
常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 登录页面不显示 | settings.js 未正确加载或语法错误 | 检查 JSON 格式,确保逗号、引号完整;重启 Node-RED |
| 密码验证失败 | bcryptjs 未安装或哈希不匹配 | 执行 npm install bcryptjs 重新生成哈希 |
| 启动报错 "adminAuth is not defined" | settings.js 中变量作用域错误 | 确保 adminAuth 定义在 module.exports 内部 |
| 忘记密码 | 密码丢失 | 重新生成哈希并更新 settings.js,重启服务 |
https 配置项)和限制可访问的 IP 地址(通过 httpNodeAuth 或防火墙规则),构建多层安全防护。