公開日:

自分専用DifyにFirecrawlもセルフホスト

Authors
  • author image
    Name
    代表取締役 宮永邦彦
    Twitter
    @miyanaga
  • 画像軽量化とWebフロントエンドのスピード改善の専門家です。Web系のIT技術大好き。

    このサイトではスピード改善のリアルや、日々の技術的な気づきを共有します。

この記事はVPSでお安く自分専用のDifyを持つ方法の続きだ。

Difyは、WebクローラーであるJina ReaderまたはFirecrawlと連携することで簡単にRAGを実現できる。

Firecrawlもオープンソースでセルフホストできる。そこでDifyをインストールしたVPSにFirecrawlもインストールし、こちらもお安く実現してみた。

その手順を紹介する。


Firecrawlのセットアップ

Firecrawlをgit clone

Firecrawlのオープンソースプロジェクトをgit cloneする。

バージョン v1.0.0

執筆時点(2024年10月4日)でmainブランチをCloneしたところ、正常に動作しなかった。そこでタグv1.0.0を使うことにする。

安定版については都度、確認されたい。

bash
git clone https://github.com/mendableai/firecrawl.git -b v1.0.0
cd firecrawl

Firecrawlの.envを用意

環境変数ファイルの雛形apps/api/.env.exampleを元に.envファイルを用意する。

bash
cp apps/api/.env.example .env

.envを編集し、次の2点を変更する。

bash
USE_DB_AUTHENTICATION=false
TEST_API_KEY=fc-my-firecrawl # 任意のキー(先頭のfc-は必須)

USE_DB_AUTHENTICATIONは、詳しくわかっていないがユーザー管理をするSupabaseと連携するためのようだ。少なくとも今回は自分専用なので利用しない。

TEST_API_KEYは後ほどDifyで指定するAPIキーである。複雑なものを指定してもよいが、fc-という接頭辞は必須らしい。

Firecrawlを起動

Docker ComposeでFirecrawlを起動する。

bash
docker compose up -d --build

筆者の環境では初回のビルドに5分ほどかかった。気長に待とう。

起動が完了し、少し待ってから次のようにテストレスポンスが得られたら起動は成功である。

bash
curl -X GET http://localhost:3002/test
# 出力
Hello, world!

Firecrawlを登録する

DifyとFirecrawlのネットワーク接続

DifyとFirecrawlは異なるDocker Composeプロジェクトで動作しているので、このままではスムーズに接続できない。

次のコマンドで両者をネットワーク接続し、DifyのapiコンテナとworkerコンテナからFirecrawlのapiコンテナをfirecrawlとして参照可能にする。

bash
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

接続元について

Difyは多くのコンテナから構成されている。筆者の予想ではapiworkerからFirecrawlを参照できればよいと踏んで動作もしたが、もしかしたら過不足があるかもしれない。

Firecrawlの設定

DifyのWeb画面を開き、右上のメニューから設定 - 設定メニューからデータソース - Firecrawlについての設定ボタンを押す。

データソースの設定画面

API KeyBase URLを指定し、保存ボタンを押す。

Firecrawlの設定画面

API Keyは先ほど.envファイルに指定したfc-から始まるキーだ。

Base URLは、http://firecrawl:3002とする。

アクティブなアーカイブ

Firecrawlがアクティブになれば連携完了である。

ウェブサイトをクロールしてベクトルデータベースにコンテンツを格納し、RAGを実現できるようになった。