• 37
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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を指定するとhttpAdminRoothttpNodeRootを同じpathで上書きします。

https

HTTPSを有効にします。以下が設定例。詳細はこちら

https: {
  key: fs.readFileSync('privatekey.pem'),
  cert: fs.readFileSync('certificate.pem')
},

disableEditor

trueを指定するとflow Editorが無効になります。デフォルトはfalseです。httpAdminRootfalseにした場合は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秒。

この投稿は Node-RED Advent Calendar 20153日目の記事です。