はじめに Link to heading
業務効率化のためのSaaSツールは増え続けていますが、それぞれが孤立してしまい、「ツール疲れ」を感じていませんか?データが分散し、手動作業が増え、本来の業務に集中できない…そんな課題を解決するのが、ワークフロー自動化ツールです。
本記事では、n8n(汎用ワークフロー自動化)とDify(LLM特化型プラットフォーム)という2つの強力なオープンソースツールをDockerでセルフホストし、AI駆動のワークフロー環境を構築する方法を解説します。
なぜn8nとDifyの両方が必要なのか Link to heading
それぞれの役割 Link to heading
この2つのツールは互いに補完し合う関係にあります:
┌─────────────────────────────────────────────────┐
│ n8n │
│ - トリガー管理(Webhook、スケジュール) │
│ - 外部SaaSとのデータ連携 │
│ - データの前処理・後処理 │
│ - 通知・レポート配信 │
└──────────────┬──────────────────────────────────┘
│ API連携
┌──────────────▼──────────────────────────────────┐
│ Dify │
│ - LLMによる自然言語処理 │
│ - RAGによる知識ベース検索 │
│ - エージェント実行 │
│ - プロンプト最適化 │
└─────────────────────────────────────────────────┘
n8n: 汎用ワークフロー自動化の王道 Link to heading
主な特徴:
- Zapier/Makeのオープンソース代替
- 1000以上の統合ノード(Slack, Notion, GitHub, Google Workspace等)
- ビジュアルワークフローエディタ
- JavaScriptによるカスタムロジック記述
得意なこと:
- 外部サービス間のデータ連携
- 定期的なデータ収集・集計
- 通知・レポート配信
- バックオフィス業務の自動化
使用例:
1. Slackで特定のキーワードが投稿されたら
2. Notionに自動でタスクを作成
3. 担当者にメール通知
Dify: LLM特化型のワークフローエンジン Link to heading
主な特徴:
- LLMOps(LLM Operations)プラットフォーム
- 複数LLMプロバイダーの一元管理(OpenAI, Anthropic, Azure OpenAI等)
- RAG(検索拡張生成)パイプライン構築
- プロンプトのバージョン管理とA/Bテスト
得意なこと:
- LLMを使った自然言語処理
- 社内ナレッジベースの活用(RAG)
- プロンプトの最適化
- AIチャットボット・アシスタントの構築
使用例:
1. 社内FAQをベクトルDBに格納
2. ユーザーの質問を受け取る
3. RAGで関連情報を検索
4. LLMで文脈を考慮した回答を生成
比較表 Link to heading
| 観点 | n8n | Dify |
|---|---|---|
| 主な用途 | SaaS連携・データ自動化 | LLM処理・AIアプリ開発 |
| 統合数 | 1000+ | LLM中心 |
| プロンプト管理 | ❌ | ✅ |
| RAG機能 | ❌ | ✅ |
| Webhook/スケジューラ | ✅ | △ |
| 条件分岐の柔軟性 | ✅ | △ |
| ライセンス | Sustainable Use | Apache 2.0 |
実践的なユースケース Link to heading
ケース1: 自動カスタマーサポート Link to heading
[顧客] Slackで質問
↓
[n8n] 質問を受信 → テキスト前処理
↓
[Dify] RAGで社内ナレッジ検索 → LLMで回答生成
↓
[n8n] Slackに返信 + Notionに記録 + 未解決なら担当者に通知
ケース2: コンテンツ生成パイプライン Link to heading
[n8n] Google Sheetsからトピックリスト取得
↓
[Dify] 各トピックについてLLMで記事生成
↓
[n8n] WordPressに投稿 + SEO最適化 + SNSでシェア
ケース3: データ分析レポート自動化 Link to heading
[n8n] 定期実行(毎週月曜9時)
↓
[n8n] データベースから週次データ抽出
↓
[Dify] LLMでデータ分析と洞察レポート生成
↓
[n8n] レポートをPDF化 → メール送信 → Slackに通知
Docker環境の構築 Link to heading
前提条件 Link to heading
- Docker 20.10以上
- Docker Compose 2.0以上
- 最低8GBのメモリ(推奨16GB)
セルフホストのメリット Link to heading
- ✅ コスト削減: 従量課金なし、無制限の実行回数
- ✅ データプライバシー: 機密情報を自社環境で管理
- ✅ カスタマイズ性: 環境変数、ネットワーク設定の自由度
- ✅ スケーラビリティ: 必要に応じてリソースを調整可能
インストール手順 Link to heading
1. リポジトリのクローン Link to heading
1git clone https://github.com/0xchoux1/ai-workflow-engine.git
2cd ai-workflow-engine
2. 環境変数の設定 Link to heading
1cp .env.example .env
2vim .env
重要な設定項目:
1# n8n認証情報(必ず変更!)
2N8N_BASIC_AUTH_USER=your_username
3N8N_BASIC_AUTH_PASSWORD=strong_password
4
5# Difyシークレットキー(必ず変更!)
6DIFY_SECRET_KEY=your-secret-key-here
7
8# データベースパスワード
9POSTGRES_PASSWORD=your_db_password
10REDIS_PASSWORD=your_redis_password
3. Docker環境の起動 Link to heading
1docker compose up -d
4. 起動確認 Link to heading
1# コンテナの状態確認
2docker compose ps
3
4# ログの確認
5docker compose logs -f
構成の詳細 Link to heading
起動するサービス:
n8n (port 5678) - ワークフローエディタ
dify-web (port 3000) - Dify フロントエンド
dify-api (port 5001) - Dify API
dify-worker - バックグラウンドタスク
postgres (port 5432) - データベース
redis (port 6379) - キャッシュ & キュー
weaviate (port 8080) - ベクトルDB
データの永続化:
n8n_data: n8nのワークフローとクレデンシャルdify_app_storage: Difyのアップロードファイルpostgres_data: データベースredis_data: Redisのスナップショットweaviate_data: ベクトルデータベース
初回セットアップ Link to heading
n8nのセットアップ Link to heading
- ブラウザで
http://localhost:5678にアクセス - 管理者アカウントを作成
- 初期ワークフローを試す
Difyのセットアップ Link to heading
- ブラウザで
http://localhost:3000にアクセス - 管理者アカウントを作成
- LLMプロバイダーを設定:
- OpenAI APIキー
- または Anthropic Claude
- または Azure OpenAI
n8nとDifyを連携させる Link to heading
基本的な連携方法 Link to heading
方法1: HTTP Request(n8n → Dify)
- n8nでHTTP Requestノードを使用
- DifyのAPIエンドポイントを呼び出し
- レスポンスを次のノードに渡す
方法2: Webhook(Dify → n8n)
- n8nでWebhookノードを作成
- DifyのワークフローからWebhook URLを呼び出し
- n8nで後続処理を実行
実装例:Slackボットの構築 Link to heading
ゴール: Slackでメンションされたら、AIが返答する
n8n側の設定:
1. Slack Trigger: @botにメンション
2. HTTP Request: Dify APIに質問を送信
3. Slack: 回答を投稿
4. Notion: ログを記録
Dify側の設定:
1. Chatbot Appを作成
2. RAGでナレッジベースを設定
3. システムプロンプトを最適化
4. APIキーを発行
トラブルシューティング Link to heading
ポート競合 Link to heading
既に使用されているポートを変更する場合:
1# docker-compose.ymlを編集
2ports:
3 - "15678:5678" # n8nのポート変更例
メモリ不足 Link to heading
1# Dockerのリソース制限を確認
2docker stats
3
4# docker-compose.ymlにメモリ制限を追加
5services:
6 dify-api:
7 mem_limit: 2g
Dify起動エラー Link to heading
データベースの初期化を待つ:
1docker compose up -d postgres
2sleep 10
3docker compose up -d
ベストプラクティス Link to heading
セキュリティ Link to heading
- すべてのデフォルトパスワードを変更
-
.envファイルをGit管理外に - 本番環境ではHTTPS(SSL/TLS)を設定
- APIキーの権限を最小限に
- 定期的なセキュリティアップデート
バックアップ戦略 Link to heading
n8nデータのバックアップ:
1docker compose exec n8n sh -c \
2 "cd /home/node/.n8n && tar czf - ." \
3 > n8n-backup-$(date +%Y%m%d).tar.gz
Difyデータベースのバックアップ:
1docker compose exec postgres pg_dump \
2 -U postgres dify \
3 > dify-backup-$(date +%Y%m%d).sql
運用Tips Link to heading
- ワークフローのバージョン管理: n8nの設定をJSON出力してGit管理
- ログモニタリング: Grafana/Prometheusとの統合検討
- リソース監視:
docker statsで定期チェック
まとめ Link to heading
n8nとDifyを併用することで、以下のような強力なAIワークフロー環境を構築できます:
- n8n: 外部SaaSとの連携、トリガー管理、データ処理
- Dify: LLMによる知的処理、RAG、プロンプト管理
セルフホストすることで、コスト削減とデータプライバシーを両立しながら、柔軟なカスタマイズが可能になります。
次のステップ Link to heading
- 基本を試す: まずはシンプルなワークフローから
- 連携を深める: n8nとDifyのAPI連携を実装
- 独自のユースケース: 自社の業務に適用
- コミュニティ参加: GitHub、Discord等で情報交換
今後の可能性 Link to heading
- マルチエージェント: 複数のAIエージェントが協調
- より高度なRAG: GraphRAG、HyDEなどの手法
- オープンソースLLMの活用: Llama、Mixtralなど
参考リソース Link to heading
この環境を使って、あなたの業務を効率化する最初の一歩を踏み出してみませんか?