3行でいうと
- Webhookノードには、テスト用のURLと本番用のURLがあります。本番のURLは、ワークフローを公開してから使えます。認証は「Basic auth」「Header auth」「JWT auth」「None」から選びます。
- 呼ぶ相手を絞るオプションとして、「IP(s) Allowlist」「Only Run If」「Ignore Bots」「Allowed Origins (CORS)」などが公式に書かれています。
- Slackは、アクセストークンとOAuth2で使える範囲が違います(Slack Triggerはアクセストークンが必要で、OAuth2では動かない)。
- セルフホストでは、外から届くURLの設定(
N8N_WEBHOOK_URL)、SSL、認証、ノードの制限、SSRF対策など、公式が項目を挙げています。 - この記事は、使って確かめた記録ではありません。画面や設定名は版で変わります。
この記事は、公式の資料を2026年10月25日に読んでまとめたものです。この記事は、実際に使って確かめた記録ではありません。手順は「公式の手順を順に並べたもの」で、設定例は「公式の例(要約を介して取得したため、全文は公式ページで確認)」か、「公式の記載に合わせて、この記事で組んだ例(動作は確かめていません)」のどちらかを、そのつど書きます。システムに設定や権限を登録する操作は、原文を見て写すようにしてください。画面の表記は版によって変わるので、手元の画面と照らして読んでください。
先に結論
- Webhookは、公開するまで本番のURLが使えません。 テストのURLは、「Listen for test event」を押してから120秒だけ待ち受けます(公式の記述)。
- セルフホストで外から届く範囲を決める手段は、公式が項目を並べています。 この記事は、優先順位や「これで十分」という判断は書かず、公式の項目を並べます。
- Slackは、使うノードで認証の方式が違います。 Slack Triggerはアクセストークン、Slackのノードは公式が OAuth2 を recommended と書きます。
前提:用語をそろえる
- MCP:08で扱った、AIのツールが外のデータや機能につながるための共通の規格です。
- オーナー/管理者:n8nで、インスタンスの設定を変えられる権限の人です。
- Webhook:他のアプリが、決まったURLにリクエストを送ってきて、ワークフローを始める仕組みです。
- リバースプロキシ:n8nの前に置く、中継のサーバーです。HTTPSを受けて、n8nに渡します。
連携の地図
| 連携 | 向き | n8nの側の設定 | 認証 | 節 |
|---|---|---|---|---|
| Webhook | 外のアプリ → n8n | Webhookノード | Basic auth/Header auth/JWT auth/None | K |
| Slackなど外のアプリのノード | n8n ⇄ アプリ | 認証情報を作る | アプリごと | L |
K:Webhookで、外のアプリがn8nを呼ぶ
公式の「Webhook」と「Respond to Webhook」の記述です。
K-1. 手順:作る
- 「Add first step」から「Webhook」のノードを選ぶ。
- 「HTTP Method」:DELETE、GET、HEAD、PATCH、POST、PUT。
- 「Path」:既定はランダム。自分で決められ、
/:variableのようなルートのパラメーターも使える。 - 「Authentication」:「Basic auth」「Header auth」「JWT auth」「None」。
- 「Respond」:
- 「Immediately」:応答コードと、「Workflow got started.」のメッセージを返す。
- 「When Last Node Finishes」:最後に動いたノードの出力を返す。
- 「Using 'Respond to Webhook' Node」:「Respond to Webhook」ノードの定義どおりに返す。
- 「Streaming response」:動いている間、データを流す。AI Agentのような、ストリーミングに対応するノードが要る。
K-2. 認証の設定
公式の「Webhook credentials」の記述です。
| 方式 | 項目 |
|---|---|
| Basic auth | 「Username」、「Password」 |
| Header auth | 「Name」(ヘッダーの名前)、「Value」(値) |
| JWT auth | JWTの認証情報(鍵の種類は「Passphrase」か「PEM Key」)。項目は、公式のJWTの認証情報のページを見る |
| None | 項目なし。URLを知る人は誰でも呼べる |
K-3. 呼び出す相手を絞るオプション
「Add Option」から足します(公式の記述)。
- 「IP(s) Allowlist」:許可するIPアドレスのコンマ区切りの一覧。それ以外は403。空なら、すべて許可。
- 「Only Run If」:リクエスト(
{ body, headers, params, query })に対する式。真のときだけ動く。合わない呼び出しは、200で返り、実行されない。式が評価できないときは、警告を出して許可する。IPの許可リストと認証のあとに行われる。 - 「Ignore Bots」:リンクのプレビューやクローラーのようなボットを無視する。
- 「Allowed Origins (CORS)」:許可するドメイン。既定の
*はすべて許可。 - 「Raw Body」:JSONやXMLなどを、そのままの形で受け取る。
- 「Binary Property」:画像や音声のようなファイルを受け取り、指定した名前の項目に入れる。POST、PATCH、PUTで使える。
- ペイロードの上限は16MBで、セルフホストでは
N8N_PAYLOAD_SIZE_MAXで変えられる。
K-4. テストのURLと本番のURL
- Test URL:「Listen for test event」(または「Execute workflow」)を押してから、120秒だけ有効。データはエディターに表示される。
- Production URL:ワークフローを保存して公開すると、登録される。データはエディターに出ない。「Executions」のタブで見る。
- 自分のパソコン(localhost)でセルフホストしていて、外のサービスからテストするには、公式は、トンネルのモード(npmかDockerの入れ方のオプション)を挙げています。公式のnpmのページは、トンネルはローカルの開発とテスト専用で、本番用ではない、と書いています(05参照)。Webhookのページには、この注意の記載が見つかりませんでした。
K-5. 呼ぶ側の例(この記事の案)
下は、公式の記載に合わせてこの記事で組んだ例で、動作は確かめていません。Test URLを使うときは、先に「Listen for test event」を押します。<Test URL> は、ノードに表示されるURLです。
curl -X POST "<Test URL>" \
-H "Content-Type: application/json" \
-d '{"message":"hello"}'
Authenticationを「Header auth」にしたときは、認証情報の「Name」と「Value」と同じヘッダーを、-H "<Name>: <Value>" の形で足します(この記事の案)。
K-6. 「Respond to Webhook」で、結果を返す
公式の記述です。WebhookノードのRespondを、「Using 'Respond to Webhook' Node」にします。「Respond With」には、「All Incoming Items」「Binary File」「First Incoming Item」「JSON」「JWT Token」「No Data」「Redirect」「Text」があります。オプションは、「Response Code」「Response Headers」「Put Response in Field」「Enable Streaming」です。
K-7. Webhook → AI Agent → 返事の構成(この記事の案)
公式の記載に合わせて、この記事で組んだ例です(動作は確かめていません)。
- Webhook(POST、Respond は「Using 'Respond to Webhook' Node」、Authentication は「Header auth」)。
- AI Agent(06の場面6のとおり、チャットモデルをつなぐ)。「Prompt」は「Define below」にし、「Text」に、リクエストの本文を取る式を入れる(公式は、Webhookのリクエストを
body、headers、params、queryとして扱う、と書いています。実際の項目の形は、テストのリクエストを受けて、入力のパネルで確かめます)。 - Respond to Webhook(「Respond With」を「Text」か「JSON」にし、AI Agentの出力の項目を式で入れる。出力の項目名は、実行して出力のパネルで確かめます)。
AI Agentが、Chat Triggerではなく、Webhookの後ろにあるので、「Prompt」を「Connected Chat Trigger Node」にしたままだと、「No prompt specified」のエラーになります(06のよくあるエラー)。
L:他のアプリとつなぐ(Slackの例)
公式の「Slack credentials」の記述です。Slackは、ほかのアプリの例の1つです。ほかのアプリの認証情報は、公式の認証情報のライブラリのページを、アプリごとに見ます。
L-1. 認証の方式
- APIアクセストークン:Slack Triggerのノードに必要。Slackのノードでも使えるが、n8nは勧めていない(公式の表記)。
- OAuth2:Slackのノード向けに、公式が recommended と書く。Slack Triggerのノードでは動かない。
- n8n Cloudでは、アプリを自分で作らず、「Connect my account」で、ブラウザーから接続する方法もある。
前提:Slackのアカウント。「Install to Workspace」には、ワークスペースの管理者であることが要ります。
L-2. アクセストークンの作り方(Slackアプリを作る)
- Slack APIのAppsのページで、「Create New App」>「From a manifest」を選ぶ(公式が recommended と書く)。または「From scratch」。
- ワークスペースを選び、「Next」を押す。
- 「JSON」のタブで、公式が用意するn8n用のマニフェスト(ボットのスコープが入っている)に差し替える。スコープは、必要に応じて調整する。マニフェストの全文は、公式ページで確認してください。
- 「Next」、確認、「Create」。
- 「OAuth & Permissions」で「Install to Workspace」を選び、「Allow」を押す。
- 「Bot User OAuth Token」をコピーして、n8nの「Access Token」に入れる。
スコープは、ボットなら「Bot Token Scopes」、利用者の代わりの操作なら「User Token Scopes」に足します。公式の表には、channels:read、chat:write、files:read などが並びます。全体は公式ページで確認してください。
L-3. Slack Triggerで、SlackからWebhookを受ける
- Slackのアプリの「Features」>「Event Subscriptions」で、「Enable Events」をオン。
- n8nの「Webhook URL」をコピーして、Slackの「Request URL」に入れる。Slackは、アプリごとにRequest URLを1つしか許さないので、テスト中はTest URLを使い、そのあとProduction URLに切り替える。
- 必要なボットのイベントを購読する。n8nの「Trigger on」で絞る。
- Slackの「Settings」>「Basic Information」の「Signing Secret」を、n8nの「Signature Secret」に入れる(公式は recommended と書く。Slackの承認機能でも必要)。
L-4. つまずき(公式の記述)
Slackのトークンの回転(rotation)をオンにすると、トークンは12時間で失効し、認証情報が失敗するようになります。公式は、本番ではオフにするよう書いています。一度オンにすると、オフにできず、新しいアプリを作る必要がある、とも書かれています。
L-5. APIが専用のノードにない相手
公式は、HTTP Requestのノードで、どのREST APIも呼べる、と書いています。「Authentication」は、「Predefined Credential Type」(対応するサービスなら、公式が recommended と書く)か、「Generic credentials」(Basic auth、Custom auth、Digest auth、Header auth、OAuth1 API、OAuth2 API、Query auth、Simplified Custom Auth)。「Import cURL」で、curlコマンドを貼って設定を作ることもできます(取り込むと、既存の設定が上書きされます)。
M:セルフホストで、誰がどこから届くか:認証と公開範囲
公式が書いている手段だけを並べます。優先順位や「これで十分」という判断は、公式の記述にないので、書きません。
M-1. 外から届くURLの設定
公式の「Configure webhook URLs with a reverse proxy」の記述です。
- n8nは、WebhookのURLを
N8N_PROTOCOL、N8N_HOST、N8N_PORTから作る。リバースプロキシの後ろでは、これが実際の公開のURLと合わない(n8nは内側の5678番、プロキシは外の443番)。 - 環境変数
N8N_WEBHOOK_URL(例:https://n8n.example.com/)で、エディターに正しいURLを出させ、外のサービスが正しいURLを登録できるようにする。ページは、N8N_WEBHOOK_URLがWEBHOOK_URLの後継で、WEBHOOK_URLは2.35.0から非推奨、と書いています。 N8N_PROXY_HOPSを1にする(ページの例)。- 最後のプロキシで、
X-Forwarded-For、X-Forwarded-Host、X-Forwarded-Protoを渡す。 - インスタンスレベルのMCP(08)も同じプロキシの後ろに置くなら、MCPのリクエストのヘッダーも渡す。
M-2. 通信をHTTPSにする
公式の「Set up SSL」は、2つの方法を挙げています。リバースプロキシかロードバランサーを前に置く方法(公式が recommended と書く。例はTraefikとNetwork Load Balancer。証明書の更新も、プロキシが担う)と、環境変数 N8N_SSL_CERT(証明書のファイル)と N8N_SSL_KEY(鍵のファイル)で、n8nに直接渡す方法(更新は自分の責任)です。
M-3. セルフホストのセキュリティの項目(公式の「Security」の一覧)
公式のページは、次の項目を挙げています。
- 「Manage security policies」:インスタンス全体の方針(二要素認証の強制、個人スペースの制限)
- 「Run security audits」:リスクの洗い出し
- 「Set up SSL」
- 「Configure SSO」:SAMLかOIDCのシングルサインオン
- 「Rotate encryption keys」:認証情報などを暗号化するキーの入れ替え
- 「Decrypt OAuth 2.0 tokens with JWE」
- 「Harden task runners」:Codeノードの実行の分離
- 「Redact execution data」:実行の入出力を隠す
- 「Disable the public API」
- 「Control telemetry」:自動で送られる匿名の情報のオプトアウト
- 「Block specific nodes」
- 「Enable SSRF protection」
- 「Verify user emails」
二要素認証
- ユーザー自身:「Settings」>「Personal」>「Enable 2FA」で、QRコードを認証アプリで読み、「Code from authenticator app」にコードを入れ、「Continue」。表示された回復コードを保存する。
- 全員に強制:「Settings」>「Security」の「Enforce two-factor authentication」。メールとパスワードでサインインする全ユーザーが対象で、SSOは対象外。使えるのは、Cloudの Enterprise と、セルフホストの Business と Enterprise と書かれています。環境変数では
N8N_SECURITY_POLICY_MANAGED_BY_ENV=trueのうえでN8N_MFA_ENFORCED_ENABLED=true(既定はfalse)。環境変数での管理は、公式が n8n 2.18.0以降と書き、有効にすると画面のスイッチは読み取り専用になります。 - セルフホストの管理者が、
N8N_MFA_ENABLED=falseで、全ユーザーの2FAを無効にできます(すでに2FAを使うユーザーがいる場合は無視される)。2FAが使えるエディションは、読んだページには書かれていませんでした。
SSRF対策(n8n 2.12.0以降、セルフホスト)
N8N_SSRF_PROTECTION_ENABLED=true で、HTTP Requestなどの、利用者が操作できるノードの外向きのリクエストを、禁止の範囲と許可の範囲に照らして調べます。リダイレクト先とDNSの解決も調べます。既定の禁止は、私的アドレス、ループバック、リンクローカルなどです。範囲を足すには N8N_SSRF_BLOCKED_IP_RANGES=default,100.0.0.0/8、許可するホスト名は N8N_SSRF_ALLOWED_HOSTNAMES、許可するIPの範囲は N8N_SSRF_ALLOWED_IP_RANGES。優先は、ホスト名の許可、IPの許可、IPの禁止の順です。公式は、これはアプリの層の対策で、ファイアウォールなどのネットワークの対策を主とするよう書き、自分で管理するホスト名だけを許可するよう注意しています。
ノードの制限
NODES_EXCLUDE(例:"[\"n8n-nodes-base.executeCommand\", \"n8n-nodes-base.readWriteFile\"]")で、ノードを読み込まず、検索も使用もできなくします。一部のノード(Execute Commandなど)は、既定で禁止されています。解除するには NODES_EXCLUDE: "[]"。ノードの種類のポリシー(プロジェクトごと、再起動なし)という方法もある、と書かれています。
公開APIを止める
N8N_PUBLIC_API_DISABLED=true。APIのプレイグラウンドは、別の変数 N8N_PUBLIC_API_SWAGGERUI_DISABLED=true です。
MCPを丸ごと外す
N8N_DISABLED_MODULES=mcp(08のI-2)。
暗号化キー
認証情報の暗号化に使うキーは、既定では最初の起動で作られ、~/.n8n に保存されます。N8N_ENCRYPTION_KEY で自分の値を使えます。キューモードでは、すべてのワーカーに指定します(05)。
招待とSMTP
SMTPがないと、ユーザーはパスワードを再設定できません(05)。
M-4. Cloudの側
公式の記述で確認できたのは、MCPのクライアントがCloudのn8nに届くには、インスタンスがインターネットから届く必要があること、Cloud consoleに入れるのはオーナーだけであること、までです。Cloudの認証や公開範囲の細かい設定は、この記事では読んでいません。
渡るデータの整理(外から呼ぶ向き)
| つなぎ方 | n8nから出るもの | 公式の記述 |
|---|---|---|
| Webhook | 設定した応答(最後のノードの出力など) | 認証と、IPの許可リストで絞れる |
| Slackなどのアプリ | アプリごとの権限(スコープ)の範囲 | スコープを、必要なものだけに絞る |
外し方の整理
| 対象 | 外し方(公式の記述) |
|---|---|
| Webhook | 公開を外す、またはノードを消す。公開を外したときのURLの動きは、読んだページに明記が見つかりませんでした |
| Slackのアプリ | Slack側の設定。この記事では、Slackの取り消しの画面は読んでいません |
気をつけること
- この記事は、実際に使って確かめた記録ではありません。公式の資料を読んだ範囲です。
- 認証を「None」にしたWebhookやMCP Server Triggerは、URLを知る人が呼べます。公開範囲を決めるのは、設定の側です。
- Webhookの呼び出し例とAI Agentの構成は、この記事で組んだ例で、動作は確かめていません。
- 規約や契約の解釈は、必要なら専門家や公式に確認してください。この記事は法律の助言ではありません。
出典
- Connect to n8n MCP server(n8n Docs、確認日 2026-10-25)
- Webhook(n8n Docs、確認日 2026-10-25)
- Webhook workflow development(n8n Docs、確認日 2026-10-25)
- Webhook credentials(n8n Docs、確認日 2026-10-25)
- Respond to Webhook(n8n Docs、確認日 2026-10-25)
- HTTP Request(n8n Docs、確認日 2026-10-25)
- HTTP Request credentials(n8n Docs、確認日 2026-10-25)
- Slack credentials(n8n Docs、確認日 2026-10-25)
- Configure webhook URLs with a reverse proxy(n8n Docs、確認日 2026-10-25)
- Security(n8n Docs、確認日 2026-10-25)
- Set up SSL(n8n Docs、確認日 2026-10-25)
- Manage security policies(n8n Docs、確認日 2026-10-25)
- Enable SSRF protection(n8n Docs、確認日 2026-10-25)
- Block specific nodes(n8n Docs、確認日 2026-10-25)
- Disable the public API(n8n Docs、確認日 2026-10-25)
- Require two-factor auth(n8n Docs、確認日 2026-10-25)
- Set a custom encryption key(n8n Docs、確認日 2026-10-25)
- Manage settings using environment variables(n8n Docs、確認日 2026-10-25)
- User management(n8n Docs、確認日 2026-10-25)
- Install with Docker(n8n Docs、確認日 2026-10-25)
- Install with npm(n8n Docs、確認日 2026-10-25)
- Save and publish workflows(n8n Docs、確認日 2026-10-25)
- AI Agent common issues(n8n Docs、確認日 2026-10-25)