Node-RED 是一个允许可视化设计 自动化流程 的平台;它在 物联网(Internet of Things)领域被广泛使用,同时也可用于构建 API、服务器服务、集成和原型开发。
流程通过拖放式图形界面创建,连接各种类型的 节点,如输入、输出、逻辑、API、物联网设备等。
几年前我写过几篇关于这个主题的文章 [2][3],但因为我需要在一个项目中使用它,所以决定重新研究这个话题。
期间我更换了测试服务器,因此需要重新安装 Node-RED,这里记录了我遵循的步骤。
在 Ubuntu 上安装 Docker
这次我选择使用 Docker 容器,而不是直接在 Ubuntu 服务器上安装,这样更便于更新和数据迁移。
首先,我使用以下命令安装了 Docker [4],我的服务器当前运行的是 Ubuntu 22.04.5 LTS:
# 更新可用软件包列表
sudo apt-get update
# 安装 SSL 证书和 curl(用于下载密钥和访问 HTTPS 仓库)
sudo apt-get install -y ca-certificates curl
# 创建第三方 APT 密钥目录(如果不存在)
sudo install -m 0755 -d /etc/apt/keyrings
# 下载 Docker 官方 GPG 密钥并保存到密钥目录
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
# 设置密钥的读取权限,允许 APT 使用
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 将 Docker 官方仓库添加到 APT 源列表,使用刚保存的密钥
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo \"${UBUNTU_CODENAME:-$VERSION_CODENAME}\") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 重新加载软件包列表,包括 Docker
sudo apt-get update
# 安装 Docker 引擎、CLI、containerd 及 Buildx 和 Compose 插件
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 测试:运行一个 Docker 测试容器,验证安装是否成功
sudo docker run hello-world
我以 root 用户安装了 Docker,在生产环境中出于安全考虑,建议使用其他用户安装。
最后一条命令用于验证 Docker 是否正确安装并运行,输出应类似于下图所示:

在 Ubuntu 上安装 Node-RED
接下来,为创建 Node-RED 容器,我执行了以下步骤:
mkdir /root/dockerdata/nodered cd /root/dockerdata/nodered vi docker-compose.yml
在 docker-compose.yml 文件中,我写入了以下内容:
version: '3.8'
services:
node-red:
image: nodered/node-red:latest
container_name: mynodered
restart: unless-stopped
ports:
- "1880:1880"
volumes:
- node_red_data:/data
environment:
- TZ=Europe/Rome
volumes:
node_red_data:
最后,我运行了命令 docker compose up -d 来创建容器。
安装完成后,执行 docker ps 应显示容器状态:![]()
- 容器处于 运行中 状态。
- 监听所有网络接口的 1880 端口。
- 有一个 容器 ID 可用于引用,同时也有一个更易用的名称:mynodered。
以下是我常用的一些 Docker 容器管理命令,更多命令可参考此备忘单 [5]:
docker ps # 显示正在运行的容器
docker ps -a # 显示所有容器,包括已停止的
docker start mynodered # 启动名为 'mynodered' 的容器
docker stop mynodered # 停止 'mynodered' 容器
docker restart mynodered # 重启 'mynodered' 容器
docker rm mynodered # 删除 'mynodered' 容器(必须先停止)
docker images # 列出所有本地 Docker 镜像
docker pull nodered/node-red # 从 Docker Hub 拉取 'nodered/node-red' 镜像
docker rmi nodered/node-red # 删除本地 'nodered/node-red' 镜像
docker exec -it mynodered /bin/bash # 在 'mynodered' 容器中打开交互式 bash shell
# ⚠️ 仅当镜像包含 /bin/bash 时有效
docker system prune # 清理未使用的资源(容器、镜像、卷、网络)
# ⚠️ 注意:不慎使用可能删除重要数据
docker volume inspect nodered_node_red_data # 查看卷 'nodered_node_red_data' 详情
docker volume ls # 列出所有 Docker 卷
docker volume rm # ❌ 错误:命令不完整,缺少卷名称
docker
服务发布
此时 Node-RED 已运行,可通过 http://localhost:1880 访问(如果服务器有图形界面和浏览器)。但通常服务器没有图形界面,因此需要配置以便从 http://<服务器IP地址>:1880 访问。
这可以通过防火墙设置实现,例如运行:
sudo ufw allow 1880/tcp sudo ufw status
我选择在 Apache 上创建虚拟主机,通过专用域名和 443 端口(SSL)访问服务。
具体步骤如下:
- 修改 DNS,使域名 nodered.claudiobattaglino.it 指向我的 Ubuntu 服务器。
- 创建如下 虚拟主机 配置:
<VirtualHost *:80> ServerName nodered.claudiobattaglino.it ProxyPreserveHost On ProxyRequests Off ProxyPass / http://localhost:1880/ ProxyPassReverse / http://localhost:1880/ ErrorLog ${APACHE_LOG_DIR}/nodered_error.log CustomLog ${APACHE_LOG_DIR}/nodered_access.log combined RewriteEngine on RewriteCond %{SERVER_NAME} =nodered.claudiobattaglino.it RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost> - 使用 Let’s Encrypt 为该虚拟主机安装 SSL 证书。
- 重启 Apache 服务。
现在,Node-RED 可通过 https://nodered.claudiobattaglino.it 访问(前提是 Docker 容器已启动)。
设置密码
安装完成后,建议为 Node-RED 界面设置密码保护,因为默认情况下认证是关闭的。
启用认证并设置访问账户的步骤如下:
docker exec -it mynodered /bin/bash # 进入 mynodered 容器的 shell node-red admin hash-pw # 生成 admin 用户密码(输入所选密码并记录生成的哈希) vi /data/settings.js # 编辑 settings.js 文件
在 settings.js 文件中,找到带注释的 adminAuth 部分,写入:
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "<之前生成的密码哈希>",
permissions: "*"
}]
},
然后重启容器,访问网站验证认证是否生效:

登录账户为 admin / <之前设置的密码>。
未来发展
我了解到已经开发了用于查询和交互 大型语言模型(LLM) 的节点。这非常重要,因为它能帮助实现更有用的流程。
我当然会用它来做一些小项目,比如在 物联网植物(Internet of Plants)领域创建一个流程,用于监控植物状态。
敬请期待!!!
来源和参考
- Node Red,官方网站。
- 使用 Node Red 构建 Web 服务:如何提供测量数据,本站博客。
- 关于 NodeRed 的一门有趣课程,本站博客。
- Ubuntu 上安装 Docker,官方文档。
- 终极 Docker 备忘单,来自 DockerLabs。
- 使用 Let’s Encrypt 创建证书的说明。
- Node-RED Essentials,官方产品介绍视频,YouTube。
- Node-RED 可用节点列表,官方网站。
*** 注意:本文为使用 n8n 和 OpenAI 自动流程翻译。

