結論

n8n(エヌエイトエヌ)は、「ノード」と呼ぶ部品を画面上でつなぎ、アプリ間のデータ連携や定型作業を自動で流すワークフロー自動化ツールです。n8n社のクラウド(n8n Cloud)で使うほか、自分のサーバーに入れて(セルフホスト)無料で使えます。

この記事でわかること

  • Webhook→Code→HTTP Request→IF の最初のワークフローの作り方と実行結果
  • テストURLと本番URL・実行履歴・エラー原文の読み方と直し方
  • 料金・Zapier/Makeとの違い・ライセンスとセルフホストの設定

2026年10月29日更新|n8n 2.45.6・Node.js 24.22.2・Chromium 153で実行確認

n8n では、「何かが起きたら(トリガー)」「データをこう加工して」「別のサービスに送り」「条件で分ける」という流れを、箱(ノード)と線でつないで作ります。この記事では、注文データを受け取って合計を計算し、スコアを問い合わせ、ランクで通知先を分ける次のワークフローを、実際に作って動かしました。

flowchart TD
    W[Webhook<br>POST /webhook/order] --> C[Code<br>合計を計算]
    C --> H[HTTP Request<br>スコアを問い合わせる]
    H --> I{IF<br>rank が A?}
    I -->|true| V[HTTP Request<br>VIP担当に通知]
    I -->|false| S[Edit Fields<br>通常の受付]

よく調べられることの答えを先にまとめます。

知りたいこと 答え 詳しい節
n8nとは ノードをつないで業務を自動化するワークフローツール。読み方はエヌエイトエヌ n8nとは
n8n 使い方(最初の一歩) トリガーを置く→ノードを足す→Execute workflow で試す→Publish 最初のワークフローを作る
n8nは無料で使える? セルフホストの Community Edition は無料。Cloud は有料(試用あり) 料金と比較
n8n インストール方法 Docker か npm。2.45.6 は Node.js 24 以上が要る。npm での導入は 3.0 で非推奨 始め方・npmで起動
Webhookが404になる テストURLは Execute workflow の直後に1回だけ。本番URLは Publish が要る テストURLと本番URL
エラーの見方 Executions タブで失敗したノードと原文を見る 実行履歴・エラー・再試行
Zapier・Makeとの違い 課金の単位(実行1回/アクションごと)とセルフホストの可否 料金と比較
商用利用できる? 自社の業務には使える。顧客にワークフローを作らせるサービスは不可 ライセンス

確認環境:Ubuntu 24.04.5 LTS(2コア・メモリ 8GB)の上で、n8n 2.45.6(2026年10月29日公開の stable・latest)を作業フォルダーに npm install n8n で入れました。n8n 2.45.6 は Node.js 24 以上を求めるため、npm のレジストリにある node-linux-x64 パッケージから Node.js 24.22.2 を作業フォルダーに置いて使っています(npm 10.9.9)。利用統計・更新確認・テンプレート取得を止める環境変数を最初の起動より前に設定し、n8n を 127.0.0.1 のポート 45838 だけで起動しました。ワークフローの送り先は、Node.js の http モジュールで 127.0.0.1:45839 に立てた自作のモック API だけで、外部サービスの認証や外部への送信はしていません。画面の操作は Chromium(Chrome for Testing 153.0.8010.12・playwright 1.63.0)で行い、外部へのリクエストはブラウザ側で止めて記録しました。Docker での起動、n8n Cloud、AI Agent ノード、料金、ライセンスは n8n 公式ドキュメント・公式サイトで、Zapier・Make・Power Automate の料金は各社の公式ページで確かめています。図は mermaid 11.16.0 で描画を確かめました(確認日 2026年10月29日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「n8nとは?使い方を実行ログで解説|Webhook・料金・Zapier比較」

n8nとは(読み方・できること・仕組み)

この節では、n8n が何をするツールで、どこが他の自動化ツールと違うのかが分かります。

n8n は、トリガー(きっかけ)から始まる処理の流れ=ワークフローを、ノードをつないで作り、自動で動かすツールです。読み方は「エヌエイトエヌ」です。名前は「nodemation(node と automation を合わせた語)」を縮めたもので、2019年にドイツ・ベルリンで生まれました。開発元は n8n GmbH です。

箱をつなぐだけで動く一方、コードを書ける Code ノードや任意の API を呼べる HTTP Request ノードがあり、ノーコードとコードを混ぜられる点と、自分のサーバーで動かせる点が特徴です。

445個標準のノードn8n-nodes-base 2.45.5 の一覧
127個AI 系のノードn8n-nodes-langchain 2.45.5
413種認証情報の型標準ノードの credentials の数

数字は、手元の 2.45.6 に同梱された package.json に書かれたノードの数です。

1アプリをつなぐ

Slack・Gmail・Google スプレッドシート・Notion・kintone などのノードで、受け取る・書き込む・通知するを組み合わせる。

2コードで加工する

Code ノードで JavaScript(環境によって Python)を書き、データの整形や計算を1か所にまとめる。

3AI を組み込む

AI Agent ノードにチャットモデルとツールをつなぎ、問い合わせの分類や要約を流れの一部にする。

よくある使い方は、問い合わせの通知、毎朝の集計、受注データの別システムへの登録、社内文書の検索(RAG)の入口などです。

n8nの基本用語:ワークフロー・ノード・トリガー・実行

この節では、n8n の画面と公式ドキュメントに出てくる言葉の意味が、今回作ったワークフローの例つきで分かります。

用語 意味 今回の例
ワークフロー ノードと線でできた処理の流れ全体 注文受付フロー
ノード 1つの処理を担う箱 Code・HTTP Request・If
トリガー ワークフローを始めるきっかけのノード(稲妻の印) Webhook(POST を受けたら開始)
アイテム ノード間を流れるデータの1件。{ json: {...} } の形 注文1件=1アイテム
式(Expression) {{ }} の中に書く、前のノードの値を使う書き方 {{ $json.rank }}
実行(Execution) ワークフローが1回動いた記録 ID#5 が失敗、ID#65 が成功
認証情報(Credential) 外部サービスの鍵やトークンを暗号化して保存したもの 今回は使っていない
Publish ワークフローを本番として有効にする操作(2.x の画面) 本番URLが使えるようになる

n8n のノードは「アイテムの配列」を受け取り、「アイテムの配列」を返します。線の上の「1 item」は、その線を通ったアイテムの数です。

n8nの始め方:Cloud・Docker・npmのどれを選ぶか

この節では、n8n を使い始める3つの方法の違いと、どれを選ぶかの目安が分かります。

方法 向く人 手間 公式の位置づけ
n8n Cloud まず触りたい・サーバーを持ちたくない アカウントを作るだけ 設定や保守が要らない
Docker(Compose) 自社で長く動かす Docker とボリューム、DB の用意 セルフホストの推奨の方法
npm(npx) 手元で試す・Node.js に慣れている Node.js の版合わせ 3.0 から非推奨

公式ドキュメントは、セルフホストは主に経験のある人向けで、設定の誤りはデータの消失やセキュリティの問題につながると書いています。Docker で動かすときの公式の最小のコマンドは次のとおりです(公式ドキュメントのとおり。手元では Docker を起動していません)。

docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="Asia/Tokyo" \
 -e TZ="Asia/Tokyo" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -v n8n_data:/home/node/.n8n \
 n8nio/n8n

データは /home/node/.n8n に保存されるので、ボリュームを付けずに起動すると、コンテナを消したときにワークフローも消えます。PostgreSQL を使うときは DB_TYPE=postgresdb と DB_POSTGRESDB_HOST などを足します。PostgreSQL を使う場合も、暗号化の鍵が入る .n8n フォルダーは残すよう公式に書かれています。Compose ファイルの書き方は、関連記事「Docker Composeの使い方|compose.yamlの書き方と開発環境の作り方」で扱っています。

Node.js の版

やってはいけないインストール手順の記事に「Node.js 20.19〜24.x」とあるのを見て、Node.js 20 や 22 のまま最新版を入れる
→
代わりにnpm view n8n engines で入れる版の条件を見る。2.45.6 は node: '>=24.0.0' だった

公式の npm の手順ページは「20.19〜24.x」と書いているが、2.45.6 の package.json は 24 以上を求めていた(2026年10月29日時点)

npmでn8nをインストールして起動する(実行ログ)

この節では、n8n を npm で入れて 127.0.0.1 だけで起動するまでの手順と、実際に出たログが分かります。

起動の前に、データの保存先と外部への通信を止める環境変数を決めておきます。n8n は既定で利用統計(テレメトリー)を送り、新しい版を確かめに行きます(公式ドキュメント「Control telemetry」)。最初の起動でこれらが動くので、環境変数は最初の起動より前に設定しました。

1

入れる版の条件を見る

npm view n8n version engines で 2.45.6 と node: '>=24.0.0' が返った。Node.js 24 を用意した。

版の確認

2

環境変数を先に設定する

保存先・待ち受けるアドレス・利用統計などの停止を、先にシェルに読み込ませる。

最初の起動より前

3

npm でインストールする

作業フォルダーで npm install n8n。2,351個のパッケージが入り、4分かかった。

3.1GB

4

起動する

npx n8n start(グローバルに入れたなら n8n start)。「Editor is now accessible via」の行が出たらブラウザで開く。

7秒前後

5

オーナーのアカウントを作る

「Set up owner account」でメール・名前・パスワード(8文字以上、数字と大文字を含む)を入れる。

初回だけ

設定した環境変数です。N8N_DISABLED_MODULES=mcp-registry は、後で書く「起動時に n8n のサーバーへ一覧を取りに行く」動きを止めるために足しました。

export N8N_USER_FOLDER=/path/to/work/n8nhome      # 保存先(既定はホームの .n8n)
export N8N_LISTEN_ADDRESS=127.0.0.1 N8N_HOST=127.0.0.1 N8N_PORT=45838
export N8N_DIAGNOSTICS_ENABLED=false               # 利用統計を送らない
export N8N_VERSION_NOTIFICATIONS_ENABLED=false     # 新しい版を確かめに行かない
export N8N_TEMPLATES_ENABLED=false                 # テンプレートを取りに行かない
export N8N_DISABLED_MODULES=mcp-registry           # MCP サーバー一覧を取りに行かない
export N8N_RUNNERS_BROKER_PORT=45840               # Code ノード用の待ち受け(既定 5679)
export GENERIC_TIMEZONE=Asia/Tokyo                 # 既定は America/New_York だった

npm install n8n@2.45.6
npx n8n start

インストールと起動の出力です(重複した警告と移行の行を省いています)。

$ npm install n8n@2.45.6
npm warn deprecated uuid@10.0.0: uuid@10 and below is no longer supported. ...
npm warn deprecated alasql@4.4.0: There is a new patch version of AlaSQL for you. ...
added 2351 packages in 4m

$ npx n8n start
No encryption key found - Auto-generating and saving to: /path/to/work/n8nhome/.n8n/config
Initializing n8n process
n8n ready on 127.0.0.1, port 45838
n8n Task Broker ready on 127.0.0.1, port 45840
Failed to start Python task runner in internal mode. because its virtual environment is missing from this system. ...
There are deprecations related to your n8n setup. Please take the recommended actions to update your configuration:
 - N8N_RUNNERS_MODE -> Internal task runner mode is deprecated and will be removed in a future version. ...
 - Running n8n outside a container is deprecated. Future versions will require running n8n via the official Docker image. ...
Registered runner "JS Task Runner" (czmVzFtmOveOj-QEFohaU)
Version: 2.45.6

Editor is now accessible via:
http://127.0.0.1:45838
3.1GBnode_modules の大きさnpm のキャッシュは別に 1.3GB
7.0秒起動から応答まで2回目以降。初回は DB の移行が走る
710MB本体のメモリ(RSS)Code 用のランナーは別に 139MB

ログから読み取れることです。

  • 「No encryption key found - Auto-generating」は、初回に暗号化の鍵を作って .n8n/config に保存したという意味です。鍵を失うと、保存した認証情報が読めなくなります。
  • 「Task Broker」は Code ノードを別プロセス(JS Task Runner)で動かすための待ち受けで、既定のポートは 5679 でした。Python の Code ノードは、実行環境を別に用意しないと使えないという表示です。
  • 「Running n8n outside a container is deprecated」は、npm で直接動かす形が将来の版では使えなくなる予定だという告知です。公式の npm の手順ページにも「npm-based installs are deprecated from n8n 3.0」とあります。

Node.js の版を切り替える方法は、関連記事「Node.js バージョン管理|nvm・fnm・mise・Volta比較と実測」で扱っています。

最初の起動で n8n のサーバーへ通信しようとした

利用統計・更新確認・テンプレートを止めて起動しても、最初の起動では次のログが出ました。この環境は外部への接続が許可されていないため、403 で止まっています。

Error fetching from Strapi API (https://api.n8n.io/api/mcp-servers): Request failed with status code 403
A system task run failed

ソースコードを見ると、MCP サーバーの一覧を定期的に取りに行く処理でした。N8N_DISABLED_MODULES=mcp-registry を足すと、このログは出なくなりました。ソースには、画面のお知らせ(N8N_DYNAMIC_BANNERS_ENABLED)やコミュニティノードの検索の送り先としても api.n8n.io が書かれていました。社外に出られないネットワークで動かすときは、起動ログに外部の URL が出ていないかを最初に見ます。

最初のワークフローを作る:Webhook→Code→HTTP Request→IF

この節では、n8n の画面でワークフローを組み立てる操作と、各ノードの設定・出力が分かります。

注文の JSON を受け取り、合計を計算し、スコアを API に問い合わせ、ランク A なら VIP 担当に通知する流れです。送り先は 127.0.0.1:45839 の自作のモックです。

// モック API(Node.js の http モジュール。抜粋)
if (req.url === '/api/score' && req.method === 'POST') {
  const score = Math.min(100, Math.round(Number(j.total || 0) / 1000));
  return send(200, { customer: j.customer, score, rank: score >= 80 ? 'A' : score >= 40 ? 'B' : 'C' });
}
if (req.url === '/api/notify' && req.method === 'POST') return send(200, { ok: true, channel: j.channel || 'mock' });

画面での組み立て

  1. 1新しいワークフローを作り、名前を付ける左上の「My workflow」を押して「注文受付フロー」に変える
  2. 2「Add first step…」からトリガーを選ぶ「What triggers this workflow?」の一覧に Trigger manually・On a schedule・On webhook call・On form submission などが並ぶ。「Webhook」と打って Enter
  3. 3Webhook を設定するHTTP Method を POST、Path を order、Respond を「When Last Node Finishes」にする
  4. 4右の「+」から Code ノードを足す受け取った注文の合計を JavaScript で計算する
  5. 5HTTP Request ノードでモックに POST するMethod を POST、URL を入れ、Send Body で JSON を式で組み立てる
  6. 6If ノードで分ける条件を {{ $json.rank }} is equal to A にする
  7. 7true 側と false 側に続きをつなぐtrue に通知用の HTTP Request、false に Edit Fields(Set)
  8. 8保存して試すCtrl+S で保存し、「Execute workflow」を押してからテストURLに送る

手元では Webhook を一覧から追加し、残りの4つのノードは JSON を Ctrl+V でキャンバスに貼り付け(公式ドキュメントにある方法)、出力の丸から入力へドラッグしてつなぎました。

Code ノード:合計を計算する

Webhook ノードは、受け取った本文を body、ヘッダーを headers に入れて渡します。Code ノード(Run Once for All Items)で、全アイテムを読んで新しいアイテムの配列を返します。

const out = [];
for (const item of $input.all()) {
  const b = item.json.body;
  const total = b.items.reduce((sum, x) => sum + x.qty * x.price, 0);
  out.push({ json: {
    orderId: b.orderId,
    customer: b.customer.trim(),
    email: b.email.toLowerCase(),
    total,
  } });
}
return out;

戻り値は { json: {...} } を並べた配列にします。出力は表で「A-1001/山田商店/buyer@example.test/84000」となり、名前の前後の空白が消え、メールアドレスが小文字になりました。

HTTP Request ノード:前のノードの値で本文を作る

Send Body を JSON にして、本文を式で組み立てました。$json は直前のノードの出力、$('合計を計算').item.json は名前を指定したノードの出力です。

URL       : http://127.0.0.1:45839/api/score
Method    : POST
Body (JSON): {{ JSON.stringify({ customer: $json.customer, total: $json.total }) }}

通知側(true の先):
{{ JSON.stringify({ channel: 'vip', orderId: $('合計を計算').item.json.orderId, score: $json.score }) }}

HTTP Request の出力は API の応答(customer・score・rank)に置き換わり、orderId は消えるため、後ろでは $('合計を計算') で取り直しています。

テスト実行の結果

「Execute workflow」を押すと、Webhook に「Waiting for you to call the Test URL」と出て待ち状態になります。この状態でテストURLに注文を送りました。

$ curl -X POST -H 'Content-Type: application/json' \
  -d '{"orderId":"A-1001","customer":"  山田商店 ","email":"Buyer@Example.TEST","items":[{"sku":"P-1","qty":3,"price":24000},{"sku":"P-2","qty":1,"price":12000}]}' \
  http://127.0.0.1:45838/webhook-test/order
{"ok":true,"channel":"vip"}          ← 335ms
ノード 出力(1 item)
Webhook headers・params・query・body・webhookUrl・executionMode: test
合計を計算 orderId A-1001・customer 山田商店・total 84000
スコアを問い合わせる customer 山田商店・score 84・rank A
ランクAか True Branch (1 item)・False Branch は空
VIP担当に通知 ok true・channel vip

通ったノードに緑のチェックが付き、「Workflow executed successfully」と出ました。モックのログには n8n からの2回の POST が残りました。

POST /api/score  ua=n8n body={"customer":"山田商店","total":84000}
POST /api/notify ua=n8n body={"channel":"vip","orderId":"A-1001","score":84}

なお、Code ノードの編集画面を開くと、ブラウザが playgroundcdn.typescriptlang.org から TypeScript の型定義ファイルを読みに行きました。手元では外部への通信を止めていたため、コンソールに error TS6231 が出ましたが、コードの保存と実行には影響しませんでした。

テストURLと本番URL(Publish)の違い

この節では、Webhook の2つの URL の違いと、本番で動かすための Publish の操作、そのときの応答の原文が分かります。

テストURL 本番URL
形 /webhook-test/order /webhook/order
使える条件 Execute workflow を押した直後の1回だけ Publish したあと、いつでも
結果の見え方 キャンバスに各ノードの出力が出る キャンバスには出ない。Executions の一覧で見る
executionMode test production

Publish の前に送ると404

待ち状態にしないままテストURLに送った応答と、Publish の前に本番URLに送った応答です(stacktrace の行を省いています)。

$ curl -i -X POST ... http://127.0.0.1:45838/webhook-test/order
HTTP/1.1 404 Not Found
{"code":404,"message":"The requested webhook \"order\" is not registered.",
 "hint":"Click the 'Execute workflow' button on the canvas, then try again. (In test mode, the webhook only works for one call after you click this button)"}

$ curl -i -X POST ... http://127.0.0.1:45838/webhook/order
HTTP/1.1 404 Not Found
{"code":404,"message":"The requested webhook \"POST order\" is not registered.",
 "hint":"The workflow must be active for a production URL to run successfully. You can activate the workflow using the toggle in the top-right of the editor. ..."}

2.45.6 の画面には切り替えのトグルは無く、右上の「Publish」ボタンを押します。Publish を押すと「Publish workflow」の画面が開き、Version name(既定は「Version 1b19c233」のような名前)と、変更の説明を入れて公開します。公開すると「Workflow published/You can now make calls to your production webhook URL.」と表示され、ボタンが「Published」に変わりました。404 の hint の文言はトグルのままなので、2.x では「Publish」と読み替えます。

Publish の後に本番URLへ送る

$ curl -X POST -H 'Content-Type: application/json' --data @order-a.json http://127.0.0.1:45838/webhook/order
{"ok":true,"channel":"vip"}
$ curl -X POST -H 'Content-Type: application/json' --data @order-c.json http://127.0.0.1:45838/webhook/order
{"orderId":"A-1002","status":"normal"}
$ curl http://127.0.0.1:45838/webhook/order
{"code":404,"message":"This webhook is not registered for GET requests. Did you mean to make a POST request?"}

合計 3,000円の注文はランク C になり、false 側の「通常の受付」の出力がそのまま応答になりました。Respond を「When Last Node Finishes」にしたので、最後に動いたノードの出力の最初の1件が返ります。同じ注文を30回ずつ続けて送ったときの応答時間です。

注文 通った経路 中央値 90パーセンタイル
ランク A(84,000円) HTTP Request を2回 79.4ms 118.1ms
ランク C(3,000円) HTTP Request を1回 63.0ms 94.6ms

Respond の選択肢は Immediately(「Workflow got started」をすぐ返す)・When Last Node Finishes・Using 'Respond to Webhook' Node・Streaming の4つです。本文の上限は 16MB で、セルフホストでは N8N_PAYLOAD_SIZE_MAX で変えられます(公式ドキュメント)。

Webhook の受け手を作るときの署名の確かめ方や再送への備えは、関連記事「Webhookとは?実装までわかる|署名検証・リトライ・冪等性を実行ログで解説」で扱っています。

実行履歴・エラー・再試行(Executions)

この節では、n8n の実行履歴の見方、ワークフローが失敗したときの表示の原文、止めずに続ける設定が分かります。

本番URLで動いた結果は、ワークフローの「Executions」タブに1件ずつ残ります。一覧には「Oct 29, 22:07:08/Succeeded in 28ms」のように開始時刻と所要時間が並び、1件を開くと「Succeeded in 28ms | 6KB | ID#65 | Version 1b19c233」と、データの大きさ・実行の ID・動いた版が表示されました。

入力の形が違うと Code ノードで止まる

items の無い注文を本番URLに送ると、送った側には次の応答が返りました。

$ curl -i -X POST -H 'Content-Type: application/json' \
  -d '{"orderId":"A-1003","customer":"鈴木","email":"s@example.test"}' http://127.0.0.1:45838/webhook/order
HTTP/1.1 500 Internal Server Error
{"message":"Error in workflow"}

応答だけでは原因が分かりません。Executions を開くと「Error in 47ms」の行があり、キャンバスの「合計を計算」が赤い枠になって、右下に次のように出ていました。

Problem in node ‘合計を計算‘
Cannot read properties of undefined (reading 'reduce') [line 4]

ノードを開くと、INPUT に実際に届いた本文(items が無い)が、OUTPUT に「TypeError」と行番号が出ます。実行の画面の右上には「Debug in editor」のボタンもありました。公式ドキュメントでは、失敗した実行のデータをエディターに読み込んで直す機能で、メールアドレスを登録した Community 版(Registered Community)で使える機能とされています。

送り先が止まっていると HTTP Request で止まる

モック API を止めて送ると、HTTP Request ノードが次の原文で失敗しました(実行データに保存された内容)。

ECONNREFUSED
The service refused the connection - perhaps it is offline
NodeApiError: The service refused the connection - perhaps it is offline

Retry On Fail と On Error で止まらない流れにする

ノードの「Settings」タブに、失敗したときの動きを決める項目があります。3回に2回 503 を返す API と、必ず 500 を返す API で試しました。

{ "name": "不安定なAPI", "type": "n8n-nodes-base.httpRequest",
  "retryOnFail": true, "maxTries": 3, "waitBetweenTries": 1000 }
{ "name": "500を返すAPI", "type": "n8n-nodes-base.httpRequest",
  "onError": "continueErrorOutput" }
13:08:31.247Z GET /api/flaky   ← 503
13:08:32.258Z GET /api/flaky   ← 503(約1秒後に再試行)
13:08:33.265Z GET /api/flaky   ← 200(3回目で成功)
13:08:33.276Z GET /api/boom    ← 500

500を返すAPI の OUTPUT:「Execution will continue even if the node fails」
Error Branch (1 item)  message: 500 - "{\"error\":\"internal error from mock\"}"
失敗を記録 の出力:alert = 失敗: 500 - "{\"error\":\"internal error from mock\"}"
1

Retry On Fail

失敗したら同じノードをやり直す。Max Tries と Wait Between Tries(ミリ秒)を決める。

一時的な 503 に効く

2

On Error:Stop Workflow

既定。そのノードで止まり、実行は Error になる。

応答は Error in workflow

3

Continue (using error output)

ノードに Success と Error の2つの出口ができ、失敗を別の流れで処理できる。

記録・通知に回す

4

Error Workflow

ワークフローの設定で、失敗したときに動かす別のワークフローを指定する。

画面の Production Checklist にも出る

実行データはどれだけ残るか

手元の 2.45.6 のソースコード(executions の設定)では、既定で成功・失敗・手動の実行をすべて保存し、336時間(14日)より前か 10,000件を超えた分を消す設定でした。テスト実行(mode が manual)も保存されていました。保存量を減らすときは EXECUTIONS_DATA_MAX_AGE や EXECUTIONS_DATA_SAVE_ON_SUCCESS で調整します。

n8nのワークフローJSONの中身とインポート・エクスポート

この節では、ワークフローが JSON でどう保存されているかと、ほかの環境へ移す方法、共有するときの注意が分かります。

画面の「…」メニューの Download でも保存できますが、手元ではサーバーのコマンドで書き出しました。

$ npx n8n export:workflow --id=8r0y19WMGCQ4LejN --output=order-flow.json --pretty
Successfully exported 1 workflow.

$ npx n8n import:workflow --input=retry.json
Importing 1 workflows...
Successfully imported 1 workflow.

$ npx n8n list:workflow
8r0y19WMGCQ4LejN|注文受付フロー
GYjpGJsJbJaH64dE|再試行とエラー処理の確認

書き出した JSON(6,195バイト)の中心の部分です。

{
  "name": "注文受付フロー",
  "active": true,
  "nodes": [
    {
      "parameters": { "httpMethod": "POST", "path": "order", "responseMode": "lastNode", "options": {} },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.2,
      "position": [0, 0],
      "id": "3903064c-1391-421a-a108-554620344686",
      "name": "Webhook",
      "webhookId": "bb7edf49-d398-4039-b5f7-ba72f57ca655"
    }
  ],
  "connections": {
    "Webhook": { "main": [[{ "node": "合計を計算", "type": "main", "index": 0 }]] },
    "ランクAか": { "main": [
      [{ "node": "VIP担当に通知", "type": "main", "index": 0 }],
      [{ "node": "通常の受付", "type": "main", "index": 0 }]
    ] }
  },
  "settings": { "executionOrder": "v1", "binaryMode": "separate" },
  "versionId": "1b19c233-c179-454a-b7e9-1e50df3c7b6e",
  "activeVersionId": "1b19c233-c179-454a-b7e9-1e50df3c7b6e"
}
キー 中身
nodes ノードの一覧。type(種類)、typeVersion(ノードの版)、parameters(画面で入れた設定)、position(座標)
connections ノードの名前をキーにした接続。If の true は1つ目、false は2つ目の配列
settings 実行順(v1)などワークフローの設定
versionId・activeVersionId 今の版と、Publish された版。画面の「Version 1b19c233」と同じ値
webhookId Webhook ノードの識別子

接続はノードの名前で結ばれているので、JSON を手で書き換えてノード名を変えるときは、connections と式の中の $('合計を計算') も一緒に直します。画面で名前を変えれば、n8n が合わせて直します。

JSON を共有するとき

やってはいけない書き出した JSON を、中身を見ないままチャットや公開リポジトリに貼る
→
代わりに認証情報の名前と ID、cURL から取り込んだ HTTP Request の認証ヘッダー、社内の URL を消すか置き換えてから渡す

公式ドキュメントは、書き出した JSON に認証情報の名前と ID が入ること、共有前に消すか匿名化することを書いている

公式ドキュメントでは、インスタンス間でワークフローを移す方法として、新しい n8n CLI(n8n-cli パッケージ、プレビュー)の .n8np 形式を勧めています。今回使った export:workflow・import:workflow はサーバー側のコマンドで、新しく使うことは勧めない、将来は廃止を予定している、と書かれています(日付は未定)。

n8nのAIエージェント(AI Agentノード)

この節では、n8n で AI を組み込む方法と、使うときに要るものが分かります。手元では外部の AI サービスに接続していないため、公式ドキュメントで確かめた範囲です。

  • AI Agent ノードは、チャットモデルと1つ以上のツールをつなぎ、どのツールを呼ぶかをモデルが決めて作業を進めるノードです。公式ドキュメントでは、ツールのサブノードを少なくとも1つつなぐことが必須とされています。
  • 以前の版にあった「エージェントの種類」の設定は 1.82.0 から非推奨で、すべて Tools Agent として動きます。設定の残る v1 のノードは 3.0 で削除される予定です。
  • 2.x には「Agent Builder」もあり、モデル・メモリー・ツール(ワークフロー・コード・MCP サーバーなど)を組み合わせます。セルフホストでは 2.32.3 以降で使えます。
  • チャットモデルを使うには、OpenAI などの提供元の認証情報(API キー)を n8n に登録します。モデルの利用料は n8n の料金とは別にかかります。

手元の 2.45.6 では、オーナーを登録した直後に「Build and debug faster with the n8n Assistant(Preview)」の画面が出て、ホームには「Build an agent」「Build a workflow」の2つの入口が並びました。外部への送信を避けるため、N8N_AI_ENABLED=false を設定し、「Set up later in Settings」で先へ進めています。

AI エージェントと決まった手順で動くワークフローの違いは、関連記事「AIエージェントとは|仕組みとワークフローとの違い・作り方入門」で扱っています。

n8nの料金とZapier・Make・Power Automateとの違い

この節では、n8n の料金プランと、ほかの自動化ツールとの課金の違い、どれを選ぶかの目安が分かります。

n8n の有料プランは「ワークフローの実行回数」で決まり、何ステップあっても1回の実行は1と数えます。公式の料金ページ(2026年10月29日時点、年払いの表示)です。

プラン 料金(年払い) 実行回数/月 動かす場所
Community Edition 無料 制限なし(自分のサーバーの性能しだい) セルフホスト
Starter €20/月 2,500 n8n Cloud
Pro €50/月 10,000 n8n Cloud
Business €667/月 40,000 セルフホストのみ
Enterprise 問い合わせ 個別 Cloud かセルフホスト

どのプランもユーザー数とワークフロー数は無制限です。月払いの切り替えはあり、年払いは「Save 17%」と表示されていました。Cloud の試用は 1,000回の実行が含まれます。Business のライセンスキーは、毎日 n8n のライセンスサーバーに実行回数を含む情報を送る仕組みです。

他のツールとの比較

項目 n8n Zapier Make Power Automate
動かす場所 Cloud・セルフホスト クラウド クラウド クラウド・デスクトップ
課金の単位 ワークフローの実行1回 成功したアクション1つで1タスク アクションごとのクレジット(多くは1) ユーザーかボットごとの月額
無料の範囲 セルフホストは無料 月100タスク・2ステップまで 月1,000クレジット 30日の試用
有料の入口 €20/月(年払い) $19.99/月から 公式ページに金額の表示なし $15/ユーザー/月(年払い)

Zapier はトリガーや Filter・Formatter などをタスクに数えません。Make の料金ページは、確認した時点でプラン名(Core・Pro・Teams・Enterprise)と無料の 1,000クレジットは表示されましたが、有料プランの金額は読み取れませんでした。料金は変わるので、契約前に公式ページで確かめます。

差が出るのはステップの多いワークフローです。トリガーのあとに9つの処理がある流れを月1,000回動かすと、n8n では1,000回の実行、Zapier では最大で9,000タスク(成功したアクションの数)、Make では処理の数に応じて9,000クレジット前後になります。

判断表

状況 選ぶもの 理由
まず試したい・サーバーの担当がいない n8n Cloud の試用 インストールが要らず、画面の操作はセルフホストと同じ
個人や検証で手元のPCで動かす Docker(または npx) 無料。データは手元に残る
社内で長く動かす・個人情報を扱う セルフホスト(Docker Compose+PostgreSQL) データの置き場所を自社で決められる
SSO・Git 連携・複数環境が要る Business・Enterprise Community Edition には無い機能
2〜3ステップの通知を少し動かす Zapier の無料プランも候補 月100タスクの範囲なら費用がかからない
顧客がワークフローを作れるサービスを作りたい n8n とは別の契約を相談 Sustainable Use License の範囲を超える

n8nのライセンス(Sustainable Use License)と商用利用

この節では、セルフホストの n8n を無料で使える範囲と、使えない使い方が分かります。

n8n のセルフホスト版は、オープンソースのライセンスではなく、n8n 社の「Sustainable Use License」で配布されています。手元に入った n8n 2.45.6 の LICENSE.md にも全文があり、使用と改変は「自社の内部の業務目的、または非商用・個人の利用」に限る、と書かれています。ファイル名に .ee. を含むソースは、別の n8n Enterprise License の対象です。

使える(公式 FAQ の例)

自社の業務を自動化する

顧客向けにワークフローを作る・保守する・研修をして料金を受け取る

自社製品の裏側の処理として使い、利用者はワークフローを触らない

使えない(公式 FAQ の例)

n8n をホストして、顧客がワークフローを作れるサービスにする

自社製品の画面・API・MCP・AI エージェント経由で、外部の人にワークフローを組ませる

ブランドを消して自社製品として売る(ホワイトラベル)

公式の FAQ は、決め手は「誰の認証情報を使うか」ではなく「誰がワークフローの中身を決めるか」だとしています。迷う使い方は FAQ の窓口(license@n8n.io)で確かめます。n8n Cloud は Cloud の利用規約に従います。

セルフホスト運用で決めておく設定(外部通信・タイムゾーン・SSRF)

この節では、n8n を自分のサーバーで動かすときに、最初に決めておく環境変数と、手元で変えたときの結果が分かります。

環境変数 既定(2.45.6) 手元で変えた結果
N8N_DIAGNOSTICS_ENABLED true(利用統計を送る) false で起動
N8N_VERSION_NOTIFICATIONS_ENABLED true(新しい版を確かめる) false で起動
N8N_TEMPLATES_ENABLED true(テンプレートを取得) false で起動
GENERIC_TIMEZONE America/New_York($now が -04:00) Asia/Tokyo で $now が +09:00 になった
N8N_SSRF_PROTECTION_ENABLED false true で 127.0.0.1 宛ての HTTP Request が止まった
N8N_SSRF_ALLOWED_IP_RANGES 空 127.0.0.1/32 を足すと通った
NODE_ENV 未設定(開発扱い) production で 404 の応答から stacktrace が消えた

タイムゾーンは最初に変えます。何も設定しないまま Code や If の式で $now を見ると 2026-10-29T09:05:45.094-04:00 と出ました。GENERIC_TIMEZONE=Asia/Tokyo で起動し直すと 2026-10-29T22:09:58.392+09:00 になりました。Schedule Trigger(決まった時刻に動かすトリガー)の時刻も、この設定で決まります。

SSRF 保護(ワークフローから社内のアドレスに勝手に通信させない仕組み)を有効にすると、127.0.0.1 宛ての HTTP Request は次の原文で失敗しました。許可するアドレスを足して起動し直すと、同じワークフローが200で動きました。

N8N_SSRF_PROTECTION_ENABLED=true
→ The request was blocked because it resolves to a restricted IP address

N8N_SSRF_PROTECTION_ENABLED=true N8N_SSRF_ALLOWED_IP_RANGES=127.0.0.1/32
→ {"ok":true,"channel":"vip"}

404 の応答に含まれていた stacktrace(サーバー内のファイルの場所が分かる情報)は、ソースコードでは NODE_ENV が未設定か development のときだけ付ける作りでした。NODE_ENV=production で起動すると、応答は code・message・hint だけになりました。

データの保存場所とバックアップ

$ ls -la n8nhome/.n8n
-rw-------  config                 ← 暗号化の鍵(encryptionKey)
-rw-r--r--  database.sqlite        ← ワークフロー・実行履歴・ユーザー(SQLite)
-rw-r--r--  database.sqlite-wal
-rw-r--r--  n8nEventLog.log        ← 監査などのイベントのログ(JSON 1行ずつ)
drwxr-xr-x  nodes                  ← コミュニティノードの置き場
drwxr-xr-x  storage
  • 1config の鍵と DB を一緒に残す鍵を失うと認証情報が読めない。環境変数 N8N_ENCRYPTION_KEY で鍵を渡す方法もある
  • 2長く動かすなら PostgreSQL にする既定は SQLite。DB_TYPE=postgresdb と接続先の変数を設定する
  • 3外から Webhook を受けるなら HTTPS の中継を置くリバースプロキシの後ろに置き、公開の URL を N8N_WEBHOOK_URL で伝える。2.45.6 のソースでは WEBHOOK_URL は非推奨で、N8N_WEBHOOK_URL を使うよう案内が出る
  • 4待ち受けるアドレスを絞るN8N_LISTEN_ADDRESS=127.0.0.1 にすると、同じサーバーの中からしか開けない
  • 5更新の前にバックアップと告知を読む起動ログの deprecations に、将来の版で変わる既定値が並ぶ

n8nのよくあるエラー/つまずき

この節では、n8n を入れて動かすまでに手元で実際に出たエラーの原文と、原因・直し方が分かります。

表示(原文) 原因 直し方
The requested webhook "order" is not registered. テストURLに、待ち状態にしないまま送った Execute workflow を押してから1回送る
The requested webhook "POST order" is not registered. 本番URLに送ったが Publish していない 右上の Publish を押す
This webhook is not registered for GET requests. Did you mean to make a POST request? HTTP メソッドが Webhook の設定と違う 送る側か HTTP Method を合わせる
{"message":"Error in workflow"}(500) ワークフローの途中のノードが失敗した Executions で赤いノードを開く
Cannot read properties of undefined (reading 'reduce') [line 4] Code ノードに届いたデータの形が想定と違う INPUT を見て、無い場合の処理を書く
The service refused the connection - perhaps it is offline HTTP Request の送り先が起動していない・URL の誤り 送り先と URL・ポートを確かめる
The request was blocked because it resolves to a restricted IP address SSRF 保護が社内のアドレス宛てを止めた 許可するアドレスを N8N_SSRF_ALLOWED_IP_RANGES に足す
Editing in another tab/Cannot update workflow - you have this workflow open in another tab(409) 同じワークフローを別のタブで開いている 使わないタブを閉じるか「Edit here」を押す
Your Node.js version … is currently not supported by n8n. Node.js の版が engines の条件に合わない(2.45.6 は 24 以上) Node.js 24 に上げるか Docker で動かす
Error fetching from Strapi API (…/api/mcp-servers): … 403 外部に出られない環境で、MCP の一覧を取りに行った N8N_DISABLED_MODULES=mcp-registry
npm install の途中で Killed(終了コード 137) メモリー不足。手元ではメモリー上のフォルダー(tmpfs)に入れたときに起きた ディスク上のフォルダーに入れる・メモリーを空ける

Node.js の版の文言は起動用スクリプト(bin/n8n)に書かれた内容です。Killed のときは、カーネルのログに Memory cgroup out of memory が残っていました。

よくある質問

Q. n8n の読み方は? A. 「エヌエイトエヌ」です。nodemation を縮めた名前で、n と n の間に8文字あることから n8n と書きます。

Q. n8n は無料で使えますか? A. 自分のサーバーやPCで動かすセルフホストの Community Edition は無料です。n8n Cloud は有料で、試用期間があります。セルフホストでも、サーバー代や連携先の API の料金は別にかかります。

Q. 画面は日本語に切り替えられますか? A. 手元の 2.45.6 では、ブラウザの言語を日本語にしても画面は英語でした。ノード名は日本語で付けられ、今回も「合計を計算」などの名前で動いています。

Q. プログラミングの知識は要りますか? A. つなぐだけなら書かずに作れます。データの整形や複雑な条件では、Code ノードの JavaScript と {{ $json.xxx }} の式が読めると楽になります。

Q. Zapier と n8n はどちらを選べばよいですか? A. ステップや実行回数が多い・データを社外に置きたくないなら n8n、サーバーを持たず短い連携をするなら Zapier が向きます。

Q. Dify と n8n の違いは? A. Dify は LLM を使ったチャットや AI アプリを作ることが中心のツールで、n8n は業務システム同士の連携が中心で、AI も部品の1つとして使えます。Dify の使い方は、関連記事「Difyの使い方|ワークフローの作り方とノード一覧」で扱っています。

Q. Docker と npm のどちらで入れるべきですか? A. 長く動かすなら Docker です。npm での導入は 3.0 で非推奨とされ、2.45.6 の起動ログにも同じ告知が出ました。

Q. 会社の業務で使ってもよいですか? A. 自社の業務の自動化には使えます。顧客がワークフローを作れるサービスとして提供する、ブランドを消して売る、といった使い方はライセンスの範囲外です。

Q. ワークフローや実行履歴はどこに保存されますか? A. 既定では ~/.n8n/database.sqlite(SQLite)で、鍵は同じフォルダーの config です。保存先は N8N_USER_FOLDER で変えられます。

Q. 手元の n8n で外部サービスの Webhook を受けるには? A. 外から届く HTTPS の URL が要ります。サーバーに公開するか、トンネルのサービスで手元のポートを公開し、その URL を N8N_WEBHOOK_URL に設定します(2.45.6 では以前の WEBHOOK_URL は非推奨の扱いでした)。トンネルの使い方は、関連記事「ngrokとは|使い方・料金・Webhook受信とエラーの直し方」で扱っています。

まとめ

  • n8n は、トリガーとノードをつないで業務を自動化するワークフローツール。Cloud でも、自分のサーバー(無料の Community Edition)でも使える。
  • 2.45.6 は Node.js 24 以上が要り、npm で入れると 2,351個・3.1GB。起動前に保存先・待ち受けアドレス・利用統計などの環境変数を決め、タイムゾーンは Asia/Tokyo にする。
  • テストURLは Execute workflow の直後に1回だけ、本番URLは Publish の後に使える。本番の結果は Executions タブで見る。
  • 失敗は「Error in workflow」の500で返るので、Executions で赤いノードの INPUT と原文を見る。Retry On Fail とエラー出力で止まらない流れにできる。
  • 課金はワークフローの実行1回単位で、ステップの多い流れほど Zapier・Make との差が出る。顧客にワークフローを作らせる使い方はライセンスの範囲外。

参考・出典

確認日はいずれも 2026年10月29日です。

  • n8n Docs「Install with npm」:https://docs.n8n.io/deploy/host-n8n/install-options/install-with-npm.md
  • n8n Docs「Docker」:https://docs.n8n.io/hosting/installation/docker/
  • n8n Docs「Choose how to use n8n」:https://docs.n8n.io/choose-how-to-use-n8n.md
  • n8n Docs「Control telemetry」:https://docs.n8n.io/deploy/host-n8n/configure-n8n/security/control-telemetry.md
  • n8n Docs「Webhook node」:https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook.md
  • n8n Docs「Export and import workflows」:https://docs.n8n.io/build/manage-workflows/export-and-import.md
  • n8n Docs「AI Agent」:https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent.md
  • n8n Docs「Build and manage agents」:https://docs.n8n.io/build/build-and-manage-agents.md
  • n8n Docs「Sustainable Use License」:https://docs.n8n.io/n8n-community-license/sustainable-use-license.md
  • n8n Docs「License FAQ」:https://docs.n8n.io/n8n-community-license/community-license/license-faq.md
  • n8n「Pricing」:https://n8n.io/pricing/
  • npm「n8n」:https://www.npmjs.com/package/n8n
  • Zapier「Pricing」:https://zapier.com/pricing
  • Make「Pricing」:https://www.make.com/en/pricing
  • Microsoft「Power Automate pricing」:https://www.microsoft.com/en-us/power-platform/products/power-automate/pricing
  • Wikipedia「n8n」:https://en.wikipedia.org/wiki/N8n

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「n8nとは?使い方を実行ログで解説|Webhook・料金・Zapier比較」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?