本章详细说明了 Node-RED 默认配置文件 settings.js
中的所有配置项及其作用。
通常情况下,用户无需修改默认配置文件。如果需要自定义配置,可以在
~/.node-red/settings.js
中进行修改。 或者,在启动 Node-RED 时可以使用 --settings 命令行参数指向不同的文件。参考指定配置文件。
1. Flow 文件和用户目录设置
flowFile
-
类型: String
-
默认值 :
'flows.json'
-
说明 : 指定流程文件的名称。如果未设置,默认为
flows_<hostname>.json
-
示例:
javascriptflowFile: 'flows.json'
credentialSecret
-
类型: String 或 Boolean
-
默认值: 未设置(使用生成的密钥)
-
说明 : 用于加密存储的凭据。设置为
false
可禁用加密。一旦设置请勿更改。 -
示例:
javascriptcredentialSecret: 'a-secret-key'
flowFilePretty
-
类型: Boolean
-
默认值 :
true
-
说明: 是否格式化 JSON 流程文件,便于版本控制比较
-
示例:
javascriptflowFilePretty: true
userDir
-
类型: String
-
默认值 :
'~/.node-red'
-
说明: 用户数据存储目录
-
示例:
javascriptuserDir: '/home/root/.node-red/'
nodesDir
-
类型: String
-
默认值: 未设置
-
说明: 额外的本地节点扫描目录
-
示例:
javascriptnodesDir: '/home/root/.node-red/nodes'
2. 安全性设置
adminAuth
-
类型: Object
-
说明: 管理员身份验证配置
-
示例:
javascript{ type: 'credentials', sessionExpiryTime: 86400, // 24小时 users: [ { username: 'admin', password: '$2b$08$o3H3q7KPrgoqE0fNRtIkj.5XZZ1XJNKOW2lbYU7.lx0AeI86NQFTy', permissions: '*' } ] }
密码使用 bcrypt 加密存储,示例中为
admin
用户的密码。可以在命令行窗口中使用
node-red admin hash-pw
生成加密密码。
details admin工具的使用init:交互式生成 Node-RED 配置文件
hash-pw :创建用于 Node-RED 配置(如
adminAuth
)的哈希值target :设置或查看目标 URL 与端口,例如
http://localhost:1880
login:登录到 Node-RED 管理 API 的目标地址
list:列出所有已安装的节点
info:显示模块或节点的详细信息
enable:启用指定的模块或节点集
disable:禁用指定的模块或节点集
search:搜索可安装的 Node-RED 模块
install:从 NPM 安装模块到 Node-RED
remove:从 Node-RED 中移除 NPM 模块
https
-
类型: Object 或 Function
-
说明: HTTPS 配置,包含私钥和证书
-
示例:
::: code-group
javascripthttps: { key: require("fs").readFileSync('privkey.pem'), cert: require("fs").readFileSync('cert.pem') }
javascript// 这是一个函数,它应该返回一个选项对象,或者是一个Promise,这个Promise会解析为一个选项对象。 https: function() { return { key: require("fs").readFileSync('privkey.pem'), cert: require("fs").readFileSync('cert.pem') } }
:::
httpsRefreshInterval
-
类型: Number
-
默认值 :
12
(12小时) -
说明 : HTTPS 证书刷新间隔,单位为
小时
-
示例:
javascripthttpsRefreshInterval: 12
requireHttps
-
类型: Boolean
-
默认值: 未设置
-
说明: 是否将 HTTP 重定向到 HTTPS\
-
示例:
javascriptrequireHttps: true
httpNodeAuth
-
类型: Object
-
说明 : HTTP 节点的认证配置,密码生成参考adminAuth
-
示例:
javascripthttpNodeAuth: { user: 'admin', pass: '$2b$08$o3H3q7KPrgoqE0fNRtIkj.5XZZ1XJNKOW2lbYU7.lx0AeI86NQFTy' }
httpStaticAuth
-
类型: Object
-
说明 : HTTP 静态文件的认证配置,密码生成参考adminAuth
-
示例:
javascripthttpStaticAuth: { user: 'admin', pass: '$2b$08$o3H3q7KPrgoqE0fNRtIkj.5XZZ1XJNKOW2lbYU7.lx0AeI86NQFTy' }
3. 服务器设置
uiPort
-
类型: Number
-
默认值 :
process.env.PORT || 1880
-
说明: Web 服务器监听的端口
-
示例:
javascriptuiPort: 1880
uiHost
-
类型: String
-
默认值: 未设置(监听所有 IPv4 接口)
-
说明: 监听的接口,设置为 "::" 可监听所有 IPv6 地址
-
示例:
javascriptuiHost: '0.0.0.0'
apiMaxLength
-
类型: String
-
默认值 :
'5mb'
-
说明: API 最大请求大小
-
示例:
javascriptapiMaxLength: '50mb'
httpServerOptions
-
类型: Object
-
默认值: 未设置
-
说明 : HTTP 服务器选项,参考 Express.js 服务器选项
-
示例:
javascripthttpServerOptions: { maxHeaderSize: 16384 }
httpAdminRoot
-
类型: String 或 Boolean
-
默认值 :
'/'
-
说明 : 管理界面的根路径,设置为
false
可禁用 -
示例:
javascripthttpAdminRoot: '/'
httpAdminMiddleware
-
类型: Function
-
默认值: 未设置
-
说明: 自定义 HTTP 中间件函数,用于管理界面请求
-
示例:
javascripthttpAdminMiddleware: function(req, res, next) { // 自定义逻辑 req.skipRawBodyParser = true; res.set('X-Frame-Options', 'sameorigin'); next(); } }
httpNodeRoot
-
类型: String 或 Boolean
-
默认值 :
'/'
-
说明: HTTP 节点的根路径
-
示例:
javascripthttpNodeRoot: '/api'
httpNodeCors
-
类型: Object
-
说明: CORS 跨域配置
-
示例:
javascripthttpNodeCors: { origin: "*", methods: "GET,PUT,POST,DELETE" }
httpStatic
- 类型: String 或 Object
- 默认值 :
'/'
- 说明: 静态文件的根路径,设置为 false 可禁用
当
httpAdminRoot
与httpStaticRoot
设置为不同的值时,就没有必要修改httpAdminRoot
-
示例:
::: code-group
javascripthttpStatic: '~/.node-red/static',
javascripthttpStatic: [ { path: '/home/nol/pics/', root: "/img/" }, { path: '/home/nol/reports/', root: "/doc/" }, ]
:::
httpStaticRoot
-
类型: String
-
默认值 :
'/'
-
说明 : 静态文件的根路径 例如,如果
httpStatic = "/home/nol/docs"
并且httpStaticRoot = "/static/"
, 那么/home/nol/docs
将会转换为/static/
。例如,如果httpStatic = [{path: '/home/nol/pics/', root: "/img/"}]
并且httpStaticRoot = "/static/"
,那么/home/nol/pics/
将会转换为/static/img/
。 -
示例:
javascripthttpStaticRoot: '~/.node-red/static/'
4. 运行时设置
lang
-
类型: String
-
默认值 :
'zh-CN'
-
说明 : 界面语言,支持:
en-US
,ja
,de
,zh-CN
,zh-TW
,ru
,ko
-
示例:
javascriptlang: 'zh-CN'
diagnostics
-
类型: Object
-
说明: 诊断功能配置
-
示例:
javascript{ enabled: false, // 启用诊断端点 ui: false // 在编辑器中显示诊断信息 }
runtimeState
-
类型: Object
-
说明 : 运行时状态控制,部署菜单将显示
停止
或启动
按钮。 -
示例:
javascript{ enabled: false, // 启用状态控制端点 ui: false // 在编辑器中显示控制选项 }
telemetry
-
类型:Object
-
说明:默认情况下,遥测功能处于禁用状态,直至用户首次打开编辑器并授予许可后才会启用,若遥测功能已启用,当 Node-RED 有新版本可用时,编辑器会向用户发送通知。将以下属性设置为 false 可禁用此通知
-
示例:
javascript{ enabled: false, // 启用遥测 updateNotification: false // 在编辑器中显示更新通知 }
logging
-
类型: Object
-
说明: 日志配置
-
日志等级:
fatal
: 记录最严重的错误事件,系统无法继续运行error
: 记录被认为是致命的请求错误以及fatal
错误warn
: 记录非致命问题以及error和fatal错误info
: 记录关于应用程序运行的一般信息以及warn
、error
和fatal
错误debug
: 记录所有事件(包括调试信息)trace
: 记录非常详细的日志(包括函数调用栈)off
: 关闭所有日志记录
-
示例:
javascript{ console: { level: "error", // 日志级别 metrics: false, // 不包含指标事件 audit: false // 是否将audit事件包含在日志输出中 } }
ontextStorage
-
类型: Object
-
说明: 上下文存储配置,,每30秒刷新一次到磁盘
-
示例:
javascript{ default: {module: 'memory'}, // 默认内存存储 file: {module: 'localfilesystem'} // 自定义:文件存储 }
exportGlobalContextKeys
-
类型: Boolean
-
默认值 :
false
-
说明 : 导出全局上下文变量的键列表,在function节点中可以使用
global.keys()
访问 -
示例:
javascriptexportGlobalContextKeys: false
externalModules
-
类型: Object
-
默认值 :
{}
-
说明: 外部模块配置,用于加载自定义节点模块
-
示例:
javascriptexternalModules: { modules: [ autoInstall: false, // 运行时是否尝试自动安装缺失的模块 autoInstallRetry: 30, // 重新安装尝试之间的间隔,以秒为单位 palette: { // 配置 Palette Manager allowInstall: true, // 在编辑器中启用 Palette Manager allowUpdate: true, // 允许在 Palette Manager 中更新模块 allowUpload: true, // 允许上传模块 tgz 文件并进行安装 allowList: ['*'], // 允许安装的模块列表,'*' 表示允许所有模块 denyList: [], // 拒绝安装的模块列表 allowUpdateList: ['*'], // 允许更新的模块列表,'*' 表示允许所有模块 denyUpdateList: [] // 拒绝更新的模块列表 }, modules: { // 配置节点指定的模块 allowInstall: true, // 运行时是否尝试自动安装缺失的模块 allowList: [], // 允许安装的模块列表,'*' 表示允许所有模块 denyList: [] // 拒绝安装的模块列表 } ] }
4. 编辑器配置
disableEditor
-
类型: Boolean
-
默认值 :
false
-
说明: 禁用编辑器,设置为 true 后,将无法通过浏览器访问编辑器界面
-
示例:
javascriptdisableEditor: true
editorTheme
page
-
类型: Object
-
说明: 编辑器主题配置
-
当前配置:
javascripteditorTheme: { page: { title: '可视化流程控制系统', favicon: 'favicon.ico' } }
header
-
类型: Object
-
说明: 页面标题和图标配置
-
当前配置:
javascripteditorTheme: { header: { title: '可视化流程控制系统', image: 'red/images/node-red.svg' } }
tours
-
类型: Boolean
-
默认值 :
false
-
说明: 禁用编辑器中的教程
-
示例:
javascripteditorTheme: { tours: false }
menu
- 类型: Object
- 说明: 编辑器菜单配置
名称 | 描述 |
---|---|
menu-item-projects-menu | 项目菜单,包含新建项目、打开项目、项目设置选项 |
menu-item-projects-new | 新建项目选项 |
menu-item-projects-open | 打开项目选项 |
menu-item-projects-settings | 项目设置选项 |
menu-item-edit-menu | 编辑菜单,包含撤销、重做、剪切、复制、粘贴等编辑相关选项 |
menu-item-edit-undo | 撤销更改选项 |
menu-item-edit-redo | 重做更改选项 |
menu-item-edit-cut | 剪切节点选项 |
menu-item-edit-copy | 复制节点选项 |
menu-item-edit-paste | 粘贴节点选项 |
menu-item-edit-copy-group-style | 复制组样式选项 |
menu-item-edit-paste-group-style | 粘贴组样式选项 |
menu-item-edit-select-all | 全选节点选项 |
menu-item-edit-select-connected | 选择所有连接的节点选项 |
menu-item-edit-select-none | 取消选择所有节点选项 |
menu-item-edit-split-wire-with-links | 用链接节点拆分导线选项 |
menu-item-view-menu | 视图菜单,包含显示/隐藏面板、侧边栏等视图相关选项 |
menu-item-palette | 显示/隐藏调色板选项(可切换) |
menu-item-sidebar | 显示/隐藏侧边栏选项(可切换) |
menu-item-event-log | 显示事件日志选项 |
menu-item-action-list | 显示操作列表选项 |
menu-item-arrange-menu | 排列菜单,包含对齐、分布、调整层级等排列相关选项 |
menu-item-view-tools-align-left | 向左对齐所选内容选项 |
menu-item-view-tools-align-center | 向中心对齐所选内容选项 |
menu-item-view-tools-align-right | 向右对齐所选内容选项 |
menu-item-view-tools-align-top | 向上对齐所选内容选项 |
menu-item-view-tools-align-middle | 向中间对齐所选内容选项 |
menu-item-view-tools-align-bottom | 向下对齐所选内容选项 |
menu-item-view-tools-distribute-horizontally | 水平分布所选内容选项 |
menu-item-view-tools-distribute-veritcally | 垂直分布所选内容选项 |
menu-item-view-tools-move-to-back | 将所选内容移到后面选项 |
menu-item-view-tools-move-to-front | 将所选内容移到前面选项 |
menu-item-view-tools-move-backwards | 将所选内容向后移动选项 |
menu-item-view-tools-move-forwards | 将所选内容向前移动选项 |
menu-item-import | 导入选项 |
menu-item-export | 导出选项 |
menu-item-search | 搜索选项 |
menu-item-config-nodes | 显示配置节点选项 |
menu-item-workspace | 工作区(流)菜单,包含添加、编辑、删除流选项 |
menu-item-workspace-add | 添加流选项 |
menu-item-workspace-edit | 编辑流选项 |
menu-item-workspace-delete | 删除流选项 |
menu-item-subflow | 子流菜单,包含创建子流、将所选内容转换为子流选项 |
menu-item-subflow-create | 创建子流选项 |
menu-item-subflow-convert | 将所选内容转换为子流选项 |
menu-item-group | 组菜单,包含将所选内容分组、取消分组等组相关选项 |
menu-item-group-group | 将所选内容分组选项 |
menu-item-group-ungroup | 取消所选内容分组选项 |
menu-item-group-merge | 将所选内容合并到组选项 |
menu-item-group-remove | 将所选内容从组中移除选项 |
menu-item-edit-palette | 编辑调色板选项 |
menu-item-user-settings | 用户设置选项 |
menu-item-keyboard-shortcuts | 键盘快捷键选项 |
menu-item-help | 帮助选项,链接到相关文档 |
menu-item-node-red-version | Node-RED版本信息选项,点击显示关于信息 |
-
示例:
javascripteditorTheme: { menu: { 'menu-item-keyboard-shortcuts': false, // 隐藏快捷键菜单 'menu-item-help': { // 修改默认帮助菜单链接 label: '可视化流程控制系统', disabled: true, // 禁用默认帮助菜单 url: 'https://custom-domain/help.html' } } }
palette
-
类型: Object
-
说明: 节点库配置
-
示例:
javascripteditorTheme: { palette: { // 自定义节点管理器目录 catalogues: [ 'https://catalogue.nodered.org/catalogue.json', 'https://custom-domain/catalogue.json' ], // 自定义节点类别在编辑器中的排列顺序。如果某个节点的类别不在列表中,该类别将被添加到末尾 categories: ['自定义分组1', '自定义分组2', 'subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'] } }
projects
-
类型: Object
-
说明 : 项目配置,必须安装
GIT
后才生效 -
示例:
javascripteditorTheme: { projects: { enabled: true, // 启用项目功能 workflow: { mode: 'manual' | 'auto' // 手动或自动提交更改 } } }
codeEditor
- 类型: Object
- 说明: 代码编辑器配置
details 主题名称:参考源文件
packages/node_modules/@gd-node-red/editor-client/src/vendor/monaco/dist/theme
- ace
- active4d
- all-hallows-eve
- amy
- birds-of-paradise
- blackboard
- brilliance-black
- brilliance-dull
- chrome-devtools
- clouds-midnight
- clouds
- cobalt
- cobalt2
- dawn
- dominion-day
- dracula
- dreamweaver
- eiffel
- espresso-libre
- forge-dark
- forge-light
- forge
- github-dark
- github-light
- github
- idle
- idlefingers
- iplastic
- katzenmilch
- krtheme
- kuroir-theme
- lazy
- magicwb-amiga
- merbivore-soft
- merbivore
- monoindustrial
- monokai-bright
- monokai
- night-owl
- nord
- oceanic-next
- pastels-on-dark
- slush-and-poppies
- solarized-dark
- solarized-light
- spacecadet
- sunburst
- textmate-mac-classic
- tomorrow-night-blue
- tomorrow-night-bright
- tomorrow-night-eighties
- tomorrow-night
- tomorrow
- twilight
- upstream-sunburst
- vibrant-ink
- xcode_default
- zenburnesque
-
示例:
javascripteditorTheme: { codeEditor: { lib: 'monaco', options: { theme: 'github-light', // fontSize: 14, // fontFamily: "Cascadia Code, Fira Code, Consolas, 'Courier New', monospace", // fontLigatures: true, // fontLigatures: true, } } }
markdownEditor
-
类型: Object
-
说明: Markdown 编辑器配置
-
示例:
javascripteditorTheme: { markdownEditor: { mermaid:{ enabled:true // 启用 Mermaid 图表 } } }
multiplayer
-
类型: Object
-
说明: 多人编辑配置
-
当前配置:
javascripteditorTheme: { multiplayer: { enabled: true // 启用多人编辑 } }
节点设置
fileWorkingDirectory
-
类型: String
-
默认值 :
""
-
说明: 函数节点执行时的工作目录,为空时默认使用 Node-RED 安装目录
-
示例:
javascriptfileWorkingDirectory: ""
globalFunctionTimeout
-
类型: Number
-
默认值 :
0
-
说明: 函数节点超时时间(秒),0 表示无限制
-
示例:
javascriptglobalFunctionTimeout: 0
functionTimeout
-
类型: Number
-
默认值 :
0
-
说明: 函数节点超时时间(秒),0 表示无限制
-
示例:
javascriptfunctionTimeout: 0
functionGlobalContext
-
类型: Object
-
默认值 :
{}
-
说明 : 允许函数节点中使用额外的节点模块,函数节点中可以使用
global.get("os")
使用对应模块 -
示例:
javascriptfunctionGlobalContext: { os:require('os'), fs:require('fs'), }
nodeMessageBufferMaxLength
-
类型: Number
-
默认值: 0
-
说明: 节点消息缓冲区最大长度,0 表示无限制
-
示例:
javascriptnodeMessageBufferMaxLength: 0
debugUseColors
-
类型: Boolean
-
默认值 :
true
-
说明: 调试输出是否使用颜色
-
示例:
javascriptdebugUseColors: true
functionExternalModules
-
类型: Boolean
-
默认值 :
false
-
说明: 允许函数节点加载外部 npm 模块
-
示例:
javascriptfunctionExternalModules: true
debugMaxLength
-
类型: Number
-
默认值: 1000
-
说明: 调试消息最大长度
-
示例:
javascriptdebugMaxLength: 1000
execMaxBufferSize
-
类型: Number
-
默认值: 10000000
-
说明: 执行外部命令时的最大缓冲区大小(字节),默认 10MB
-
示例:
javascriptexecMaxBufferSize: 10000000
httpRequestTimeout
-
类型: Number
-
默认值: 360000
-
说明: HTTP 请求超时时间(毫秒),默认 120秒
-
示例:
javascripthttpRequestTimeout: 120000
mqttReconnectTime
-
类型: Number
-
默认值: 15000
-
说明: MQTT重连间隔(毫秒)
-
示例:
javascriptmqttReconnectTime: 15000
serialReconnectTime
-
类型: Number
-
默认值: 15000
-
说明: 串口重连间隔(毫秒)
-
示例:
javascriptserialReconnectTime: 15000
socketReconnectTime
-
类型: Number
-
默认值: 15000
-
说明: Socket 重连间隔(毫秒)
-
示例:
javascriptsocketReconnectTime: 15000
socketTimeout
-
类型: Number
-
默认值: 0
-
说明: Socket 超时时间(毫秒),0 表示无限制
-
示例:
javascriptsocketTimeout: 0
tcpMsgQueueSize
-
类型: Number
-
默认值: 1000
-
说明: TCP 消息队列大小
-
示例:
javascripttcpMsgQueueSize: 1000
inboundWebSocketTimeout
-
类型: Number
-
默认值: 5000
-
说明: 入站 WebSocket 超时时间(毫秒)
-
示例:
javascriptinboundWebSocketTimeout: 5000
tlsConfigDisableLocalFiles
-
类型: Boolean
-
默认值 :
false
-
说明: 禁用在TLS配置节点中使用本地文件存储密钥和证书的选项
-
示例:
javascripttlsConfigDisableLocalFiles: true
webSocketNodeVerifyClient
-
类型: Function
-
默认值 :
null
-
说明: 自定义验证 WebSocket 连接的函数
-
示例:
javascriptwebSocketNodeVerifyClient: function (info) { /** 'info'有三个属性: * - origin : Origin头的值 * - req : HTTP请求 * - secure : 如果req.connection.authorized或req.connection.encrypted被设置为true * * 此函数应返回true,连接被接受,否则返回false。 * * 或者,如果此函数接受一个名为callback的第二个参数,它可以用于异步验证客户端。 * 回调函数接受三个参数: * - result : 布尔值,是否接受连接或不接受 * - code : 如果result为false,则为HTTP错误状态码 * - reason: 如果result为false,则为HTTP原因字符串 */ return info.req.headers['origin'] === 'https://example.com'; }
dashboard
-
类型: Object
-
说明: Dashboard 配置
-
示例:
javascriptdashboard:{ // 最大 HTTP 缓冲区大小(字节) maxHttpBufferSize: 1e8 // 100MB }