⚙️ Node-RED settings.js 設定ガイド

このガイドでは、Node-REDの設定ファイル settings.js について、よく使われる機能を中心に詳しく説明します。

📋 このガイドで扱う主な設定

📚 目次

📁 1. settings.jsの基本

📍 ファイルの場所

settings.jsは、Node-REDのユーザーディレクトリにあります。

OS デフォルトの場所
Windows C:\Users\<ユーザー名>\.node-red\settings.js
macOS /Users/<ユーザー名>/.node-red/settings.js
Linux / Raspberry Pi /home/<ユーザー名>/.node-red/settings.js

💡 ファイルの場所を確認する方法

Node-RED起動時のログに表示されます:

22 Jan 12:34:56 - [info] Settings file : /home/user/.node-red/settings.js

✏️ settings.jsの編集方法

settings.jsはテキストエディタで編集します。OS別のコマンド例:

OS コマンド例
Windows notepad %USERPROFILE%\.node-red\settings.js
macOS open -e ~/.node-red/settings.js
Linux / Raspberry Pi nano ~/.node-red/settings.js

💡 ヒント

VS Codeなどのコードエディタを使用すると、構文のハイライトやエラー検出が有効になるため編集が容易です。

⚠️ 書式エラーに注意

settings.jsはJavaScriptファイルのため、書式(構文)が正しくないとNode-REDが起動しなくなります

よくある書式エラー:

編集前に必ずバックアップを取りましょう:

cp ~/.node-red/settings.js ~/.node-red/settings.js.bak

編集後、以下のコマンドで構文チェックができます:

node -c ~/.node-red/settings.js

エラーがなければ何も表示されず、エラーがあれば行番号とともにエラー内容が表示されます。

📝 ファイルの基本構造

settings.jsは、JavaScriptオブジェクトをエクスポートする形式です。

module.exports = { // ここに設定を記述 uiPort: process.env.PORT || 1880, // コメントアウトされた設定は // を削除して有効化 // flowFile: 'flows.json', // 設定項目はカンマで区切る }

⚠️ 重要な注意点

📂 2. プロジェクト機能の有効化 メイン

🤔 プロジェクト機能とは?

プロジェクト機能を有効にすると、Node-REDのフローをGitで管理できるようになります。

💡 プロジェクト機能のメリット

⚙️ 設定方法

1

Gitのインストール確認

プロジェクト機能を使用するには、Gitがインストールされている必要があります。

git --version

バージョンが表示されればOKです。表示されない場合は Git公式サイト からインストールしてください。

2

settings.jsに設定を追加

settings.jsを開き、以下の設定を追加します。

editorTheme: { projects: { enabled: true } },

📌 設定の配置場所

module.exports = { ... } の中括弧内に追加します。既に editorTheme が存在する場合は、その中に projects を追加してください。

3

Node-REDを再起動

設定を反映するために、Node-REDを再起動します。

起動時のログで以下のような警告が出なければ成功です:

[warn] Projects disabled : editorTheme.projects.enabled=false ← これが表示されなければOK
4

エディタでプロジェクトを作成

ブラウザでNode-REDエディタを開くと、プロジェクト作成のウィザードが表示されます。

  1. Gitのユーザー名とメールアドレスを設定
  2. プロジェクト名を入力
  3. フローファイル名を設定(通常は flows.json
  4. 認証情報の暗号化キーを設定

✅ プロジェクト機能の有効化完了!

エディタ右上のメニューから「プロジェクト」→「プロジェクト設定」でGitの設定やリモートリポジトリの接続ができます。

🔐 3. パスワード認証の設定 メイン

🎯 認証の種類と適用範囲

Node-REDには、保護する対象ごとに異なる認証設定があります。

【認証設定と保護対象】

adminAuth
エディタ画面
httpNodeAuth
Dashboard / HTTP In
httpStaticAuth
静的コンテンツ
設定名 保護対象 URL例
adminAuth Node-REDエディタ、管理API http://localhost:1880/
httpNodeAuth Dashboard 2.0、HTTP Inノード http://localhost:1880/dashboard/
http://localhost:1880/api/xxx
httpStaticAuth httpStaticで配信する静的ファイル http://localhost:1880/static/

3.1 エディタの認証(adminAuth)

Node-REDエディタ画面にログインを必須にします。複数のユーザーと権限を設定できます。

adminAuth: { type: "credentials", users: [ { username: "admin", password: "$2b$08$ここにハッシュ化したパスワード", permissions: "*" }, { username: "viewer", password: "$2b$08$ここにハッシュ化したパスワード", permissions: "read" } ] },

📋 permissionsの種類

権限 説明
"*" 全ての操作が可能(管理者)
"read" 閲覧のみ(フローの編集・デプロイ不可)

💡 匿名ユーザーに読み取り権限を与える場合

ログインしていないユーザーにも閲覧だけは許可したい場合:

adminAuth: { type: "credentials", users: [ /* ユーザー設定 */ ], default: { permissions: "read" } },

3.2 ダッシュボード・HTTPノードの認証(httpNodeAuth)

Dashboard 2.0やHTTP Inノードで作成したAPIを保護します。

httpNodeAuth: { user: "dashuser", pass: "$2b$08$ここにハッシュ化したパスワード" },

⚠️ 注意点

📋 静的コンテンツの認証(httpStaticAuth)

httpStaticで配信する静的ファイルを保護する場合:

// 静的ファイルの配信設定 httpStatic: '/home/user/.node-red/public/', // 静的ファイルの認証 httpStaticAuth: { user: "staticuser", pass: "$2b$08$ここにハッシュ化したパスワード" },

3.3 パスワードハッシュの生成方法

settings.jsに記述するパスワードは、bcrypt形式でハッシュ化する必要があります。平文のパスワードを直接書くことはできません。

方法1: node-red-adminコマンド(推奨)

# node-red-adminをインストール npm install -g node-red-admin # パスワードハッシュを生成 node-red-admin hash-pw

コマンドを実行すると、パスワードの入力を求められます。入力後、ハッシュ化された文字列が表示されます。

Password: [パスワードを入力(表示されません)] $2b$08$M0/GHpeUMO2cR70u3HbUKu9/cZurxUiTRWCe0/vg28WyY16Ez9qlC

方法2: Node.jsで直接生成

node-red-adminをインストールしたくない場合:

node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" your-password-here

your-password-here の部分を実際のパスワードに置き換えてください。

📌 bcryptjsがない場合

エラーが出る場合は、先にbcryptjsをインストールしてください:

npm install bcryptjs

✅ パスワード認証の設定完了!

Node-REDを再起動すると、エディタやダッシュボードにアクセスした際にログイン画面が表示されます。

💾 4. コンテキスト永続化の設定 メイン

🤔 コンテキスト永続化とは?

Node-REDのコンテキスト変数(flow変数、global変数)は、デフォルトではメモリに保存されるため、Node-REDを再起動すると消えてしまいます

コンテキスト永続化を設定すると、変数をファイルに保存し、再起動後も値を維持できます。

💡 こんな場合に便利

⚙️ 設定パターン

パターン1: 全てをファイルに保存(シンプル)

全てのコンテキスト変数をファイルに保存します。

contextStorage: { default: { module: "localfilesystem" } },

パターン2: メモリとファイルの両方を使い分け(推奨)

一時的なデータはメモリに、永続化したいデータはファイルに保存します。

contextStorage: { default: "memoryOnly", memoryOnly: { module: "memory" }, file: { module: "localfilesystem" } },

📋 変数の保存先を指定する方法

パターン2の場合、変数を保存・取得する際にストアを指定します。

操作 メモリに保存(デフォルト) ファイルに保存
Changeノード flow.myData flow.myData #file
Functionノード(set) flow.set("myData", value) flow.set("myData", value, "file")
Functionノード(get) flow.get("myData") flow.get("myData", "file")

📌 ファイル保存の注意点

パターン3: ファイル保存の詳細設定

書き込み間隔やキャッシュの設定をカスタマイズできます。

contextStorage: { default: "memoryOnly", memoryOnly: { module: "memory" }, file: { module: "localfilesystem", config: { dir: "/home/user/.node-red/context", // 保存先ディレクトリ flushInterval: 30, // 書き込み間隔(秒) cache: true // キャッシュを有効化 } } },

✅ コンテキスト永続化の設定完了!

Node-REDを再起動した後、エディタの「コンテキストデータ」サイドバーでストアを確認できます。

🔧 5. その他の便利な設定 サブ

📋 ポート番号の変更(uiPort)

Node-REDのデフォルトポート(1880)を変更します。

uiPort: 1881, // 新しいポート番号

アクセスURL: http://localhost:1881/

📋 フローファイル名の変更(flowFile)

フローを保存するファイル名を変更します。

flowFile: 'my-flows.json',
📋 HTTPS(SSL/TLS)の有効化

セキュアな接続を有効にします。証明書ファイルが必要です。

https: { key: require("fs").readFileSync('/path/to/privkey.pem'), cert: require("fs").readFileSync('/path/to/cert.pem') }, // HTTPをHTTPSにリダイレクト requireHttps: true,
📋 エディタとノードのURL分離

エディタとHTTPノードのルートURLを分離します。

// エディタのURL: http://localhost:1880/editor/ httpAdminRoot: '/editor', // HTTPノードのURL: http://localhost:1880/api/xxx httpNodeRoot: '/api',
📋 Functionノードで外部モジュールを使用

Functionノード内でNode.jsモジュールを使用できるようにします。

// Functionノードの「設定」タブで外部モジュールを追加可能にする functionExternalModules: true, // または、グローバルコンテキストにモジュールを追加 functionGlobalContext: { os: require('os'), moment: require('moment') },

Functionノード内で使用:

const os = global.get('os'); msg.payload = os.hostname(); return msg;
📋 デバッグ出力の最大長

デバッグサイドバーに表示されるメッセージの最大文字数を設定します。

debugMaxLength: 10000, // デフォルトは1000
📋 ログレベルの変更

出力するログの詳細度を設定します。

logging: { console: { level: "info", // fatal, error, warn, info, debug, trace metrics: false, audit: false } },

🔧 6. トラブルシューティング

症状 原因 解決方法
Node-REDが起動しない settings.jsの構文エラー
  • カンマの過不足を確認
  • 括弧の対応を確認
  • バックアップから復元
「Projects disabled」と表示される Gitがインストールされていない、または設定が正しくない
  • git --versionで確認
  • editorTheme.projects.enabled の設定を確認
ログインできない パスワードハッシュが正しくない
  • node-red-admin hash-pwで再生成
  • ハッシュ文字列を正しくコピー
コンテキスト変数が保存されない contextStorageの設定ミス、またはストアの指定漏れ
  • 設定の構文を確認
  • Functionノードで"file"ストアを指定
設定変更が反映されない Node-REDを再起動していない Node-REDを完全に停止してから再起動

💡 構文エラーのデバッグ方法

settings.jsの構文エラーを確認するには:

node -c ~/.node-red/settings.js

エラーがなければ何も表示されません。エラーがあれば行番号とともに表示されます。

📚 7. 追加リソース

🔗 公式ドキュメント

📖 デフォルトのsettings.js

まだsettings.jsがない場合や、デフォルトの内容を確認したい場合:


このガイドは2025年1月時点の情報に基づいています。
最新の情報は公式ドキュメントを参照してください。

🏠