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:指定自定义设置文件路径
Node-RED 启动流程与组件关系 Node.js 运行时 v18.x / v20.x LTS npm 全局安装 npm install -g node-red node-red 命令 启动服务进程 HTTP 服务 端口 1880 用户数据目录 ~/.node-red/ Web 编辑器 http://localhost:1880 说明: Node-RED 启动后,Node.js 运行时加载核心模块,在指定端口创建 HTTP 服务,同时读取用户数据目录中的配置、流和凭据文件,最终提供 Web 编辑器界面。

2.3 首次访问与界面导览

打开浏览器,访问 http://localhost:1880(或 http://127.0.0.1:1880),即可看到 Node-RED 的 Web 编辑器界面。首次访问时,界面主要分为以下几个区域:

区域名称 位置 功能说明
节点面板 左侧 按分类列出所有可用节点,可拖拽至工作区
工作区 中央 拖放节点、连接节点、编排流程的可视化画布
信息侧栏 右侧 显示选中节点的帮助文档、属性说明
调试侧栏 右侧(可切换) 显示调试输出消息、日志信息
顶部菜单栏 顶部 部署、导入/导出、管理节点、设置等操作入口
首次使用提示:建议先点击右上角的“部署”按钮(Deploy),即使当前没有流程,这有助于确认编辑器与后端服务的连接正常。部署成功后,状态栏会显示“已部署”绿色提示。
Node-RED Web 编辑器界面布局 顶部菜单栏(部署 / 导入 / 导出 / 设置) 节点面板 输入 / 输出 / 功能 网络 / 存储 / 分析 仪表盘 / 物联网 拖拽至工作区 工作区(画布) 拖放节点 · 连接节点 · 编排流程 mqtt in function debug 右侧侧栏 信息 / 帮助 调试 / 日志 节点属性 仪表盘布局 底部状态栏(连接状态 · 部署状态 · 节点统计 · 版本信息) 提示:各面板宽度可通过拖拽分隔线调整,右侧侧栏可在“信息”和“调试”视图间切换。

2.4 设置用户名与密码

默认情况下,Node-RED 编辑器无需登录即可访问。在生产环境或暴露于网络的设备上,必须启用身份验证以保护流和敏感配置。Node-RED 使用基于 settings.js 文件的用户名/密码认证机制。

安全警告:如果 Node-RED 运行在公网 IP 或通过端口转发暴露到互联网,必须设置用户名和密码。未认证的编辑器可被任何人访问、修改甚至删除你的流。

步骤 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(通过 https 配置项)和限制可访问的 IP 地址(通过 httpNodeAuth 或防火墙规则),构建多层安全防护。