🔥

XserverVPSでDifyとFirecrawlを連携させる方法

2024/12/03に公開

今回は、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の設定

  1. Difyにログイン
  2. 右上のアカウントから「設定」を開く
  3. データソースの「ウェブサイト(によるFirecrawl)」の設定ボタンをクリック
  4. 以下の情報を入力:

Base URLは、httpsではなく、httpで設定してね!

または、上部の「ナレッジ」から「知識を作成」、「ウェブサイトから同期」でも設定できる。

setting_Firecrawl

ナレッジベースの作成

Step 7: ウェブサイトの登録

  1. Difyの「ナレッジ」から「+ナレッジを作成」をクリック
  2. 「ウェブサイトから同期」を選択
  3. クロールしたいウェブサイトのURLを入力
  4. 「次へ」を押して設定を完了

(補足)Firecrawlのオプション設定

Extract_web_content_with_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