如何配置Docker中的Node-RED实例监听两个HTTP端口?
Docker部署Node-RED作为API服务的配置方案
一、Docker容器启动配置
通过以下命令启动Node-RED实例,同时映射1880(管理端口)和1881(API端口),并挂载本地目录持久化配置数据:
docker run -d \ --name node-red-api \ -p 1880:1880 \ -p 1881:1881 \ -v ~/node-red-data:/data \ nodered/node-red:latest
-d:让容器后台运行--name:给容器命名,方便后续管理操作-p:将容器内的1880/1881端口映射到宿主机对应端口-v:挂载本地~/node-red-data目录到容器/data目录,用于保存配置、流数据等内容
二、修改Node-RED核心配置
进入挂载的本地配置目录(~/node-red-data),编辑settings.js文件,完成API端口绑定和UI界面隐藏:
1. 绑定API服务到1881端口
找到httpNodeOptions配置块,设置监听端口为1881:
httpNodeOptions: { port: 1881 },
此配置会让所有HTTP-in节点的API服务运行在1881端口。
2. 禁用管理UI界面
找到httpAdminOptions配置块,开启编辑器禁用选项,同时保留1880端口用于临时编辑:
httpAdminOptions: { port: 1880, disableEditor: true, // 可选:如果要完全屏蔽管理端点,可添加 path: false },
确认已配置管理员密码(你提到已设置,可跳过但建议检查):
adminAuth: { type: "credentials", users: [{ username: "your-admin-user", password: "$2a$08$xxxxxxxxx", // 用bcrypt生成的密码哈希 permissions: "*" }] },
修改完成后重启容器使配置生效:
docker restart node-red-api
三、UFW防火墙规则配置
1. 永久关闭1880端口
确保管理端口对外不可访问:
sudo ufw deny 1880/tcp sudo ufw reload
2. 临时开放1880端口用于编辑
当需要修改Node-RED流时,执行以下命令临时放行:
sudo ufw allow 1880/tcp
编辑完成后,重新关闭端口:
sudo ufw deny 1880/tcp sudo ufw reload
3. 允许1881端口的API访问
确保API端口对外可用:
sudo ufw allow 1881/tcp sudo ufw reload
四、验证配置效果
- 访问
http://你的服务器IP:1881:可正常调用API服务 - 访问
http://你的服务器IP:1880:因ufw拦截或编辑器禁用,无法进入管理界面 - 临时开放1880端口后,输入管理员密码可正常进入编辑器修改流
内容的提问来源于stack exchange,提问作者sosnus
相关产品推荐
相关产品推荐

