Node-REDはsettings.js
で各種設定を行います。自分の環境で現在どのsettings.jsを見ているか確認するにはNode-RED起動時の以下のログを見ます。
Welcome to Node-RED
===================
3 Dec 01:54:33 - [info] Node-RED version: v0.12.1
3 Dec 01:54:33 - [info] Node.js version: v0.12.7
3 Dec 01:54:33 - [info] Loading palette nodes
3 Dec 01:54:34 - [info] Settings file : [これが設定ファイルの場所]
3 Dec 01:54:34 - [info] User directory : [これがユーザディレクトリ]
3 Dec 01:54:34 - [info] Flows file : [これがflow設定ファイルの場所]
3 Dec 01:54:34 - [info] Server now running at http://127.0.0.1:1880/
3 Dec 01:54:34 - [info] Starting flows
3 Dec 01:54:34 - [info] Started flows
3 Dec 01:54:43 - [info] Stopping flows
ちなみに起動時に--settings|-s
オプションで任意のpathも指定できます。
Node-RED実行時の設定
flowFile
flow設定をファイルに保存する場合のファイル名です。デフォルトはflows_<hostname>.json
です。
userDir
flow設定をファイルに保存する場合のファイルへのpathです。デフォルトは$HOME/.node-red
です。
nodesDir
自作のnodeなどを追加するディレクトリを指定できます。ここで指定したディレクトリ内にnodeの.js
と.html
ファイルを配置するとNode-REDのパレットに表示されるようになります。
uiHost
ホストです。デフォルトは0.0.0.0
です。
uiPort
ポートです。デフォルトは1880
です。
httpAdminRoot
flow Editorのpathを指定できます。デフォルトは/
です。ちなみにfalse
を指定するとEditorが無効になります。
httpAdminAuth
flow EditorにBasic認証を設けます。以下が設定例。
httpAdminAuth: {user:"admin", pass:"5f4dcc3b5aa765d61d8327deb882cf99"}
pass
はMD5ハッシュを指定します。上記の例では実際にBasic認証ダイアログへ入力するパスワードはpassword
という文字列になるということです。コンソールなどで以下のnodeコマンドを実行することでハッシュ値を得られます。
node -e "console.log(require('crypto').createHash('md5').update('ここに実際のパスワード文字列を指定','utf8').digest('hex'))"
httpNodeRoot
HTTP In nodeのHTTPエンドポイントのpathを指定できます。デフォルトは/
です。ちなみにfalse
を指定すると全てのHTTPエンドポイントが無効になります。
httpNodeAuth
HTTP In nodeのHTTPエンドポイントにBasic認証を設けます。設定方法はhttpAdminAuth
と同様です。
httpRoot
httpRootを指定するとhttpAdminRoot
とhttpNodeRoot
を同じpathで上書きします。
https
HTTPSを有効にします。以下が設定例。詳細はこちら。
https: {
key: fs.readFileSync('privatekey.pem'),
cert: fs.readFileSync('certificate.pem')
},
disableEditor
true
を指定するとflow Editorが無効になります。デフォルトはfalse
です。httpAdminRoot
をfalse
にした場合はUIもAPIも無効になりますが、こちらはUIのみ無効になります。
httpStatic
ここで指定したpathを静的なWebコンテンツとして表示できます。例えば/home/username/.node-red/
と指定した場合、/home/username/.node-red/index.html
を作成すると/
へアクセスすると作成したindex.html
が表示されます。したがってhttpStatic
を指定する場合はhttpAdminRoot
は/
より下層のpathにする必要があります。
httpStaticAuth
httpStatic
にBasic認証を設けます。設定方法はhttpAdminAuth
と同様です。
httpNodeCors
HTTP In nodeのHTTPエンドポイントのCross-Origin Resource Sharing (CORS) を有効にします。以下が設定例。詳細はこちら。
httpNodeCors: {
origin: "*",
methods: "GET,PUT,POST,DELETE"
},
httpNodeMiddleware
HTTP In nodeのHTTPエンドポイントにHTTPミドルウェアを追加できます。HTTPエンドポイントでセッションとクッキーのハンドラを利用したい場合は以下のように設定します。
httpNodeMiddleware: function(req,res,next) {
session({
store: new MongoStore({
url: process.env.MONGOLAB_URI
})
})(req, res, function() {
cookieParser()(req, res, next);
});
},
flow Editorの設定
adminAuth
flow Editorにログインフォームを設けます。以下が設定例。
adminAuth: {
type: "credentials",
users: [{
username: "admin",
password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.",
permissions: "*"
}]
}
-
users
リストで複数のユーザを設定できます - パスワードはbcryptアルゴリズムによるハッシュ値を指定します
-
permissions
でユーザ毎に*
フルアクセスかread
read only権限が付与できます
コンソールなどで以下のnodeコマンドを実行することでハッシュ値を得られます。
node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" ここに実際のパスワード文字列を指定
paletteCategories
flow Editorのパレットのカテゴリの順序を設定します。カテゴリがリストにない場合はパレットの最後に追加されます。デフォルトの順序は以下。
['subflows', 'input', 'output', 'function', 'social', 'storage', 'analysis', 'advanced'],
nodeの設定
functionGlobalContext
function nodeの中では他のライブラリをrequire
できませんがfunctionGlobalContext
であらかじめrequire
しておくことでcontext.global
からライブラリにアクセスできるようになります。以下が設定例。
functionGlobalContext: {
jsforce: require('jsforce')
},
上記のように設定してfunction nodeで以下のようにしてdebug nodeに吐くとjsforceオブジェクトが格納されていることがわかります。ただしライブラリがnpmでグローバルにインストールされているかsettings.js
より下層にインストールされていなければいけません。
msg.payload = context.global.jsforce;
return msg;
debugMaxLength
debug nodeでdebugに表示する文字数を指定します。デフォルトは1000文字です。debugに表示する文字が...
で途切れてしまう場合はここを増やします。
mqttReconnectTime
mqtt nodeの接続が切断された場合の再接続までの待機時間。デフォルトは5秒。
serialReconnectTime
serial nodeの接続が切断された場合の再接続までの待機時間。デフォルトは5秒。
socketReconnectTime
tcp nodeの接続が切断された場合の再接続までの待機時間。デフォルトは10秒。
socketTimeout
tcp nodeのタイムアウト時間。デフォルトは120秒。