XserverVPSでDifyとFirecrawlを連携させる方法
今回は、XserverVPSにインストールしたDifyにFirecrawlを連携させる方法を解説します。この設定により、ウェブサイトの情報を自動で収集し、AIチャットボットの知識ベースとして活用できるようになります。
前提条件
必要なスペック(Xserverプラン)
- vCPU:4コア以上
- メモリ:4GB以上
- NVMe SSD:100GB以上
事前準備
- XserverVPSの契約が完了していること
- Difyがすでにインストールされていること
- SSHでの接続方法を理解していること
XserverのVPSコンソールはコピー&ペーストが制限されているため、SSHクライアント(TeraTerm)やWindowsのコマンドプロンプトなどをお勧めします:
WindowsのコマンドプロンプトでSSH接続
基本的な接続方法
ssh ユーザー名@接続先のホスト
例
ssh root@123.45.67.89
パスワードを聞かれるので、Difyを導入する際にXserverのVPSコンソールで設定したパスワードを入力します。
インストール手順
Step 1: FirecrawlのGitHubリポジトリをクローン
cd ~
git clone https://github.com/mendableai/firecrawl.git
Step 2: 環境設定ファイルの準備
cd firecrawl
cp apps/api/.env.example .env
Step 3: 環境設定ファイルの編集
nanoとかvimで編集する。
nano .env
以下の内容を設定します:
REDIS_URL=redis://redis:6379
USE_DB_AUTHENTICATION=false
TEST_API_KEY=fc-test
※TEST_API_KEY
の値は自分で決めてOK!ただしfc-
から始める必要があるよ
Step 4: Dockerでの起動
docker compose up -d
Step 5: DifyとFirecrawlのネットワーク連携
DifyのコンテナをFirecrawlのネットワークに接続します:
docker network connect --link firecrawl-api-1:firecrawl firecrawl_backend docker-api-1
docker network connect --link firecrawl-api-1:firecrawl firecrawl_backend docker-worker-1
解説
-
docker network connect
: このコマンドは、既存のコンテナを指定のネットワークに接続します。 -
--link firecrawl-api-1:firecrawl
: このオプションは、Firecrawlのapiコンテナを「firecrawl」という名前でリンクします。 -
firecrawl_backend
: これはFirecrawlのネットワーク名です。 -
docker-api-1とdocker-worker-1
: これらはDifyのコンテナ名です。
Difyでの設定
Step 6: Firecrawlの設定
- Difyにログイン
- 右上のアカウントから「設定」を開く
- データソースの「ウェブサイト(によるFirecrawl)」の設定ボタンをクリック
- 以下の情報を入力:
- API Key:fc-test(.envファイルで設定した値)
- Base URL:http://firecrawl:3002
※Base URL
は、httpsではなく、httpで設定してね!
または、上部の「ナレッジ」から「知識を作成」、「ウェブサイトから同期」でも設定できる。
ナレッジベースの作成
Step 7: ウェブサイトの登録
- Difyの「ナレッジ」から「+ナレッジを作成」をクリック
- 「ウェブサイトから同期」を選択
- クロールしたいウェブサイトのURLを入力
- 「次へ」を押して設定を完了
(補足)Firecrawlのオプション設定
基本設定
Crawl sub-pages
- チェックを入れることで、指定したURLの配下のページも自動的にクロールします
- 例:
https://docs.dify.ai/
を指定した場合、ブログ記事やカテゴリーページなども含めて収集します
制限設定
Limit(ページ数制限)
- クロールするページ数の上限を設定
- 推奨設定:
- 小規模サイト:50~100ページ
- 中規模サイト:100~500ページ
- 大規模サイト:1000ページ以上
Max depth(深さ制限)
- URLの階層の深さを制限
- 設定例:
- ニュースサイト:3(トップ→カテゴリー→記事)
- AITuberブログ:2(トップ→記事)
- 技術ドキュメント:4(トップ→カテゴリー→サブカテゴリー→詳細)
パス設定
Exclude paths(除外パス)
/tag/*
/author/*
/page/*
/category/*
- ブログの場合:タグページやアーカイブページを除外
- ニュースサイトの場合:ランキングページや日付アーカイブを除外
Include only paths(含めるパス)
/news/*
/blog/*
/docs/*
- AITuberサイトの場合:
/stream/*
や/video/*
- 技術情報サイトの場合:
/technical/*
や/case-study/*
コンテンツ抽出設定
Extract only main content
- ヘッダー、ナビゲーション、フッターなどを除外し、本文のみを抽出
- 特に有効なケース:
- ニュース記事:本文と画像のみを抽出
- 技術ドキュメント:説明文とコードスニペットのみを抽出
- AITuber記事:活動報告や実績の本文のみを抽出
これらの設定を適切に組み合わせることで、必要な情報のみを効率的に収集できます。
トラブルシューティング
401 Unauthorizedエラーが発生する場合
- API Keyが
fc-
から始まっているか確認 - .envファイルの
TEST_API_KEY
とDifyの設定画面のAPI Keyが一致しているか確認 - Base URLが
http://firecrawl:3002
になっているか確認
注意点
- クローリング実行中はサーバーの負荷が高くなります
- 大量のデータを扱う場合は、メモリ8GB以上のプランへのアップグレードを検討してください
- パケットフィルターでポート3002を開放する必要があります
まとめ
この設定により、Difyでウェブサイトの情報を自動収集し、AIチャットボットの知識ベースとして活用できるようになりました。初期設定は少し複雑ですが、一度設定してしまえば、あとは簡単にウェブサイトの情報を収集できます。
参考記事
セルフホストしたDifyとNotionを接続する方法
Firecrawlをローカルで動かしDifyと繋げてみる
Firecrawl Quickstart
Discussion