使用 Docker 部署 Node-RED 并设置密码

Node-RED 是一个基于浏览器的流式编程工具,广泛应用于物联网(IoT)、数据处理和自动化工作流等领域。使用 Docker 部署 Node-RED 可以方便我们快速构建和管理 Node-RED 的实例。在这篇文章中,我们将介绍如何使用 Docker 部署 Node-RED,并设置访问密码以增强安全性。

1. Docker 简介

Docker 是一个开源的应用容器引擎,它可以将应用程序及其所有依赖打包成一个标准化的运行单元——容器。容器是轻量级的,可以在任何支持 Docker 的环境中运行,因此非常适合微服务架构和快速部署。

2. 安装 Docker

如果你还没有安装 Docker,请根据你的操作系统,访问 [Docker 官方网站]( 获取安装指导。安装完成后,可以通过以下命令检查 Docker 是否安装成功:

docker --version

成功安装后,可以看到 Docker 的版本信息。

3. 部署 Node-RED

Node-RED 提供了官方的 Docker 镜像,可以很方便地将它部署在本地或服务器上。我们将通过以下命令拉取 Node-RED 的最新 Docker 镜像并运行它:

docker run -it -p 1880:1880 --name nodered nodered/node-red

这条命令的详细解释如下:

  • -it:允许我们交互式地访问容器。
  • -p 1880:1880:将容器的 1880 端口映射到主机的 1880 端口。
  • --name nodered:指定容器的名称为 nodered
  • nodered/node-red:使用官方的 Node-RED 镜像。

成功运行后,你可以通过浏览器访问 http://localhost:1880 来查看 Node-RED 的管理界面。

4. 设置访问密码

虽然 Node-RED 非常强大,但默认情况下,它没有启用安全功能。因此,我们需要设置访问密码,以防止未授权用户访问。要设置密码,请按照以下步骤操作:

4.1 创建认证密码

首先,你需要生成一个哈希密码。在 Node-RED 中,使用如下命令生成密码哈希:

npm install -g node-red-admin
node-red-admin hash-pw

运行上述命令后,按照提示输入你希望设置的密码,系统将返回一个哈希值,类似于:

$2b$08$wHdd8jevhQhC8T62sw6EkOxB7Z8fXUIg9bREqH9GMCPYZZczzoVhe

记下这个哈希值,接下来将在配置中使用它。

4.2 创建 settings.js 文件

在你的主机上创建一个用于存储 Node-RED 配置的目录,并在其中创建 settings.js 文件,例如:

mkdir -p ~/nodered-data
cd ~/nodered-data
touch settings.js

然后编辑 settings.js 文件,设置用户名和密码,示例如下:

const bcrypt = require('bcryptjs');

module.exports = {
    httpNodeAuth: { user: "your_username", pass: "$2b$08$wHdd8jevhQhC8T62sw6EkOxB7Z8fXUIg9bREqH9GMCPYZZczzoVhe" }
};

记得将 "your_username" 替换为你希望设置的用户名。

4.3 运行 Node-RED 容器

现在,我们需要在 Docker 中挂载刚才创建的配置文件夹,并运行 Node-RED:

docker run -it -p 1880:1880 --name nodered -v ~/nodered-data:/data nodered/node-red

通过 -v ~/nodered-data:/data 参数,Docker 将主机的 ~/nodered-data 目录挂载到容器的 /data 目录,从而使 Node-RED 可以读取我们创建的 settings.js 文件。

5. 访问 Node-RED

现在,你可以通过浏览器访问 http://localhost:1880,输入你在 settings.js 中设置的用户名和密码。如果输入正确,你将成功登录 Node-RED 工作界面。

6. 可视化数据

除了设置密码外,Node-RED 还支持通过流程图、图表等多种方式呈现数据。下面,我们使用 Mermaid 语法绘制一个饼状图示例,展示 Node-RED 中不同节点的使用情况:

pie
    title Node-RED 节点使用情况
    "功能节点" : 40
    "输入节点" : 25
    "输出节点" : 15
    "处理节点" : 20

这种图表可以帮助用户快速了解各个节点的使用分布,便于优化工作流程。

结论

通过以上步骤,我们成功地在 Docker 中部署了 Node-RED,并设置了访问密码,增强了安全性。Node-RED 不仅可以用于开发 IoT 应用,还可以轻松创建各种数据流和可视化展示。希望这篇文章能帮助你更好地理解 Node-RED 的使用及其在 Docker 上的部署过程,鼓励你进一步探索其丰富的功能与实践应用。