Contents
まずは最短で動かす — クイックスタート
ここでは最短で動かすためのワンライナーと最小構成を示します。
短時間で試したい場合は下のコマンドをコピペして起動し、ブラウザから Editor にアクセスして基本動作を確認してください。
Dockerでワンライナー起動(ローカル検証用)
短いコマンドでローカル検証を始めるための例です。環境変数は実運用では秘密管理に置き換えてください。
|
1 2 3 4 5 6 7 8 9 10 |
# N8N_ENCRYPTION_KEY を一時生成して使う例(開発検証用) export N8N_ENCRYPTION_KEY="$(openssl rand -hex 32)" docker run -d --name n8n \ -p 5678:5678 \ -e N8N_HOST=localhost \ -e N8N_PORT=5678 \ -e N8N_ENCRYPTION_KEY="$N8N_ENCRYPTION_KEY" \ -v ~/.n8n:/home/node/.n8n \ n8nio/n8n:latest |
上記は検証用です。本番ではBasic Authやリバースプロキシ、TLSなどの保護を必ず追加してください。
最小docker-compose.yml(Postgres利用例)
Postgres を外部で使う最小の docker-compose サンプルです。環境変数は .env やクラウドの Secret Manager で管理してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
version: '3.7' services: n8n: image: n8nio/n8n:latest ports: - "5678:5678" environment: - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=n8n - DB_POSTGRESDB_USER=n8n - DB_POSTGRESDB_PASSWORD=n8npassword - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY} - N8N_HOST=example.com - NODE_ENV=production volumes: - n8n_data:/home/node/.n8n depends_on: - postgres postgres: image: postgres:14 environment: - POSTGRES_DB=n8n - POSTGRES_USER=n8n - POSTGRES_PASSWORD=n8npassword volumes: - pgdata:/var/lib/postgresql/data volumes: n8n_data: pgdata: |
Kubernetes(Helm)での最小導入例
Helm を使う場合の基本コマンド例と最小 values スニペットです。実際のチャート名やリポジトリは公式ドキュメントで最新情報を確認してください。
|
1 2 3 4 |
helm repo add n8n https://charts.n8n.io helm repo update helm install my-n8n n8n/n8n -f values.yaml |
values.yaml の簡易例(外部 Postgres を使う場合):
|
1 2 3 4 5 6 7 8 9 |
env: DB_TYPE: "postgresdb" DB_POSTGRESDB_HOST: "db-host.example.com" DB_POSTGRESDB_PORT: "5432" DB_POSTGRESDB_DATABASE: "n8n" DB_POSTGRESDB_USER: "n8n" DB_POSTGRESDB_PASSWORD: "securepassword" N8N_ENCRYPTION_KEY: "(KMS 等で管理する値を参照)" |
n8n Cloud 登録の早見表
短時間で試したい場合の手順を簡潔に示します。
- n8n Cloud にサインアップする(https://n8n.io/)。
- ワークスペースを作成して Editor を開く。
- 必要な API キーや OAuth の Credential を登録する。
- 実行上限やプラン差は管理画面で確認する(プランによる制限に注意)。
n8nの概略とクラウド/セルフホストの選び方
n8n はノーコード/ローコードで API やサービスを連携する自動化基盤です。
ここでは概念の定義と、n8n Cloud とセルフホストのメリット・注意点を整理します。
n8nとは(基本用語の定義)
n8n の主要概念を簡潔に説明します。
- ノード(Node): 1 回の処理単位です。データ取得や変換、外部 API 呼び出しを行います。
- トリガー(Trigger): ワークフローを起動するノードです(Webhook、Cron など)。
- Credential: 外部サービスへの認証情報です。n8n はこれを暗号化して保存します。
- N8N_ENCRYPTION_KEY: Credential を暗号化する環境変数名です(後述参照)。
ノード名や UI はバージョンにより変わる場合があるため、実行前に使用バージョンのドキュメントを確認してください。
n8n Cloud の利点と留意点
短期間で試作して運用負荷を下げたい場合に向きます。主な特長と注意点は次のとおりです。
- メリット: 初期セットアップが容易で TLS や公開 Webhook を管理してくれます。
- 注意点: プランによって実行回数や並列数の制約がある場合があります。利用状況に応じてプランを選んでください。
- 参考: 公式サイトおよびプランページを確認すること(https://n8n.io/)。
セルフホストの利点と注意点
企業のガバナンスやカスタム要件がある場合はこちらが適します。
- メリット: ネットワーク制御、外部 DB の選択、カスタムノード導入が可能です。
- 注意点: TLS、公開 URL、スケール、バックアップは自分で整備する必要があります。リソース割当や監視設計も必須です。
ハンズオン:Editorでワークフローを作る
ここでは Editor を使った基本的なワークフロー構築手順と、代表トリガーや Credential の実務的なポイントを示します。
設計は小さく試してから拡張する方針が失敗を減らします。
基本手順
簡単なワークフロー作成の流れを示します。
- Editor で新規ワークフローを作成し、名前を付けます。
- トリガーを追加(Webhook や Cron など)。トリガーはワークフローを起動する役割です。
- 処理ノード(Set、IF、HTTP Request、Function/Code 等)を接続してロジックを作ります。
- 必要な Credential を作成してノードに割り当てます。
- ノード単位で「Execute Node」して入出力を確認します。
- 問題なければ保存し、有効化して運用へ移行します。
ノード名や「Execute」ボタンの場所はバージョン差があるため、UIを見て適宜確認してください。
トリガー別の使い分け
主要トリガーと設計上のポイントをまとめます。
- Webhook: 外部イベント受信に使います。公開 URL と TLS、署名検証を必須で設計します。
- Cron: 定期処理用です。短時間でのテストは短い間隔で行い、実運用では適切な分散を考えます。
- Email(Gmail/IMAP): メール受信をトリガーに使う場合、OAuth のスコープは最小にします。
- S3 / ストレージイベント: イベントの重複や順序に注意し、冪等性設計を行います。
Credentials と OAuth の扱い(実務ポイント)
Credential は適切に隔離・最小権限で管理することが重要です。
- OAuth のリダイレクト URI は n8n のホストと一致させます。ドメイン変更時は設定を更新してください。
- 対組織運用ではサービスアカウントの利用を検討し、ユーザー削除によるトークン失効を回避します。
- Credential は環境ごとに分離し、ステージングと本番で同じキーを使わない運用にします。
デバッグとエラーハンドリング
小さな単位で動作確認を行い、再現性が取れてから統合テストに進めることが重要です。
ここでは実務で役立つデバッグ手法とエラーハンドリングの典型パターンを示します。
デバッグ手法
ノード単位での切り分けが最も効果的です。
- 「Execute Node」で入力/出力を逐次確認します。
- Set ノードや固定データで異常系と正常系を再現します。
- 実行履歴で失敗箇所のレスポンスや例外スタックを確認します。ログを検索して相関付けを行います。
エラーハンドリングパターン
一般的な対処パターンを設計に組み込みます。
- 条件分岐(IFノード)で正常系と異常系を分ける。
- Error Trigger を用いてグローバルな失敗通知や対応処理を行う。
- 再試行: Wait ノードと段階的バックオフを組み合わせ、最大再試行回数を設定する。
- Dead Letter: 処理不能なイベントはログやスプレッドシートに保存して手動で復旧可能にする。
- Idempotency: 外部 API への重複リクエストは一意キーで防ぐ。
よくある障害と対処例
代表的なトラブルと確認項目です。
- 認証エラー: Credential を再作成し、OAuth のリダイレクト URI とスコープを確認します。
- Webhook が 404: ワークフロー有効化、ベース URL、パス、Ingress の設定を確認します。
- 空レスポンスやフィールド不一致: 上流ノードの出力構造とフィールド名を確認します。
- レート制限: Retry-After を尊重し、バッチ化やキュー化で対処します。
本番運用のチェックリストとセキュリティ設計
本番移行ではステージング検証、監視設計、暗号鍵・Credential の管理が重要です。
ここでは運用前の必須チェック項目とセキュリティ実装の具体例をまとめます。
本番デプロイ前の必須チェック
リリース前に確認すべき最低限の項目です。
- ステージングで十分なテストと承認プロセスを実施する。
- Webhook 用ドメイン・TLS・DNS の整合性を確認する。
- Credential は環境ごとに分け、最小権限で設定する。
- DB バックアップとリストア手順を事前に検証する。
Webhook と TLS の基本設計
Webhook は公開 HTTP エンドポイントであるため、TLS と認証を必須にします。
- TLS: 公開エンドポイントは必ず TLS で保護する。Let's Encrypt やクラウドロードバランサで証明書を管理する。
- リバースプロキシ: nginx や Traefik、クラウドLB で TLS 終端し、X-Forwarded-* ヘッダや trust proxy を正しく設定する。
- ベース URL 設定: n8n の N8N_HOST 等で外部からのアクセス先を正しく設定する。
署名検証の実装上の注意(推奨アルゴリズムと安全実装)
署名検証は HMAC-SHA256 を用いるのが一般的です。実装時の安全上の注意点を示します。
- 署名アルゴリズム: HMAC-SHA256 等のなじみある MAC を採用する。
- 定数時間比較: 比較は定数時間比較(constant-time compare)を行いタイミング攻撃を避ける。
- 再生防止: 署名にタイムスタンプを含め、許容時間(例: 300 秒)を設ける。ヘッダ名や形式は送信側と合意する。
- ログ注意: シークレットや完全なリクエストボディをログに出力しない。
擬似コード(概念例):
|
1 2 3 4 5 6 7 8 9 10 11 |
# 受信ヘッダ: X-Signature, X-Timestamp timestamp = parse_int(header["X-Timestamp"]) if abs(now() - timestamp) > 300: reject() payload = raw_body mac = HMAC_SHA256(secret, f"{timestamp}.{payload}") if not constant_time_equal(hex(mac), header["X-Signature"]): reject() accept() |
上記は概念です。実装は利用言語の標準ライブラリを使い、必ず定数時間比較関数を用いてください。
N8N_ENCRYPTION_KEY(鍵)の生成・管理・ローテーション
Credentials の暗号化に使う鍵は慎重に扱います。運用上の要点を示します。
- 推奨形式: 32 バイト(256 ビット)相当のランダム値を用いるのが推奨です。hex 形式の例としては openssl rand -hex 32(64 文字の hex)を利用できます。
- 生成例(検証用):
|
1 2 |
openssl rand -hex 32 # 64 文字の hex 表現。これを N8N_ENCRYPTION_KEY に設定する。 |
- バックアップ: 鍵を紛失すると既存の Credential を復号できなくなるため、鍵は安全にバックアップすること。KMS(AWS KMS、GCP KMS、Azure Key Vault)やクラウド Secret Manager に格納する運用を推奨します。
-
ローテーション: 鍵の変更は既存 Credential を再暗号化するか、再作成するプロセスが必要です。安全なローテーションの一般手順は次の通りです(概略):
-
DB とストレージの完全バックアップを取得する。
- 現行鍵で稼働する環境を起動し、Credential をエクスポート/復号可能な形式で一時保管する(自動化スクリプトを使う場合は厳重に管理)。
- 新鍵を導入したテスト環境で再暗号化処理を実行して問題ないか検証する。
- 本番に適用し、問題がなければ旧鍵を破棄する。
詳細な手順は環境やバージョンにより異なるため、事前検証と公式ドキュメントの確認を行ってください(暗号鍵ローテーションは慎重に設計すること)。
リソース設計の目安(あくまで目安)
本番のリソースはワークフローの複雑さや同時実行数で大きく変わります。目安は次の通りです。
- 開発/検証: 1 vCPU / 1–2 GB RAM(軽負荷)。
- 小〜中規模本番: 2+ vCPU / 4+ GB RAM、外部 Postgres を推奨。
これらはあくまで目安です。並列実行数や使用ノードにより必要リソースは増えます。公式ドキュメントや実負荷での負荷試験を参照してください。
DB 接続例(外部 Postgres の環境変数)
外部 Postgres を使う場合の環境変数例です。
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres.example.com
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=(安全に管理された値)
実務で使えるサンプルワークフロー(概要)
ここでは実務でよく使うワークフローの構成要点をまとめます。各ワークフローはまず小さく作って検証してください。
Gmail受信→フィルタ→Slack通知
短い説明: 重要メールを Slack に通知して対応を早めます。
- 準備: Google Cloud で OAuth クライアントを作成し、Gmail API の最小スコープを付与する。Slack で Bot トークンを作成する。
- 構成: Gmail トリガー → IF(送信元/件名判定)→ Slack ノードでメッセージ送信。
- 運用ポイント: Message ID で重複を排除する。Gmail のレート制限を監視する。
公開Webhook→Google Sheets追記
短い説明: 外部フォームの送信をスプレッドシートに記録します。
- 準備: 公開ドメイン+TLS、Google Sheets 用 OAuth、シートのヘッダ作成。
- 構成: Webhook トリガー(署名検証)→ データ整形 → Google Sheets Append Row。
- 運用ポイント: 高頻度はバッチ化やキューで API 呼び出しを削減する。
テキスト要約(OpenAI)→メール送信
短い説明: 長文の要約を自動で生成し担当者に送信します。
- 準備: OpenAI API キーを Credential 登録、送信は SMTP/Gmail Credential を用意。
- 構成: トリガー → (必要なら Function ノードで PII マスキング) → OpenAI 呼び出し → メール送信。
- 運用ポイント: PII を送らないルールを徹底し、API コストを監視する。
参考リンクと追加リソース
公式ドキュメントや公式リポジトリを参照して検証・最新情報の確認を行ってください。
- n8n 公式(製品/サービス紹介): https://n8n.io/
- n8n ドキュメント(公式): https://docs.n8n.io/
- n8n GitHub(ソース/docker-compose 等): https://github.com/n8n-io/n8n
- 環境変数一覧(N8N_ENCRYPTION_KEY 等): https://docs.n8n.io/reference/environment-variables/
- Helm / self-host 参考(公式ドキュメント内の Helm セクション): https://docs.n8n.io/self-hosted/helm/
- Webhook ノードの仕様(公式ノード説明): https://docs.n8n.io/nodes/trigger-nodes/
まとめとして、まずは最小構成で素早く動作確認を行い、暗号鍵と Webhook 設計、Credential の管理方針を固めてから段階的に本番展開してください。公式ドキュメントを参照し、使用する n8n のバージョンに合わせて手順やノード名を必ず確認してください。