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でユーザ毎に*フルアクセスかreadread 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秒。