【Windows 11向け】Dockerで動かすn8n:ローカル環境構築、データ移行、自動化レシピ

n8n
この記事は約57分で読めます。

ーーーーーーーーーーーーーーーーーーーーー2026年10月26日執筆ーーーーーーーーーーーーーーーーー

  1. n8nローカル運用のPodcast
  2. はじめに
  3. なぜWindows 11+Dockerでn8nを動かすのか?クラウド版との違いとメリット
    1. n8nの特徴とSustainable Use License(公平なライセンス)
    2. クラウド版の実行数制限 vs ローカル版の完全無制限実行
    3. 社内データ・個人情報をローカル環境で保護するプライバシー優位性
  4. Windows 11における環境構築:Docker Composeによるn8n起動手順
    1. Docker Desktopと最新WSL 3バックエンドの準備
    2. ディレクトリ構造とdocker-compose.ymlの作成
    3. 環境変数の重要なポイント
    4. 初回起動と管理者アカウント(Owner)のセットアップ
  5. 外部連携のためのWebhooks設定:Cloudflare Tunnelとngrokの活用
    1. 手法1:完全無料で固定ドメインが使える「Cloudflare Tunnel(推奨)」
    2. 手法2:即座にテストできる「ngrok」の手軽な活用
  6. データの安全なバックアップと移行手順(CLIエクスポート&インポート)
    1. 移行の鉄則:暗号化キー(N8N_ENCRYPTION_KEY)の完全一致
    2. ステップ1:コンテナ内部でワークフローと認証情報を一括エクスポート
    3. ステップ2:コンテナからWindowsホストへバックアップを取り出す
    4. ステップ3:新環境へのインポート手順
  7. 実践!すぐに役立つ自動化レシピ3選(AI Agent連携・RSS・通知)
    1. レシピ1:自律型AI Agentによる問い合わせ自動分類&Slack通知
    2. レシピ2:技術系RSSフィードの新着自動検知&AI要約Discord配信
    3. レシピ3:Gmailの特定請求書PDFを自動検知してGoogleドライブ&Notion台帳へ自動保存
  8. トラブルシューティング:ポート競合・権限エラー・メモリ不足の解消法
    1. 「bind: address already in use」でコンテナが起動しない場合
    2. 「EACCES: permission denied」パーミッションエラーが出る場合
    3. Docker(WSL 3 / WSL 2)がPCのメモリを過剰消費する場合の最適化
  9. まとめ:ローカルn8nで自由自在な自動化環境を手に入れよう
    1. 本記事の重要ポイントのおさらい
  10. 参考資料
  11. はじめに
  12. Dockerとは?アプリケーション実行環境の常識を変えるコンテナ技術
    1. Dockerの基本概念
    2. Dockerを利用するメリット
    3. Dockerを利用するデメリット・注意点
  13.   Windows 11へのDocker DesktopインストールとWSL2有効化
    1. システム要件の確認
    2. WSL2の有効化手順
    3. Docker Desktopのインストール手順
    4. 注意点
  14.  Dockerでn8nセルフホストAIスターターキットを用いてローカル環境を構築する 
    1. AIスターターキットとは何か?
    2. キットを利用する利点
    3. n8nのインストール
    4. n8nの起動
    5. n8nへのアクセス
  15. n8n CloudからDocker環境へのデータ移行
    1. 移行の概要と注意点
    2. 移行方法
  16. 【実践レシピ】n8nで作る初めての自動化ワークフロー
    1. ワークフロー作成の基本
    2.  レシピ例1:新着GmailをSlackに通知
    3. レシピ例2:Webフォーム入力をGoogle Sheetsに記録
    4. レシピ例3:RSSフィード更新をDiscordに通知
  17. 初心者向け:関連用語解説
  18. まとめ:n8nとDockerで自動化を始めよう

n8nローカル運用のPodcast

下記のPodcastは、Geminiで作成しました。

はじめに

日々の業務やルーティン作業を自動化したいと考えたとき、ノーコード・ローコードのワークフロー自動化ツールは非常に強力な武器となります[1]。数ある自動化プラットフォームの中でも、ドイツ発のオープンソース系ワークフロー自動化ツール「n8n(エヌエイトエヌ)」は、ZapierやMake(旧Integromat)と並ぶ圧倒的な柔軟性と機能性を誇り、世界中のエンジニアやビジネスパーソンから絶大な支持を集めています[2]。

しかし、クラウドサービスとして提供されているZapierやMake、あるいはn8n Cloudを利用する場合、ワークフローの実行回数(タスク数)に応じた従量課金や月額サブスクリプション費用が重くのしかかります[3]。また、企業の機密データや個人情報、APIキーなどのセンシティブな情報を外部のサードパーティクラウドに預けることにセキュリティ上の不安を感じる方も少なくありません[4]。

そこで最も賢明でコストパフォーマンスに優れた選択肢となるのが、「Windows 11上のDocker環境でn8nを完全セルフホスト(ローカル運用)する」というアプローチです[1]。

手元のWindows 11マシンでDocker Composeを使ってn8nを立ち上げれば、実行回数の上限を一切気にすることなく、完全無料で24時間365日、何千・何万回もの自動化タスクを無制限に実行できます[5]。さらに、最新のn8nではLangChainをベースにした強力な「AI Agent(自律型AIエージェント)」ノードが標準搭載されており、ローカル環境にいながらOpenAIやClaude、さらにはローカルLLM(Ollama)と連携した高度なAIワークフローを自由に構築することが可能です[6]。

本記事では、Windows 11(最新のWSL 3バックエンド)におけるDocker Composeを用いたn8nの確実なローカル環境構築手順から、暗号化キーを考慮した安全なデータ移行・バックアップ手法、外部サービスからの通知を受け取るWebhookトンネルの設定、そして今すぐ実務に役立つ3つの実践自動化レシピまで、完全な手順を余すところなく徹底解説します[7]。


なぜWindows 11+Dockerでn8nを動かすのか?クラウド版との違いとメリット

クラウド版とローカルDocker版の比較図解(Googleの画像生成AIで作成)

n8nを導入するにあたり、まずは「なぜクラウド版(SaaS)ではなくローカルDocker環境なのか」という本質的なメリットとライセンス仕様を明確にしておきましょう[1]。

n8nの特徴とSustainable Use License(公平なライセンス)

n8nは「フェアコード(Fair-code)」思想に基づき、現在はSustainable Use Licenseの下でソースコードが公開されています[8]。一般的な個人利用、社内業務の効率化、研究開発、自社プロジェクトにおけるワークフロー構築であれば、ソースコードやDockerイメージを完全無料で利用できます[8]。(※第三者に対してn8nそのものを有償ホスティングサービスとして再販・提供する場合のみ商用ライセンスが必要です。)そのため、個人事業主から大企業の社内開発チームまで、ライセンス違反の心配なく安心してローカル運用をスタートできます[8]。

クラウド版の実行数制限 vs ローカル版の完全無制限実行

ZapierやMakeなどの商用SaaS、そしてn8n Cloudでは、月額プランごとに「月間実行回数(例: 月2,500回や10,000回)」の厳しいキャップが設定されています[3]。高頻度でデータ監視を行ったり、大量のレコードを一括処理するループ処理を組むと、あっという間に上限に達して高額な追加課金が発生します[3]。

一方、Dockerを用いたセルフホスト版n8nでは、マシンのスペックが許す限り実行回数は完全に無制限です[1]。毎分実行のスクレイピングや、数万件の顧客データの変換処理、リアルタイム監視システムであっても、コストは電気代以外一切かかりません[1]。

社内データ・個人情報をローカル環境で保護するプライバシー優位性

自動化ワークフローでは、顧客リスト、社内チャットログ、データベースの接続情報、クラウドサービスの秘密鍵など、最高レベルの機密情報を扱います[4]。クラウド型自動化サービスではこれらが外部サーバーを経由・保存されますが、Windows 11上のDockerコンテナであれば、すべてのデータ処理と認証情報の暗号化保存が手元のローカルストレージ内で完結します[4]。GDPRや個人情報保護法の観点からも、自社管理下にあるローカル運用は極めて強固な防御壁となります[4]。


Windows 11における環境構築:Docker Composeによるn8n起動手順

Docker Composeでのn8nセットアップ構成図(Googleの画像生成AIで作成)

ここからは、実際にWindows 11上でDocker Composeを用いてn8nを安定稼働させるステップを解説します[1]。

Docker Desktopと最新WSL 3バックエンドの準備

前提として、Windows 11に「Docker Desktop」がインストールされ、最新の「WSL 3(WSL 3.0.1)」エンジンが有効になっていることを確認します[9]。2026年最新のWSL 3では、Linux 6.x LTSカーネルの採用や高速ファイル共有規格「virtiofs」の標準統合、メモリ自動回収機構が備わっており、コンテナの起動や大量データのI/O処理が従来のWSL 2初期環境と比べて飛躍的に高速化されています[5][9]。

  1. WSL本体の最新化: PowerShell(管理者)で wsl --update を実行し、wsl --version で「WSL バージョン: 3.0.1」以降が適用されていることを確認します[9]。
  2. Docker Desktopの設定: Docker Desktopの設定画面(Settings ⚙️)を開き、「General」タブで 「Use the WSL 2 based engine」(※最新のWSL 3環境でも互換性設定名としてこのチェックがWSLサブシステム全体との高速連携を担います)にチェックが入っていることを確認します[9]。
  3. ディストリビューション連携: 「Resources」>「WSL Integration」タブで、利用しているLinuxディストリビューション(Ubuntu等)のトグルをONにします[9]。

これにより、Windowsホストとコンテナ間のファイル共有がvirtiofs経由で最大3〜5倍に高速化され、n8nのノード実行や共有データの読み書きが極めて軽快に動作します[5][9]。

ディレクトリ構造とdocker-compose.ymlの作成

Windows Terminal(PowerShell)を開き、n8n専用の作業ディレクトリを作成します[1]。

mkdir C:\n8n-docker
cd C:\n8n-docker

次に、このフォルダ内に設定ファイル docker-compose.yml を作成します[1]:

version: '3.8'

services:
  n8n:
    image: docker.io/n8nio/n8n:latest
    container_name: n8n-local
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_ENCRYPTION_KEY=mySecureSecretKey2026ChangeThisImmediately!
      - GENERIC_TIMEZONE=Asia/Tokyo
      - TZ=Asia/Tokyo
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_RUNNERS_ENABLED=true
      - N8N_DEFAULT_BINARY_DATA_MODE=filesystem
    volumes:
      - n8n_data:/home/node/.n8n
      - C:\n8n-docker\shared:/data/shared

volumes:
  n8n_data:

環境変数の重要なポイント

  • N8N_ENCRYPTION_KEY(最重要): n8n内に保存される各種APIキーや認証情報をAES-256で暗号化するためのシークレットキーです[10]。ランダムで強力な文字列に変更し、必ずパスワードマネージャー等に控えておいてください。将来別のPCへ移行する際、このキーが一致しないと認証情報が一切復号できなくなります[10]。
  • GENERIC_TIMEZONE / TZ: Asia/Tokyo を指定することで、Cronトリガー(定期実行)や日時処理が日本標準時(JST)で正しく動作します[1]。
  • N8N_RUNNERS_ENABLED=true: 最新バージョンのn8nで導入されたタスクランナー機能であり、ワークフロー実行の安定性とスケーラビリティを飛躍的に向上させます[11]。
  • 共有ボリューム(/data/shared): ローカルの C:\n8n-docker\shared フォルダとコンテナをマウントしておくことで、CSVファイルや画像の読み書きがWindowsエクスプローラーから極めて容易に行えます[1]。

初回起動と管理者アカウント(Owner)のセットアップ

設定ファイルを保存したら、PowerShellで以下のコマンドを実行してコンテナを起動します[1]。

docker compose up -d

起動後、ブラウザで以下のURLにアクセスします[1]:

http://localhost:5678

初回アクセス時には「Set up owner account」という管理者登録画面が表示されます。メールアドレス、名前、パスワードを入力して「Next」をクリックすれば、あなただけの完全ローカルn8nワークスペースが開設されます[1]!


外部連携のためのWebhooks設定:Cloudflare Tunnelとngrokの活用

外部Webhookとローカルn8nのトンネル接続構成図(Googleの画像生成AIで作成)

ローカル環境でn8nを運用する際に最初に直面する壁が、「外部SaaS(GitHub、Stripe、Slack、LINE等)からのWebhook通知を受け取れない」という問題です[12]。http://localhost:5678 は自分のPC内だけで有効なURLであるため、インターネット上の外部サービスはアクセスできません[12]。ルーターのポート開放(ポートフォワーディング)を行うのはセキュリティ上極めて危険です[12]。

この問題を安全に解決するのが、リバースプロキシトンネル技術(Cloudflare Tunnelまたはngrok)です[12]。

手法1:完全無料で固定ドメインが使える「Cloudflare Tunnel(推奨)」

独自ドメインをお持ちの場合、Cloudflareの提供する「Cloudflare Tunnel(旧Argo Tunnel)」を利用するのが最も堅牢でプロフェッショナルな手法です[13]。

  1. Cloudflare Zero Trustの管理画面から「Networks」>「Tunnels」を作成します[13]。
  2. 提供される cloudflared クライアントをWindowsにインストールするか、Docker Compose内にサービスとして追加します[13]。
  3. パブリックホスト名(例: n8n.yourdomain.com)をローカルサービス http://localhost:5678 にルーティングします[13]。
  4. docker-compose.yml の環境変数に WEBHOOK_URL=https://n8n.yourdomain.com/ を指定してコンテナを再起動します[13]。

ルーターに穴を開けることなく、Cloudflareの強固なWAFとDDoS防御を経由して、安全にHTTPS通信でWebhookを受信できるようになります[13]。

手法2:即座にテストできる「ngrok」の手軽な活用

独自ドメインを持たない場合や、一時的な開発テストを行いたい場合は、「ngrok」が最適です[14]。

ngrok http 5678

発行されたURL(例: https://xxxx-xx-xx.ngrok-free.app)をn8nのWebhook URLに設定すれば、数秒で外部連携のテストが可能になります[14]。


データの安全なバックアップと移行手順(CLIエクスポート&インポート)

ワークフローと認証情報のデータ移行プロセス図(Googleの画像生成AIで作成)

PCの買い替え、新しい開発環境への移設、万一のクラッシュに備えたバックアップなど、n8nのデータ移行手順をマスターしておくことは運用上必須です[7]。n8nには、コンテナ内部から直接呼び出せる強力なCLIコマンド(n8n export / n8n import)が備わっています[7]。

移行の鉄則:暗号化キー(N8N_ENCRYPTION_KEY)の完全一致

認証情報(Credentials)を安全に移行するためのアプローチは2つあります[10]:

  1. 新旧環境で同じ N8N_ENCRYPTION_KEY を使う場合: 通常の暗号化された状態のままエクスポート・インポートが可能です[10]。
  2. 別の暗号化キーを使う、または平文で安全に退避する場合: --decrypted オプションを付与して一時的に復号エクスポートし、新環境で再暗号化インポートを行います[7]。

ステップ1:コンテナ内部でワークフローと認証情報を一括エクスポート

# 1. コンテナ内にバックアップ用フォルダを作成
docker compose exec n8n-local mkdir -p /home/node/.n8n/backups/workflows

# 2. 全ワークフローを個別JSONファイルとしてバックアップ
docker compose exec n8n-local n8n export:workflow --backup --output=/home/node/.n8n/backups/workflows --separate

# 3. 全認証情報を復号化(decrypted)して安全にJSONエクスポート
docker compose exec n8n-local n8n export:credentials --all --decrypted --output=/home/node/.n8n/backups/credentials.json

ステップ2:コンテナからWindowsホストへバックアップを取り出す

docker cp n8n-local:/home/node/.n8n/backups ./backups

これで、Windows上にすべてのワークフロー(JSONファイル群)と認証情報ファイルが安全に退避されました[7]。

ステップ3:新環境へのインポート手順

# 1. 新しいコンテナへバックアップフォルダを転送
docker cp ./backups n8n-local:/home/node/.n8n/backups

# 2. 認証情報のインポート
docker compose exec n8n-local n8n import:credentials --input=/home/node/.n8n/backups/credentials.json

# 3. ワークフローの一括インポート
docker compose exec n8n-local n8n import:workflow --input=/home/node/.n8n/backups/workflows --separate

ブラウザをリロードすれば、作成したワークフローと接続設定が寸分違わず完全に復元されます[7]!


実践!すぐに役立つ自動化レシピ3選(AI Agent連携・RSS・通知)

実践自動化レシピとAI Agentワークフロー例(Googleの画像生成AIで作成)

環境が整ったところで、実務で今すぐ効果を発揮する3つの鉄板自動化レシピを作成してみましょう[6]。

レシピ1:自律型AI Agentによる問い合わせ自動分類&Slack通知

2026年現在のn8nの真骨頂である「Advanced AI」ノードを活用したレシピです[6]。

  • 構成ノード: Webhook Trigger ➔ AI Agent ➔ OpenAI Chat Model (GPT-4o) ➔ Window Buffer Memory ➔ Slack Node
  • 動作の流れ: Webフォームから届いた問い合わせをAI Agentが自律解析し、緊急度の高い問い合わせのみメンション付きでSlackへ通知します[6]。

レシピ2:技術系RSSフィードの新着自動検知&AI要約Discord配信

情報収集を完全自動化し、時間を節約するためのレシピです[15]。

  • 構成ノード: Schedule Trigger (毎朝8時) ➔ RSS Read ➔ Code (重複除外フィルター) ➔ Information Extractor (Claude 3.5 Sonnet) ➔ Discord Webhook
  • 動作の流れ: 毎朝自動で指定した技術ブログのRSSを取得し、直近24時間の新着記事をAIが3行に要約してDiscordへ配信します[15]。

レシピ3:Gmailの特定請求書PDFを自動検知してGoogleドライブ&Notion台帳へ自動保存

バックオフィス業務の手間をゼロにする実務直結レシピです[16]。

  • 構成ノード: Gmail Trigger (件名に「請求書」含む) ➔ Extract from File (PDF) ➔ Google Drive (フォルダ保存) ➔ Notion (新規ページ作成)
  • 動作の流れ: メール添付のPDF請求書をGoogleドライブへリネーム保存し、Notionデータベースへ台帳レコードを自動追加します[16]。

トラブルシューティング:ポート競合・権限エラー・メモリ不足の解消法

トラブルシューティングチェックリスト(Googleの画像生成AIで作成)

Windows 11でのDocker運用において発生しやすい代表的なトラブルと、その具体的な解決策をまとめました[17]。

「bind: address already in use」でコンテナが起動しない場合

ポート 5678 がすでに他のプロセスで使用されているエラーです[17]。

ports:
  - "5679:5678"

ホスト側のポートを 5679 等に変更することで競合を回避できます[17]。

「EACCES: permission denied」パーミッションエラーが出る場合

環境変数に N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true が指定されていることを確認し、Dockerの名前付きボリューム(n8n_data)を使用してください[18][20]。

Docker(WSL 3 / WSL 2)がPCのメモリを過剰消費する場合の最適化

WSL 3ではメモリ自動解放機構(autoMemoryReclaim)が強化されていますが、多数のコンテナや高負荷ワークフローを動かす際、より厳格にリソース上限を設定したい場合があります[19]。

ユーザーディレクトリ(C:\Users\<ユーザー名>\)に .wslconfig を作成し、メモリ上限とメモリ自動回収を明示的に指定します[19](※Microsoftの互換仕様としてセクション名は [wsl2] のまま使用します):

[wsl2]
memory=4GB
processors=2
swap=2GB
autoMemoryReclaim=gradual

PowerShellで wsl --shutdown を実行して再起動すれば、n8nコンテナがWindows全体の動作を圧迫することなく、常に安定したリソース配分で軽快に動作し続けます[19]。


まとめ:ローカルn8nで自由自在な自動化環境を手に入れよう

本記事では、Windows 11上のDocker Composeを用いて「n8n」を完全セルフホストで立ち上げ、データ移行や実践レシピを動かすまでの全プロセスを詳しく解説しました[1]。

本記事の重要ポイントのおさらい

  1. 完全無制限&高プライバシー: 従量課金のタスク上限に怯えることなく、機密データをローカルで安全に無制限処理できる[1][4]。
  2. Docker Composeによる堅牢な管理: 暗号化キー(N8N_ENCRYPTION_KEY)とJSTタイムゾーンを指定し、数分で永続化環境を構築可能[1][10]。
  3. 安全なWebhook連携: Cloudflare Tunnelやngrokを利用すれば、ルーターのポート開放不要で外部SaaSとセキュアに双方向通信[12][13]。
  4. CLIによる確実なデータ移行: n8n export/import コマンドにより、PCの移設やバックアップも数行のコマンドで完結[7]。
  5. 次世代AI Agentの活用: 最新のLangChainベースAIノードにより、自律的な判断と実務タスクの自動化を同時に実現[6]。

定型作業やルーティンワークを自動化することで生まれた時間は、より創造的な開発やビジネスの成長へと振り向けることができます[1]。ぜひ本記事の手順に従って、あなた専用の最強自動化ハブをWindows 11上に構築してみてください![1]


参考資料

  1. [1] n8n公式ドキュメント - Docker Composeによるセルフホスト導入ガイド
  2. [2] GitHub公式リポジトリ - n8n-io/n8n: Free and source-available fair-code workflow automation tool
  3. [3] n8n公式サイト - クラウド料金プランおよびセルフホスト(Community)比較
  4. [4] n8n公式ブログ - Self-hosting vs Cloud: Data privacy and compliance overview
  5. [5] Docker公式ドキュメント - Docker Desktop on Windows with WSL 3/WSL 2 architecture
  6. [6] n8n公式ドキュメント - Advanced AI and LangChain AI Agent nodes architecture
  7. [7] n8n公式ドキュメント - CLIによるワークフローおよび認証情報のエクスポート・インポート
  8. [8] n8n公式ライセンス規約 - Sustainable Use License (Fair-code) FAQ
  9. [9] マイクロソフト公式 - WSL 3によるWindows上でのコンテナ開発環境ベストプラクティス
  10. [10] n8n公式ドキュメント - N8N_ENCRYPTION_KEYによる暗号化データの管理と保護
  11. [11] n8n公式リリースノート - Task Runners and Scalability Enhancements
  12. [12] n8nコミュニティフォーラム - Configuring Webhooks for local Docker instances
  13. [13] Cloudflare Zero Trust公式 - Cloudflare Tunnel (cloudflared) documentation
  14. [14] ngrok公式ドキュメント - Secure Tunnels to Localhost and Webhook testing
  15. [15] n8nワークフローライブラリ - RSS Feed Monitor and AI Summarization Template
  16. [16] n8nワークフローライブラリ - Gmail Invoice PDF Extraction to Google Drive and Notion
  17. [17] Docker公式ドキュメント - Networking and Port allocation troubleshooting
  18. [18] n8n公式ドキュメント - File permissions and Docker volume configurations (EACCES)
  19. [19] マイクロソフト公式 - .wslconfigによるWSL 3/WSL 2仮想マシンのメモリ・CPU制限設定
  20. [20] FreeDesktop.org - Containers and local workflow automation security standards

ーーーーーーーーーーーーーーーーーーーーー2025年4月22日執筆ーーーーーーーーーーーーーーーーー

はじめに

 近年、業務効率化や生産性向上の鍵として「自動化」が注目されています。特に、複数のWebサービスやアプリケーションを連携させるワークフロー自動化ツールは、プログラミングの知識がない非エンジニアでも導入しやすく、多くの企業や個人が活用を始めています。

 その中でも、「n8n(エヌエイトエヌ)」は、オープンソースのツールとして人気を集めています。n8nの基本的な概要やメリット・デメリットなどについては、次の記事で詳しく解説されていますので、本記事では割愛します。

 この記事では、Windows 11ユーザー向けに、コンテナ技術「Docker」を利用してn8nのローカル環境を構築する手順、n8n Cloudからのデータ移行、そして具体的な自動化レシピに焦点を当て、初心者の方にも分かりやすく、ステップバイステップでご紹介します。

Dockerとは?アプリケーション実行環境の常識を変えるコンテナ技術

 Dockerは、アプリケーションとその依存関係(ライブラリ、設定ファイルなど)を「コンテナ」と呼ばれる独立した環境にパッケージングし、実行するためのプラットフォームです 。これにより、「開発環境では動いたのに、本番環境では動かない」といった問題を解消し、開発から運用までのプロセスを効率化します 。  

Dockerの基本概念

  • イメージ (Image): コンテナを作成するための設計図やテンプレートです 。アプリケーションを実行するために必要なOS、ライブラリ、コードなどが含まれています。イメージは不変(変更不可)です。
  • コンテナ (Container): イメージを元に作成された、実際にアプリケーションが動作する独立した環境です。ホストOSのカーネルを共有しつつ、プロセスやファイルシステムは隔離されています 。軽量で高速に起動・停止できます 。  
  • ボリューム (Volume): コンテナ内のデータを永続化(保存し続ける)するための仕組みです 。コンテナが削除されてもデータは残り、他のコンテナとデータを共有することも可能です 。Dockerが管理する専用領域にデータが保存されます 。  

 関係性のまとめ: イメージ(設計図)からコンテナ(実行環境)が作られ、コンテナが生成したデータはボリューム(データ保管場所)に保存される、という流れです 。

Dockerを利用するメリット

  • 環境構築の容易さと再現性: Dockerイメージを使えば、誰でも同じ環境を簡単に、素早く構築できます 。開発環境、テスト環境、本番環境の一貫性を保ちやすくなります 。
  • 軽量・高速: 従来の仮想マシン(VM)のようにゲストOSを丸ごと起動する必要がなく、ホストOSのカーネルを共有するため、リソース消費が少なく、起動・停止が非常に高速です 。  
  • リソース効率: 1つのホストマシン上でより多くのコンテナを稼働させられるため、ハードウェアリソースを有効活用でき、コスト削減につながります 。  
  • ポータビリティ: Dockerコンテナは、Dockerが動作する環境であれば、オンプレミス、クラウド、ローカルPCなど、どこでも同じように動作します 。
  • エコシステム: Docker Hubなどで公開されている豊富な公式イメージやコミュニティイメージを利用でき、開発を加速できます 。

Dockerを利用するデメリット・注意点

  • OS依存性: コンテナはホストOSのカーネルを共有するため、基本的にホストと同じ種類のOS(LinuxコンテナはLinuxホスト、WindowsコンテナはWindowsホスト)しか動作させられません 。異なるOSの環境が必要な場合は、仮想マシンが必要です。(ただし、Docker Desktop on WindowsではWSL2を使うことでLinuxコンテナを効率的に実行できます )  
  • 学習コスト: Dockerの概念(イメージ、コンテナ、ボリューム、ネットワークなど)やDockerfileの書き方、Dockerコマンドの習得には時間がかかります 。
  • データの永続化: デフォルトではコンテナを削除するとデータも消えるため、ボリュームなどを利用したデータ永続化の設計が不可欠です 。
  • セキュリティ: イメージの信頼性確認や、コンテナ間の適切な分離、権限管理など、セキュリティに関する考慮が必要です 。信頼できるソースからイメージを取得することが重要です 。
  • 設定の複雑さ: ネットワーク、ストレージ、ログ管理など、設定項目が多く、最適化されていない設定ではリソースを過剰に消費する可能性もあります 。

Dockerが適している場面:
 Dockerは、アプリケーションの開発・テスト・デプロイの効率化、マイクロサービスアーキテクチャの構築、CI/CDパイプラインの実現などに広く利用されています 。n8nのようなWebアプリケーションをローカルで安定して動かしたり、異なる環境へ簡単に移行したりする上でも非常に有効なツールです。

Dockerのメリット・デメリット まとめ

メリット デメリット・注意点
環境構築が簡単で再現性が高い ホストOSと異なるOSのコンテナは基本的に動かせない
軽量・高速な動作 学習コストがかかる
ハードウェアリソースの効率的な利用 データ永続化のための設定が必要
高いポータビリティ セキュリティへの配慮が必要
豊富なエコシステム 設定が複雑になりがち

  Windows 11へのDocker DesktopインストールとWSL2有効化

 Windows 11でDocker(特にLinuxコンテナ)を快適に利用するには、「Docker Desktop for Windows」をインストールし、バックエンドとして「WSL2 (Windows Subsystem for Linux 2)」を使用するのが推奨されています。WSL2は、Windows上でLinux環境を軽量かつ高速に実行するための仕組みです。

システム要件の確認

インストール前に、お使いのPCが以下の要件を満たしているか確認してください 。

  • OS: Windows 11 (Home, Pro, Enterprise, Education) 64-bit, バージョン 22H2 以降
  • プロセッサ: SLAT対応の64ビットプロセッサ
  • RAM: 4GB以上
  • BIOS/UEFI: ハードウェア仮想化支援機能が有効になっていること(通常はデフォルトで有効ですが、無効な場合はBIOS/UEFI設定画面で有効化が必要です)

WSL2の有効化手順

 Windows 11では、WSL2の有効化と必要なコンポーネント(Linuxカーネル、デフォルトのLinuxディストリビューション(通常Ubuntu))のインストールが簡単なコマンド一発で実行できます 。

  1. PowerShellまたはコマンドプロンプトを管理者権限で開きます。
    • スタートメニューを右クリックし、「ターミナル (管理者)」または「Windows PowerShell (管理者)」を選択します。
  2. 以下のコマンドを実行します。
    PowerShell
    wsl --install
    
  3. PCを再起動します。 インストール完了後、再起動を求められる場合があります。
  4. (初回起動時) Linuxディストリビューションのセットアップ: 再起動後、UbuntuなどのLinuxディストリビューションが自動的に起動し、ユーザー名とパスワードの設定を求められる場合があります 。画面の指示に従って設定してください。  

 これでWSL2の基本的なセットアップは完了です。PowerShellまたはコマンドプロンプトで wsl -l -v コマンドを実行すると、インストールされているLinuxディストリビューションとそのバージョン(VERSIONが2になっていればWSL2)を確認できます 。

Docker Desktopのインストール手順

  1. Docker Desktopインストーラーのダウンロード: Docker公式サイトから「Windowsダウンロード-AMD64」を選択して、Windows版のインストーラー (Docker Desktop Installer.exe) をダウンロードします 。
  2. インストーラーの実行: ダウンロードしたインストーラーをダブルクリックして起動します 。
  3. 構成 (Configuration): インストール中に設定画面が表示されます。「Use WSL 2 instead of Hyper-V (recommended)」 のチェックボックスがオンになっていることを確認し、「OK」をクリックします 。これにより、Docker DesktopがWSL2バックエンドを使用するように設定されます。
  4. インストール: 指示に従ってインストールを進めます。完了まで少し時間がかかる場合があります 。
  5. 完了と再起動/ログアウト: インストールが完了したら「Close」ボタンをクリックします。Windowsからのログアウトまたは再起動が必要な場合があります 。  
  6. Docker Desktopの起動: インストール後、Docker Desktopを起動します。初回起動時には利用規約への同意が求められます 。内容を確認し、「Accept」をクリックします。
    注意: 大規模企業(従業員250名以上 または 年間収益1000万ドル以上)での商用利用には有料サブスクリプションが必要です 。個人利用、教育目的、小規模ビジネスなどは無料です。
  7. WSL Integrationの設定確認: Docker Desktopの「Settings」>「Resources」>「WSL Integration」を開き、「Enable integration with my default WSL distro」がオンになっていること、および使用するLinuxディストリビューション(例: Ubuntu)のトグルスイッチがオンになっていることを確認します 。これにより、WSLディストリビューション内からだけでなく、WindowsのコマンドプロンプトやPowerShellからもDockerコマンドが利用できるようになります。

注意点

  • 管理者権限: Docker Desktopのインストールと一部の操作には管理者権限が必要です 。
  • ユーザーグループ: 通常、管理者アカウントでインストールすれば問題ありませんが、管理者アカウントと普段使うユーザーアカウントが異なる場合、ユーザーを docker-users グループに追加する必要がある場合があります 。  
  • Windows Home Edition: Windows 11 HomeでもWSL2とDocker Desktopを利用してLinuxコンテナを実行できます 。ただし、Windowsコンテナは実行できません 。  
  • 既存のHyper-V環境: すでにHyper-Vを他の仮想化ソフトウェア(例: VirtualBoxの古いバージョン)で使用している場合、競合する可能性があります。WSL2はHyper-Vのサブセットである「仮想マシンプラットフォーム」を利用するため、共存は可能ですが、設定には注意が必要です。

 これで、Windows 11上でDocker DesktopがWSL2バックエンドで動作する環境が整いました。

 Dockerでn8nセルフホストAIスターターキットを用いてローカル環境を構築する 

AIスターターキットとは何か?

 n8nセルフホスト型AIスターターキットは、n8n公式が提供するプロジェクトの一つで、n8n本体と、セルフホスト環境でよく利用されるAI関連ツールを、Docker Composeを使って迅速にセットアップできるように設計されています。

 このキットには、n8n本体に加えて、ローカル環境で大規模言語モデル(LLM)を実行するためのOllama、n8nのデータ(ワークフロー、クレデンシャル、実行ログなど)を永続的に保存するためのデータベース(多くの場合PostgreSQL)、そしてキットのバージョンによってはAIアプリケーションで重要となるベクトル埋め込みデータを扱うためのベクトルデータベース(例:Milvus)などが含まれています。

キットを利用する利点

 AIスターターキットを利用することには、以下のような利点があります:

  • 迅速なセットアップ: n8n、Ollama、データベースなどを個別に設定する手間が省け、事前設定済みの構成をすぐに利用開始できます。
  • 統合された環境: n8nとローカルAIツールが連携しやすいように構成されています。
  • Docker Composeによる管理: docker compose up、down、pullといった簡単なコマンドで、関連サービス全体の起動、停止、更新が可能です。

 いよいよ、n8nをインストール準備が整いましたので、n8nセルフホスト型AIスターターキットを用いてインストールし、nn8nを起動してみましょう。

n8nのインストール

 Gitが利用できることが前提で話を進めます。Gitが使えない場合は、GitのWindows版をGit公式サイトからダウンロードしインストールしてください。インストール方法などの細かい説明は省略します。

PowerShell

git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git
cd self-hosted-ai-starter-kit

 警告が出ますが、かまわず実行してください。これを実行するとあなたの「C:\Users\your name」に「self-hosted-ai-starter-kit」と言うディレクトリが作られ、その中にn8nをDocker Compseで動かすためのファイル群が作られます。

n8nの起動

 Docker Composeで起動: 以下のコマンドを実行します。
 以下のコマンドを実行する際には、当然にDocker が起動していることが前提です。

  1. PowerShell
    docker compose up -d
    
    • 初回起動時は各種イメージのダウンロードや初期設定が行われます。
    • すべてのサービス(n8n, Ollama, Qdrant, PostgreSQL)が自動的に立ち上がります。

n8nへのアクセス

  1. Webブラウザを開く: Google ChromeやFirefoxなどのWebブラウザを起動します。
  2. アドレスバーに入力: アドレスバーに http://localhost:5678 と入力してEnterキーを押します 。
  3. Set up Owner account:Emai、First Name、Last Name、Passwordを記入して、「| want to receive security and product updates」の左横の□にチェックを入れ「Next」をクリック。
  4. n8n画面表示: 認証が成功すると、ダッシュボードが表示されます。

 これで、Docker Composeを使用して、データが永続化されるn8nのローカル環境が構築できました。

n8n CloudからDocker環境へのデータ移行

 n8n Cloudで作成したワークフローやクレデンシャルを、今回構築したローカルのDocker環境へ移行する方法について解説します。移行の鍵となるのは、ワークフローのJSONファイルと、特にクレデンシャル(認証情報)の扱いです。

移行の概要と注意点

  • ワークフロー: n8n CloudからJSON形式でエクスポートし、ローカル環境にインポートできます 。
  • クレデンシャル: しかし、n8n Cloudのクレデンシャルは、Cloud環境の暗号化キーで保護されています。このキーにはアクセスできないため、そのままローカル環境に移行しても復号できません 。 
  • 実行履歴: n8n Cloudの実行履歴データは、通常、移行対象にはなりません 。必要であれば、分析用にCSVとしてエクスポートすることは可能です 。

移行方法

 ワークフローは手動で移行できますが、クレデンシャルはローカル環境で再作成する必要があります。

  1. ワークフローのエクスポート (n8n Cloud UI):
    • n8n Cloudにログインし、移行したい各ワークフローを開きます。
    • 右上の「…」メニューから「Download」を選択し、ワークフローをJSONファイルとして個別にダウンロードします 。
  2. ローカルDocker環境の準備: セクション4で構築したDocker環境を起動しておきます (docker compose up -d)。
  3. ワークフローのインポート (ローカルUI):
    • ローカルのn8n (http://localhost:5678) にアクセスします。
    • 「Workflows」ページで「Add workflow」>「Import from File」を選択し、ダウンロードしたJSONファイルを一つずつインポートします 。
  4. クレデンシャルの再作成 (ローカルUI):
    • ローカルn8nの左メニューから「Credentials」を選択します。
    • n8n Cloudで使用していた全てのクレデンシャルを、ローカル環境で手動で新規作成します 。サービスへの接続に必要なAPIキーや認証情報を再度入力する必要があります。
  5. クレデンシャルの再接続:
    • インポートした各ワークフローを開きます。
    • クレデンシャルを使用している全てのノード(例: Gmail, Slack, Google Sheetsノードなど)を編集します。
    • 各ノードの「Credential」ドロップダウンで、ステップ4で再作成したローカルのクレデンシャルを選択し直します 。  
  6. 動作確認: 各ワークフローをテスト実行し、クレデンシャルが正しく設定され、意図通りに動作することを確認します。

【実践レシピ】n8nで作る初めての自動化ワークフロー

 n8nの基本的な使い方がわかったところで、具体的な自動化ワークフロー(レシピ)をいくつか作成してみましょう。ここでは、初心者向けにシンプルで実用的な例を3つ紹介します。

ワークフロー作成の基本

n8nでのワークフロー作成は、以下の流れで行います。

  1. トリガーノードの配置: ワークフローを開始するきっかけとなるノード(例: 定期実行、Webhook受信、メール受信)をキャンバスに配置します 。
  2. アクションノードの追加: トリガーに続いて実行したい処理(例: データ取得、データ加工、通知送信)を行うノードを追加し、線で繋ぎます 。
  3. ノードの設定: 各ノードをクリックし、必要な設定(認証情報、パラメータ、処理内容など)を行います。
    • クレデンシャル: 外部サービス連携には、事前にAPIキーなどをn8nに登録した「クレデンシャル」を選択します 。
    • データ参照: 前のノードからの出力データは、後続ノードの設定画面で {{ $json.key }} や {{ $node["Node Name"].json.key }} のような式(Expression)を使って参照・埋め込みできます 。
  4. テスト実行: 各ノードやワークフロー全体をテスト実行し、意図した通りに動作するか、データが正しく渡されているかを確認します 。Input/Outputデータを確認しながらデバッグできます 。
  5. アクティブ化と保存: ワークフローが完成したら、右上のスイッチを「Active」にして有効化し、保存します。

ワークフローレシピ概要

レシピ名 トリガーノード 主要アクションノード 主な用途
新着GmailをSlackに通知 Gmail Trigger (IF), Slack 特定のメールを受信したら内容をSlackに通知する
Webフォーム入力をGoogle Sheetsに記録 Webhook Trigger Google Sheets Webフォームの送信内容をスプレッドシートに自動記録する
RSSフィード更新をDiscordに通知 RSS Feed Trigger Discord ブログ等の新着記事をDiscordに通知する

 レシピ例1:新着GmailをSlackに通知

ユースケース: 「重要」「請求書」など特定のキーワードが件名に含まれるGmailを受信したら、そのメールの概要をSlackの自分宛DMまたは指定チャンネルに通知します。

必要なノード: Gmail Trigger, IF, Slack

手順:

  1. Gmail Triggerノード追加:
    • Gmail Triggerノード追加: ノードパネルから Gmail Trigger を検索し、キャンバスに追加します。
    • Credentials: 「Credential to connect with」のドロップダウンの隣にある鉛筆アイコン(または「Create New」)をクリックし、画面の指示に従ってGmailアカウントへのアクセスを許可 (OAuth2認証) します。一度認証済みの場合は、既存のCredentialを選択します。
    • Poll Times: ワークフローが新しいメールをチェックする間隔を設定します。
      • Mode: チェック間隔のモードを選択します(例: Every Minute, Every Hour など)。
      • 必要に応じて「Add Poll Time」で詳細な間隔を設定します(デフォルトは1分毎)。
    • Event: 「Event」のドロップダウンで監視したいイベントを選択します。メール受信時にトリガーする場合は 「Message Received」 を選択します。
    • Simplify: 取得するメール情報の詳細度を設定します。
      • トグルスイッチをオフにすると、メールの本文や添付ファイル情報など、より詳細なデータを取得できます(推奨)。
      • トグルスイッチをオンにすると、基本的な情報のみを取得します。
    • Filters: 必要に応じて、特定の条件に合うメールのみをトリガーの対象とする設定です。
      「Add Filter」をクリックし、条件(例: Include 、Spam and Trash、Include Drafts、Label Names or IDs、Search、Read Status、Senderなど)を指定します。ここで、このセクションで何も設定しなかった場合、Gmail Trigger ノードは基本的に Gmail アカウントに届く新しいメールの全てを監視します。
    • Options: その他の詳細設定が必要な場合に使用します。
      「Add option」をクリックして、必要なオプションを追加・設定します(通常はFiltersで十分なことが多いです)。
    • Fetch Test Event: 設定が完了したら、ノード上部にある「Fetch Test Event」ボタンをクリックしてテスト実行します。最近のメール情報が取得できるか確認し、Outputデータの内容を確認しましょう。
  2. IFノード追加:
    • IFノード追加: Gmail Triggerノードの右側の + をクリックし、IF ノードを追加して接続します。
    • Conditions の設定:
      • 「Conditions」セクションに、条件を設定するための入力欄(value1, Operation, value2)が表示されます。
      • value1: 比較したい値として、前のノード(Gmail Trigger)から渡されるメールの件名を指定します。直接入力欄に式 {{ $json.subject }} を入力します。これでメールの件名を参照できます。
      • Operation: 比較方法を選択します。ドロップダウンをクリックし、「A String」→「contains 」を選択します。
      • value2: 比較対象の値として、件名に含まれているかを確認したいキーワードを入力します。例えば、重要 と入力します。
    • これで、メールの件名 (value1 で指定した {{ $json.subject }}) に、入力したキーワード (value2 で指定した 重要) が含まれている (contains 操作) 場合にのみ、IFノードの true 出力に進むようになります。
    • Add condition: 複数の条件を組み合わせたい場合は、「Add condition」ボタンをクリックして新しい条件の行を追加します。条件間の関係(AND/OR)も設定できます。
    • Options: その他の詳細設定が必要な場合に使用します(通常はデフォルト設定で問題ありません)。
  3. Slackノード追加:
    • IFノードの true 出力(上側の点)から + をクリックし、Slack の「Send a Message」アクションを追加して接続します。
    • Credential to connect withで「Create New Credential」をクリックし、Slackアカウントへのアクセスで「OAuth2」を選択し、Client ID、Client Secret を取得します。
      重要:SlackのOAuth認証でセルフホストn8n(PCにインストールした環境)では、OAuth Redirect URLが「http:・・・・」のために、基本的には認証ができませんでした。「https:・・・・」である必要があるためです。これを解決する方法があることはあるのですが、これについてはかなり面倒なのでここでは扱うことはしません。
    • Resource:操作対象のリソースを指定します。メッセージを送信するので、デフォルトの Message のままで問題ありません。
    • Operation:リソース(Message)に対する操作を指定します。メッセージを投稿するので、デフォルトの Send のままで問題ありません。
    • Send Message To:
      • メッセージを送信する宛先の種類を指定します。
      • ドロップダウンをクリックし、Channel または User を選択します。あなたご自身へのDMに送りたい場合は User を選択してください。
    • 通知先の指定:
      • 「Send Message To」で選択した種類に応じて、通知先のチャンネルまたはユーザーを指定します。
      • 例えば「User」を選択した場合、「User」という新しい項目が表示されるので、その下のドロップダウン(From list が選択されているはずです)をクリックし、リストからあなたご自身のユーザー名を選択します。
      • 「Channel」を選択した場合は、同様にリストから通知したいチャンネルを選択します。
    • Message Type: 送信するメッセージのフォーマットを指定します。シンプルなテキストメッセージで通知する場合は、デフォルトの Simple Text Message のままで問題ありません。
    • Message Text:
      • Slackに投稿したいメッセージの内容を入力します。前のノード(Gmail TriggerやIFノード)から渡される情報を含めるには、Expression({{ }})を使用します。
      • 入力欄内の例のように、Gmailノードから取得した件名 ({{ $json.subject }})、差出人 ({{ $json.from.email }} など)、本文抜粋 ({{ $json.textSnippet }}) などを参照して、通知メッセージを作成します。
      • 必要に応じて、日付のフォーマット ({{ $json.internalDate.toDateTime().format("yyyy/MM/dd HH:mm") }}) や文字列の抜粋 ({{ $json.text.slice(0, 100) }}) といったJavaScriptのメソッドもExpression内で利用できます。
      • 特定のノードの出力を参照したい場合は、{{ $node["ノード名"].json.キー名 }} の形式も使用できます。
    • Options: メッセージ送信に関する追加の詳細設定が必要な場合に使用しますが、基本的な通知であれば通常は設定不要です。
    • Test Step: 設定が完了したら、ノード上部にある「Test step」ボタンをクリックしてテスト実行し、Slackの指定した宛先(あなたのDMまたは選択したチャンネル)にメッセージが送信されるか確認します。
  4. アクティブ化と保存: 右上のスイッチを Active にしてワークフローを有効化し、保存します。

 以下がワークフロー図です。

レシピ例2:Webフォーム入力をGoogle Sheetsに記録

作成するワークフローは以下の流れになります。

HTMLフォーム → Webhookノード → Codeノード → Google Sheetsノード

これにより、ユーザーがWebフォームからデータを送信すると、n8nがそれを受け取り、整形してGoogle Sheetsに追記します。

必要なノード: Webhook, code,Google Sheets

手順: Webフォーム入力をGoogle Sheetsに記録するワークフローの作成

 この手順では、以下のHTMLフォームファイル(n8nsend.html)を使用し、フォームからの送信データをGoogle Sheetsに記録します。

HTML
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>お問い合わせフォーム</title>
</head>
<body>
    <h1>お問い合わせフォーム</h1>
    <form action="http://localhost:5678/webhook-test/contact-form-entry" method="POST">
        <div>
            <label for="name">お名前:</label><br>
            <input type="text" id="name" name="name" placeholder="名無し権平" required>
        </div>
        <br>
        <div>
            <label for="email">メールアドレス:</label><br>
            <input type="email" id="email" name="email" placeholder="test@example.com" required>
        </div>
        <br>
        <div>
            <label for="message">メッセージ:</label><br>
            <textarea id="message" name="message" placeholder="これはテストの問い合わせ内容です。" rows="4" cols="50"></textarea>
        </div>
        <br>
        <button type="submit">送信</button>
    </form>
</body>
</html>

(form タグの action 属性に、後ほどn8nのWebhookノードで確認するURLを設定します。ここではテスト用のURLの例を記述しています。)

ステップ1:Google Sheetsスプレッドシートの準備

  1. Google Drive上で、フォームの入力データを記録するための新しいスプレッドシートを作成します。既存のスプレッドシートを使用しても構いません。
  2. 作成したスプレッドシートを開き、データを記録したいシートを選択します(通常は「シート1」など)。
  3. 最初の行(1行目)に、フォームの入力項目に対応するヘッダーテキストを入力します。 後でn8nでマッピングする際に分かりやすくなります。 例:A1セルに 名前、B1セルに メールアドレス、C1セルに メッセージ と入力します。

ステップ2:n8nで新しいワークフローを作成する

  1. n8nのエディター画面を開き、「Add workflow」ボタンをクリックして新しい空のワークフローを作成します。

ステップ3:Webhookノードを追加して設定する

  1. 新しいワークフローのキャンバス上で + ボタンをクリックするか、ノードパネルから Webhook を検索し、キャンバスに追加します。
  2. Webhookノードを選択し、設定パネルを開きます。
  3. HTTP Method: ドロップダウンで POST を選択します。Webフォームの送信は通常POSTメソッドで行われるためです。
  4. Path: Webhookのエンドポイントとなる、ワークフロー内で一意のパスを入力します。例: contact-form-entry
  5. Authentication: ドロップダウンで None を選択します(特に認証を設けない場合)。
  6. Respond: ドロップダウンで Immediately を選択します。フォーム送信を受け付けたことをすぐに呼び出し元に伝えるためです。
  7. 設定パネル上部の「Webhook URLs」セクションに、Test URL と Production URL が表示されます。
    • Test URL: テスト実行時に使用する一時的なURLです。このURLをコピーしておきます。http://localhost:5678/webhook-test/contact-form-entry のような形式になっているはずです。
    • Production URL: ワークフローをアクティブ化した後に使用する本番環境用のURLです。

ステップ4:Codeノードを追加して設定する

  1. Webhookノードの右側の + をクリックし、ノードパネルから Code を検索・クリックして追加します。

  2. Codeノードを選択し、設定パネルを開きます。

  3. Language: JavaScript になっていることを確認します。

  4. コードエディタに、以下のJavaScriptコードを記述します。このコードは、Webhookノードから渡されたフォームデータ(body に含まれる)を抽出し、Google Sheetsノードが期待する形式に整形するためのものです。

    JavaScript
    // CodeノードのInputデータは、通常、前のノードのOutputデータの配列として提供されます。
    // Webhookノードは1つのアイテムを出力するので、ここでは最初のアイテムのjsonデータを取得します。
    const webhookOutputData = $input.first().json;
    
    // WebhookのOutputデータの 'body' プロパティにフォームデータが入っています。
    // HTMLフォームからは application/x-www-form-urlencoded 形式で送信され、
    // Webhookノードがこれを自動で解析してbodyに格納しています。
    const formData = webhookOutputData.body;
    
    // Google Sheetsノード(Append Row)が期待する形式(JSONオブジェクトの配列)に整形します。
    // 配列の各オブジェクトがスプレッドシートの新しい1行に対応します。
    const googleSheetsData = [{
      // ここで、Google Sheetsのスプレッドシートに書き込みたいデータ項目(列)と、
      // Webhookから受け取ったフォームデータをマッピングします。
      // スプレッドシートのヘッダー(例: 名前, メールアドレス, メッセージ)に対応させるキー名を指定し、
      // その値としてフォームデータを formData.キー名 で参照します。
      name: formData.name,
      email: formData.email,
      message: formData.message
      // 必要に応じて、他にもフォーム項目があればここに追加します。
    }];
    
    // 整形したデータをCodeノードのOutputとして返します。
    return googleSheetsData;
    

    (コード内の formData.name, formData.email, formData.message は、HTMLフォームの<input>や<textarea>タグの name 属性の値と一致させてください。)

ステップ5:Google Sheetsノードを追加して設定する

  1. Codeノードの右側の + をクリックし、ノードパネルから Google Sheets を検索・クリックして追加します。
  2. Google Sheetsノードを選択し、設定パネルを開きます。
  3. Action: ドロップダウンで Sheet Within Document が選択されていることを確認し、その下のドロップダウンで Append row in sheet を選択します。
  4. Credential to connect with: ドロップダウンをクリックし、GoogleアカウントのCredentialを選択します。初めて連携する場合は「Create New credential」をクリックし、画面の指示に従ってGoogleアカウントへのアクセスを許可します。
  5. Document: データを追記したいGoogle Sheetsスプレッドシートを指定します。ドロップダウンから対象のスプレッドシートを選択します。リストに表示されない場合は、スプレッドシートのURLに含まれるIDを直接入力することもできます。
  6. Sheet: データを追記したいスプレッドシート内のシートを指定します。ドロップダウンから対象のシート名を選択します。
  7. Mapping Column Mode: ドロップダウンで Map Each Column Manually を選択します。
  8. Values to Send: ここで、Codeノードから渡されるデータとスプレッドシートの列のマッピング設定を行います。
    • 「Add column to send」というテキストの横にあるドロップダウンアイコンをクリックし、新しい入力欄をスプレッドシートに書き込みたいデータの数だけ追加します(例: 3つ)。
    • 追加された各入力欄の左側の「Sheet Column」に、スプレッドシートの対応する列(例: A, B, C またはヘッダー名「名前」「メールアドレス」「メッセージ」)を入力します。
    • 追加された各入力欄の右側の「Column Value」に、CodeノードのOutputデータのキーを参照するExpressionを入力します。CodeノードのOutputは name, email, message をトップレベルに持つので、Expressionは以下のようになります。
      • 名前 (name): {{ $json.name }}
      • メールアドレス (email): {{ $json.email }}
      • メッセージ (message): {{ $json.message }} 入力欄の右側のアイコン( Expression ビルダー)を使うと、CodeノードのOutputデータ構造を見ながら簡単に Expression を作成できます。

ステップ6:ワークフロー全体のテスト

  1. Google Sheetsノードの設定が完了したら、ワークフロー全体のテストを行います。
  2. Webhookノードを選択し、右上の「Listen for test event」ボタンをクリックします。 ボタンの色が変わり、Webhook URL(Test URL)が表示され、受信待機状態になります。
  3. 用意したHTMLファイル(n8nsend.html)をWebブラウザで開きます。
  4. フォームにテストデータを入力し、「送信」ボタンをクリックします。
  5. データがWebhookのTest URLに送信され、n8nのWebhookノードがそれを受信します。
  6. n8nのエディター画面に戻り、各ノードの下にOutputデータが表示されているか確認します。
    • Webhookノードの下にOutputが表示され、body にフォームデータが含まれているか確認。
    • Codeノードの下にOutputが表示され、name, email, message を持つ整形されたデータになっているか確認。
    • Google Sheetsノードの下にOutputが表示され、スプレッドシートに新しい行としてデータが追記されたか確認します。 実際にGoogle Sheetsを開いてデータが書き込まれたか確認してください。

ステップ7:ワークフローのアクティブ化と保存

  1. ワークフローが期待通りに動作することを確認したら、ワークフローを有効化します。エディター右上のスイッチを「Active」に切り替えます。
  2. ワークフローを保存します。名前を付けて保存してください。
  3. 重要: ワークフローをActiveにすると、Webhookノードの「Production URL」が有効になります。HTMLファイル(n8nsend.html)を開き、form タグの action 属性に設定されているURLを、WebhookノードのProduction URL に書き換えてください。今後、このフォームから送信されたデータは、アクティブなワークフローによって処理されるようになります。

 これで、「Webフォーム入力をGoogle Sheetsに記録する」ワークフローが完成しました。いつでもフォームからデータを送信すると、自動的にGoogle Sheetsに追記されます。お疲れ様でした!

 以下がワークフロー図です。

レシピ例3:RSSフィード更新をDiscordに通知

ユースケース: 好きなブログやニュースサイトのRSSフィードを定期的にチェックし、新しい記事が公開されたら、そのタイトルとリンクをDiscordの特定のチャンネルにメッセージとして投稿します。

必要なノード: RSS Feed Trigger、Discord

【手順】

ステップ1:準備 - Discord側でWebhook URLを作成する

 n8nからメッセージを投稿したいDiscordチャンネルにWebhookを設定します。

  1. 通知メッセージを投稿したい Discordサーバー および テキストチャンネル を決めます。(例: ご自身で作成したテストサーバーの #general チャンネルなど)
  2. そのテキストチャンネルを開き、チャンネル名の横にある 歯車アイコン(チャンネル設定) をクリックします。
  3. 設定メニューの「連携サービス」(または「インテグレーション」)を選択します。
  4. 「Webhookを作成」ボタンをクリックします。
  5. 新しいWebhookが作成されます。Webhookの名前(例: n8n通知 や Spidey Bot など、Botの名前として表示されます)を設定できます。
  6. 表示されているWebhook URLの右側にある「Webhook URLをコピー」ボタンをクリックし、URLをコピーします。このURLは後でn8nで必要になりますので、安全な場所に一時的に控えておいてください。
    • 注意: Webhookを作成するには、そのサーバーおよびチャンネルで「Webhookの管理」権限が必要です。権限がない場合は作成できません。

ステップ2:n8nで新しいワークフローを作成する

  1. n8nのエディター画面を開き、「Add workflow」ボタンをクリックして新しい空のワークフローを作成します。

ステップ3:RSS Feed Read Triggerノードを追加して設定する

  1. ノードパネルから RSS Feed Trigger を検索し、キャンバスに追加します。これがワークフローの開始点(トリガー)となります。
  2. RSS Feed Read Triggerノードを選択し、設定パネルを開きます。
  3. URL: 監視したいRSSフィードのURLを入力します。例: https://gigazine.net/news/rss_2.0/
  4. Poll Times: フィードをチェックする間隔を設定します。ドロップダウンで Every Hour や Every 15 Minutes などを選択します。ワークフローをアクティブ化すると、この間隔で自動的にフィードが監視されます。
  5. 設定パネル上部の 「Fetch Test Event」 ボタンをクリックします。n8nがRSSフィードを一度読み込み、新しい記事があればそのデータを取得します。
    • テストが成功しOutputデータが表示されたら、そのデータを開いて内容を確認します。特に、記事のタイトル(title)やリンク(link)といった、通知メッセージに含めたい情報のキー名を確認しておきます。

ステップ4:Discordノードを追加して設定する

  1. RSS Feed Read Triggerノードの右側の + をクリックし、ノードパネルから Discord を検索・クリックして追加し、接続します。
  2. Discordノード追加時のアクション選択画面が表示されたら、「MESSAGE ACTIONS」セクションの Send a message を選択します。
  3. Discordノードを選択し、設定パネルを開きます。
  4. Credential to connect with:
    • ドロップダウンで「Create New」を選択します。
    • 新しいCredentialの作成画面が表示されます。「Connection Type」で Webhook を選択します。
    • 「Webhook URL」入力欄に、ステップ1でDiscord側でコピーしたWebhook URLを貼り付けます。
    • Credentialに任意の名前を付けて(例: My Discord Notification Webhook)、「Save」をクリックします。
    • 既にWebhookのCredentialを作成済みの場合は、ドロップダウンから既存のCredentialを選択します。
    • (Bot Token認証について: Bot TokenやOAuth2を使った認証方法もありますが、設定がより複雑になるため、特定のチャンネルへの通知であればWebhook URLを使うのが簡単で推奨です。)
  5. Resource / Operation: 「Send a message」アクションを選択した場合、通常これらの項目は自動的に Message と Send に設定されているはずです。設定パネルで確認します。
  6. Webhook URL: Credential設定でWebhook URLを指定した場合、ここにCredentialで設定したWebhook URLが表示されているはずです。通知先のチャンネルはWebhook URLに紐づいているため、この項目で別途チャンネル名やChannel IDを指定する必要はありません。
  7. Message: Discordチャンネルに投稿したい通知メッセージの内容を記述します。RSS Feed Read Triggerノードから取得した記事の情報をExpression({{ }})を使って埋め込みます。
    • 例:
      新しい記事が公開されました!
      タイトル: {{ $json.title }}
      リンク: {{ $json.link }}
      
    • {{ $json.title }} や {{ $json.link }} の部分は、ステップ3の「Fetch Test Event」で確認したRSSフィードのOutputデータのキー名に合わせて修正してください。Expression入力欄の右側にあるアイコン(Expressionビルダー)を使うと、簡単にデータ項目を参照できます。
  8. Options / Embeds / Files: これらはメッセージの追加設定ですが、シンプルなテキスト通知であれば通常設定不要です。
  9. 設定が完了したら、Discordノード上部の 「Test step」 ボタンをクリックします。
    • これにより、RSS Feed Read Triggerノードのテストデータを使ってDiscordノードが実行され、ステップ1でWebhookを作成したDiscordチャンネルにテストメッセージが投稿されます。
    • Discordを開き、テストメッセージが正しく投稿されたか、メッセージ内容が期待通りになっているか確認してください。

ステップ5:ワークフローのアクティブ化と保存

  1. ワークフロー全体(RSS Feed Read Triggerノード → Discordノード)が期待通りに動作することを確認したら、ワークフローを自動実行するために有効化します。エディターの右上にあるスイッチを 「Active」 に切り替えます。スイッチの色が緑色になります。
  2. ワークフローを保存します。ワークフローの名前を付けて保存してください。

 これで、RSSフィードが更新されるたびに、設定したDiscordチャンネルに通知メッセージが自動的に投稿されるようになります。

 これらの手順は基本的なものですが、n8nを使えばさらに複雑で便利な自動化を実現できます。ぜひ色々なノードを試してみてください。

初心者向け:関連用語解説

 n8nやDockerを使いこなす上で、いくつか知っておくと便利な専門用語があります。ここでは、特に重要な用語を初心者向けに解説します。

用語 簡単な説明 n8n/Dockerとの関連性
API (エーピーアイ) アプリケーション同士が情報や機能をやり取りするための「接続窓口」や「命令セット」のこと 。 n8nは様々なWebサービス(Gmail, Slack等)のAPIを利用して連携を実現します 。各ノードは裏側で対応するAPIを呼び出しています。
Webhook (ウェブフック) あるシステムで特定の出来事(イベント)が起きた時に、指定されたURLへ自動的に「通知」を送る仕組み 。 n8nの Webhook トリガーノードは、外部サービスからの通知(例: フォーム送信、決済完了)を受け取ってワークフローを開始するために使われます 。
JSON (ジェイソン) データを「キー: 値」のペアで記述するための、軽量なテキスト形式のデータフォーマット [ (示唆), (示唆)]。 n8nのノード間でデータを受け渡す際の標準的な形式です 。テスト実行時に表示されるInput/Outputデータはこの形式です。
クレデンシャル サービスにアクセスするための「認証情報」のこと。APIキー、ユーザー名/パスワード、トークンなど 。 n8nで外部サービス連携ノードを使う際、そのサービスに接続するためのクレデンシャルをn8nに登録・設定する必要があります 。n8nはこれを暗号化して保存します 。
ノード (Node) n8nワークフローを構成する個々の「処理ブロック」のこと 。トリガー、アクション、条件分岐などがあります。 n8nのワークフローは、これらのノードを線で繋ぎ合わせて作成します 。
ワークフロー (Workflow) ノードを繋ぎ合わせて作成した、一連の「自動化処理の流れ」全体のこと 。 n8nを使って作成する自動化の単位そのものです 。
Dockerイメージ (Image) コンテナを作るための「設計図」や「テンプレート」 。OS、アプリ、ライブラリ等が含まれます。 n8nをDockerで動かす際には、n8nの公式Dockerイメージ (docker.n8n.io/n8nio/n8n) を使います 。
Dockerコンテナ (Container) Dockerイメージから作成された、実際にアプリケーションが動作する「隔離された実行環境」 。 Dockerを使ってn8nを実行する場合、n8nアプリケーションはこのコンテナの中で動作します。
Dockerボリューム (Volume) コンテナ内のデータを永続化(保存し続ける)するためのDockerが管理する「特別な保管場所」 。 n8nのワークフローやクレデンシャル情報をコンテナ削除後も保持するために、Dockerボリュームを設定してデータを保存します 。
Docker Compose 複数のDockerコンテナを定義し、まとめて管理するためのツール 。設定は docker-compose.yml ファイルに記述します。 n8nとデータベース(例: PostgreSQL)コンテナを一緒に起動・管理するのに便利です 。この記事でもComposeを使った構築を推奨しています。
WSL2 Windows上でLinux環境を軽量かつ高速に実行するための仕組み。 Windows 11でDocker Desktopを使いLinuxコンテナ(n8nなど)を快適に動かすための推奨バックエンドです 。

   これらの用語の意味を理解しておくと、n8nやDockerに関するドキュメントを読んだり、トラブルシューティングを行ったりする際に役立ちます。

まとめ:n8nとDockerで自動化を始めよう

 この記事では、Windows 11環境でDockerを使ってオープンソースのワークフロー自動化ツールn8nのローカル環境を構築する方法を、基礎から実践まで詳しく解説しました。

学んだことの要約:

  • n8nの基本的な機能、特徴、メリット・デメリット
  • Dockerの基本概念(イメージ、コンテナ、ボリューム)と利点・注意点
  • Windows 11へのDocker DesktopインストールとWSL2の有効化手順
  • Docker Composeを使ったn8nとPostgreSQL環境の構築方法
  • Dockerボリュームによるデータ永続化の重要性と設定方法
  • n8nデータの移行、バックアップ、リストアの手順(特に暗号化キーの重要性)
  • Gmail、Slack、Webフォーム、Google Sheets、RSS、Discordを使った具体的な自動化レシピ例
  • 関連する専門用語の解説

ローカル環境でn8nとDockerを使うメリット:

Dockerを使ってn8nをローカル環境で動かすことには、以下のような大きなメリットがあります。

  • コスト効率: n8n自体が無料であり、ローカル実行なら高価なクラウドサービスの利用料も不要です 。
  • データプライバシー: ワークフローや処理するデータが外部に出ることがなく、機密情報を安全に扱えます。
  • 高い柔軟性: ローカルファイルへのアクセスや、クラウドサービスでは制限される可能性のある自由なカスタマイズが可能です 。
  • 学習と実験: 安全なローカル環境で、コストを気にせず自由に様々な自動化を試すことができます。

自動化による可能性:
n8nとDockerを組み合わせることで、これまで手作業で行っていた定型業務や、複数のサービスを跨る複雑な作業を自動化し、大幅な時間短縮と効率化を実現できます 。これにより、より創造的な作業や、本来注力すべき業務に集中するための時間を生み出すことができるでしょう。  

次のステップへのヒント:
今回構築した環境は、自動化への第一歩です。さらにn8nを使いこなすために、以下のステップに進むことをお勧めします。

  • 公式ドキュメントとコミュニティ: n8nの公式ドキュメントやコミュニティフォーラムには、豊富な情報や他のユーザーとの交流の場があります 。 
  • 連携サービスとテンプレート: n8nが対応する700以上の連携サービス を探索し、公式テンプレート を試してみましょう。
  • 複雑なワークフロー: 条件分岐 (IF)、ループ (Loop)、エラーハンドリング、サブワークフローなどの機能を活用して、より高度なワークフロー構築に挑戦してみましょう 。
  • AI機能の活用: n8nはAI連携機能も強化されています 。OpenAIやローカルLLM (Ollamaなど) を使ったメール要約、テキスト生成、データ分析などの自動化も可能です 。

 Docker上で動作するn8nは、あなたのWindows PCを強力な自動化ハブに変える可能性を秘めています。ぜひこの記事を参考に、あなた自身の「あったらいいな」を実現する自動化ワークフローを作成してみてください。

コメント

タイトルとURLをコピーしました