Help us understand the problem. What is going on with this article?

Node-REDの設定

More than 5 years have passed since last update.

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秒。

joeartsea
Chief Technical Officer at Uhuru Corporation. enebular, Milkcocoa, Node-RED
https://about.me/joeartsea
uhuru
株式会社ウフルはインターネットによる革新的なサービスがお客様企業の価値向上につながる事を目指し「テクノロジーと自由な発想で未来を創る」を企業理念に掲げています。エッジとクラウドを “つなぐ” IoTオーケストレーションサービス「enebular®」をベースにIoTやデジタルマーケティングの領域で顧客のビジネスに変革をもたらし続けております。
https://uhuru.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away