当前位置: 首页 > ops >正文

AI数据爬虫工具Firecrawl部署安装及Dify调用方法

简介

Firecrawl 是一个可以提供 API 服务的开源爬虫工具,我们只需要给它一个 URL,无需提供网站地图(sitemap),它就能抓取该 URL 的当前网页或更深层的网页,并可以把抓到的数据转变成 markdown 格式,这种格式更适合 LLM 阅读,在当今的 AI 浪潮下可以说是非常适合了。
在这里插入图片描述

截至 2025 年 3 月,Firecrawl 支持以下功能:

  • Scrape:抓取 URL 当前页面的内容,可以以 markdown 格式返回。
  • Crawl:递归抓取 URL 的子域,并可以以 markdown 格式返回内容。
  • Map:可以非常快速的获取输入网站的所有 URL。
  • Extract:使用 LLMs 从页面中提取结构化数据。
前期准备

一、环境要求

  • 硬件要求:2 核、4GB 内存、50GB 硬盘。
  • 软件要求:Ubuntu 24.04(VMware 虚拟环境)、Docker、Git。

二、网络环境

  • 本地网络:部署时可以使用 VMware 的 NAT 模式,如果只是本机使用就已经无需调整了,如果是需要内网中为其他设备提供服务,那就需要配置成 bridge(桥接)模式了。
  • 外部网络:我们是把 Firecrawl 部署在 docker 中,所以构建时需要从网络上拉取镜像,国内虽然有镜像源,但是并没有外面的全,所以可能会导致超时导致构建失败,所以提前准备一个靠谱的代理(科学上网)是非常必要的。

三、Docker 的安装
关于 Docker 的安装在这里就不进行细说了,可以跟着这篇博客来操作:https://blog.csdn.net/awei0916/article/details/147522417

Firecrawl 的安装

一、检查系统的网络环境
在装好 Ubuntu 系统后最先开始检查的及时网络问题了,首先我们要把之前提到的代理打开,并调节到全局模式(拉取镜像的成败关键)。

同时即使开了代理有的还是会失败,这是由于运营商的问题,因为每个运营商对于不同 IP 访问的路由设置都不一样,目前在广东测试发现电信是最好使的。

之后就进入 Ubuntu 虚拟机进行 ping 测,命令如下:

ping www.baidu.com
ping www.qq.com

如果到最后实在是没办法了,可以拿我提前安装好的镜像直接导入到 docker 当中来使用,这样就可以避免网络问题了,链接在“备份与加载 Firecrawl 的镜像”的部分。

二、下载 Firecrawl 源码
Firecrawl 是一个开源软件,我们可以直接上 Github 上搜索并下载其源码,链接为:https://github.com/mendableai/firecrawl 可以直接下载 ZIP 压缩包然后通过 WinSCP 之类的软件传出到 Ubuntu 当中。

  1. 本次我们使用 git 命令来克隆代码

    • Ubuntu

      sudo apt-get install -y git
      
    • Windows
      直接打开该链接下载:https://git-scm.com/downloads。

      下载完成后双击安装,安装选项默认即可。

  2. 然后我们去 Github 上获取克隆链接,如下图所示。

    进入命令行输入以下命令(该命令会下载到当前所在目录下):

    # 例如,当前目录是 /root/ 他就会下载到这个目录下
    cd /root/
    git clone https://github.com/mendableai/firecrawl.git
    

三、Firecrawl 环境变量与配置文件的修改
下载完成源码后我们需要准备两个文件,分别是 .envdocker-compose.yaml

  1. .env:该文件就是该 Firecrawl 的环境变量,api key 之类的都是在该文件中设置,在 ./firecrawl/apps/api 目录下有一个 .env.example 的参考文件。

    使用下面的命令重命名为 .env

    cd ./firecrawl/apps/api/
    cp .env.example .env
    

    .env 文件中修改了以下配置:

    # .env# ===== Required ENVS ======
    NUM_WORKERS_PER_QUEUE=8 
    PORT=3002
    HOST=0.0.0.0#for self-hosting using docker, use redis://redis:6379. For running locally, use redis://localhost:6379
    REDIS_URL=redis://redis:6379#for self-hosting using docker, use redis://redis:6379. For running locally, use redis://localhost:6379
    REDIS_RATE_LIMIT_URL=redis://redis:6379 
    PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html## To turn on DB authentication, you need to set up supabase.
    USE_DB_AUTHENTICATION=false# ===== Optional ENVS ======# Supabase Setup (used to support DB authentication, advanced logging, etc.)
    SUPABASE_ANON_TOKEN= 
    SUPABASE_URL= 
    SUPABASE_SERVICE_TOKEN=# Other Optionals
    # use if you've set up authentication and want to test with a real API key
    # 这里是设置 api key 的,但是内网使用的话可以随意设置的
    TEST_API_KEY=fc-11111111
    # set if you'd like to test the scraping rate limit
    RATE_LIMIT_TEST_API_KEY_SCRAPE=
    # set if you'd like to test the crawling rate limit
    RATE_LIMIT_TEST_API_KEY_CRAWL=
    # set if you'd like to use scraping Be to handle JS blocking
    SCRAPING_BEE_API_KEY=
    # add for LLM dependednt features (image alt generation, etc.)
    OPENAI_API_KEY=
    BULL_AUTH_KEY=@
    # use if you're configuring basic logging with logtail
    LOGTAIL_KEY=
    # set if you have a llamaparse key you'd like to use to parse pdfs
    LLAMAPARSE_API_KEY=
    # set if you'd like to send slack server health status messages
    SLACK_WEBHOOK_URL=
    # set if you'd like to send posthog events like job logs
    POSTHOG_API_KEY=
    # set if you'd like to send posthog events like job logs
    POSTHOG_HOST=# set if you'd like to use the fire engine closed beta
    FIRE_ENGINE_BETA_URL=# Proxy Settings for Playwright (Alternative you can can use a proxy service like oxylabs, which rotates IPs for you on every request)
    PROXY_SERVER=
    PROXY_USERNAME=
    PROXY_PASSWORD=
    # set if you'd like to block media requests to save proxy bandwidth
    BLOCK_MEDIA=# Set this to the URL of your webhook when using the self-hosted version of FireCrawl
    SELF_HOSTED_WEBHOOK_URL=# Resend API Key for transactional emails
    RESEND_API_KEY=# LOGGING_LEVEL determines the verbosity of logs that the system will output.
    # Available levels are:
    # NONE - No logs will be output.
    # ERROR - For logging error messages that indicate a failure in a specific operation.
    # WARN - For logging potentially harmful situations that are not necessarily errors.
    # INFO - For logging informational messages that highlight the progress of the application.
    # DEBUG - For logging detailed information on the flow through the system, primarily used for debugging.
    # TRACE - For logging more detailed information than the DEBUG level.
    # Set LOGGING_LEVEL to one of the above options to control logging output.
    LOGGING_LEVEL=INFO
    
  2. docker-compose.yaml:该文件就是该 Firecrawl 的 docker 配置文件了,这里面定义了需要什么镜像和具体镜像的配置,Firecrawl 把该文件默认就放在根目录下(./firecrawl/)。

    同样的,如果没有什么特殊需求可以直接使用该文件当中的配置,如果在部署时发现与内网 IP 发生冲突或与本机的应用端口发生冲突就可以在该文件当中进行修改配置。

四、Firecrawl 构建
正式进入 Firecrawl 构建前我们可以通过国内的镜像源来下载一些依赖镜像,以提高构建的成功率。

  1. 镜像加速(如果在安装 Docker 的时候已经执行过了请忽略)

    # 新版的 Docker 使用 /etc/docker/daemon.json 来配置 Daemon
    # 请在该配置文件中加入(没有该文件的话,请先建一个)Docker 中国官方加速
    sudo vim /etc/docker/daemon.json
    

    以下为文件内容:

    {"registry-mirrors": ["https://docker.1ms.run","https://docker.hlmirror.com","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc"]
    }
    

    重启 docker 服务以应用镜像加速:

     sudo systemctl daemon-reloadsudo systemctl restart docker
    
    • 镜像加速配置可参考:https://blog.csdn.net/awei0916/article/details/147522593
  2. 拉取依赖镜像

    docker pull python
    docker pull golang:1.24
    docker pull node:18-slim
    docker pull redis:alpine
    
  3. 构建 Firecrawl
    注意:构建命令的执行一定要在 docker-compose.yaml 文件所在目录下执行。

    # 例如,Firecrawl 在 /root/ 下
    cd /root/firecrawl/
    docker compose build
    

五、Firecrawl 运行
构建完成后使用以下命令启动 Firecrawl,注意还是要在 ./firecrawl/ 目录下:

docker compose up # 为了方便查看日志先不使用 -d 参数(后台运行)

启动完成后在浏览器输入以下 URL 来进行测试:

http://192.168.26.100:3002/test
Windows 中的 Docker

当前基于 WSL2 的加持下 Windows 下都能运行专为 Linux 开发的软件,例如 Docker。我们可以从 Docker 的官网下载 Docker Desktop 在 Windows 上使用 Docker。

安装完成后 Docker Desktop 会要求你安装 WSL2,你只需回车安装即可(千万不要自己使用微软提供的命令来安装,超级慢),同时在安装的过程中也会配置环境变量,这样你在 cmd 当中就可以使用 docker 命令了。

至此后面 Firecrawl 的安装步骤和命令都和 Ubuntu 当中的无异了。

关于 Docker 容器网络的修改

当需要把 Firecrawl 放开给内网的其他用户使用时,Firecrawl 的 Docker 容器是以 172.18.0.0/16 开始分配的,如果内网也是使用该地址的话,就会遇到 IP 冲突的问题,导致服务不可用了,这个时候就需要修改 docker-compose.yaml 的配置了。

修改网络的配置有几步:

  1. 对 docker 网络进行修改
  2. 对各个容器绑定的网络进行修改,换个说法就是让容器加入不同的网络。

Docker 网络的名称:Docker 网络的名称是由写在开头的 name 字段和写在结尾的具体网络名称结合起来决定的,像 Firecrawl 的就是 firecrawl-backend,为了方便区分,我给前半部分定义为 Docker 网络的姓,后半部分定义为 Docker 网络的名。

下面为具体的配置,标红的为修改网络时需要修改的地方:

name: firecrawl        # Docker 网络名称的姓x-common-service: &common-service# NOTE: If you want to build the service locally,# uncomment the build: statement and comment out the image: statement# image: ghcr.io/mendableai/firecrawlbuild: apps/apiulimits:nofile:soft: 65535hard: 65535networks:- backendextra_hosts:- "host.docker.internal:host-gateway"x-common-env: &common-envREDIS_URL: ${REDIS_URL:-redis://redis:6379}REDIS_RATE_LIMIT_URL: ${REDIS_URL:-redis://redis:6379}PLAYWRIGHT_MICROSERVICE_URL: ${PLAYWRIGHT_MICROSERVICE_URL:-http://playwright-service:3000/scrape}USE_DB_AUTHENTICATION: ${USE_DB_AUTHENTICATION}OPENAI_API_KEY: ${OPENAI_API_KEY}OPENAI_BASE_URL: ${OPENAI_BASE_URL}MODEL_NAME: ${MODEL_NAME}MODEL_EMBEDDING_NAME: ${MODEL_EMBEDDING_NAME} OLLAMA_BASE_URL: ${OLLAMA_BASE_URL} SLACK_WEBHOOK_URL: ${SLACK_WEBHOOK_URL}BULL_AUTH_KEY: ${BULL_AUTH_KEY}TEST_API_KEY: ${TEST_API_KEY}POSTHOG_API_KEY: ${POSTHOG_API_KEY}POSTHOG_HOST: ${POSTHOG_HOST}SUPABASE_ANON_TOKEN: ${SUPABASE_ANON_TOKEN}SUPABASE_URL: ${SUPABASE_URL}SUPABASE_SERVICE_TOKEN: ${SUPABASE_SERVICE_TOKEN}SCRAPING_BEE_API_KEY: ${SCRAPING_BEE_API_KEY}SELF_HOSTED_WEBHOOK_URL: ${SELF_HOSTED_WEBHOOK_URL}SERPER_API_KEY: ${SERPER_API_KEY}SEARCHAPI_API_KEY: ${SEARCHAPI_API_KEY}LOGGING_LEVEL: ${LOGGING_LEVEL}PROXY_SERVER: ${PROXY_SERVER}PROXY_USERNAME: ${PROXY_USERNAME}PROXY_PASSWORD: ${PROXY_PASSWORD}SEARXNG_ENDPOINT: ${SEARXNG_ENDPOINT}SEARXNG_ENGINES: ${SEARXNG_ENGINES}SEARXNG_CATEGORIES: ${SEARXNG_CATEGORIES}services:playwright-service:build: apps/playwright-service-tsenvironment:PORT: 3000PROXY_SERVER: ${PROXY_SERVER}PROXY_USERNAME: ${PROXY_USERNAME}PROXY_PASSWORD: ${PROXY_PASSWORD}BLOCK_MEDIA: ${BLOCK_MEDIA}networks:- backendapi:<<: *common-serviceenvironment:<<: *common-envHOST: "0.0.0.0"PORT: ${INTERNAL_PORT:-3002}FLY_PROCESS_GROUP: appdepends_on:- redis- playwright-serviceports:- "${PORT:-3002}:${INTERNAL_PORT:-3002}"command: [ "pnpm", "run", "start:production" ]worker:<<: *common-serviceenvironment:<<: *common-envFLY_PROCESS_GROUP: workerdepends_on:- redis- playwright-service- apicommand: [ "pnpm", "run", "workers" ]redis:# NOTE: If you want to use Valkey (open source) instead of Redis (source available),# uncomment the Valkey statement and comment out the Redis statement.# Using Valkey with Firecrawl is untested and not guaranteed to work. Use with caution.image: redis:alpine# image: valkey/valkey:alpinenetworks:- backendcommand: redis-server --bind 0.0.0.0networks:backend:        # Docker 网络名称的名driver: bridgeipam:config:- subnet: 169.254.20.0/24gateway: 169.254.20.1

修改完成后我们执行以下命令来刷新一下 Docker 中容器的网络配置:

cd /root/firecrawl/
docker compose down    # 一定要用 down,如果只用 stop 网络还是会存在的,而 down 会删除网络后重建,这就会重新读取配置文件了
docker compose up -d    # 启动完成后,后台执行

使用以下命令查看网络是否成功刷新:

docker network ls
NETWORK ID     NAME                DRIVER    SCOPE
60543a4ce104   bridge              bridge    local
97500e5d8d29   firecrawl_backend   bridge    local
b094cb4ca2cb   host                host      local
78eef628113c   none                null      local
docker network inspect 60543a4ce104
[{"Name": "bridge","Id": "60543a4ce1049cef67a86c4a401d00772f258c2909bc65be28326f355d67f6a8","Created": "2025-05-13T05:37:26.685071552-04:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.17.0.0/16","Gateway": "172.17.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {"com.docker.network.bridge.default_bridge": "true","com.docker.network.bridge.enable_icc": "true","com.docker.network.bridge.enable_ip_masquerade": "true","com.docker.network.bridge.host_binding_ipv4": "0.0.0.0","com.docker.network.bridge.name": "docker0","com.docker.network.driver.mtu": "1500"},"Labels": {}}
]
备份与加载 Firecrawl 的镜像

Docker 镜像的构建和拉去在国内的网络环境下是有一定难度的,这样无疑大大降低了容器的便捷性,而我们如果想要多在几台不同的机器上部署 Firecrawl 是不是每次都要重新构建呢?其实并不需要,我们只需要先在一台机器上进行搭建,然后备份相应的镜像,最后再拷贝到需要部署的机器上把镜像进行加载就可以快速的部署,备份和加载的过程如下。

一、备份 Firecrawl 的镜像

  1. Firecrawl 需要备份的镜像有:firecrawl-apifirecrawl-workerfirecrawl-playwright-serviceredis,我们可以使用以下命令来查看:
docker image ls
REPOSITORY                     TAG       IMAGE ID       CREATED        SIZE
firecrawl-worker               latest    1162031cf0fa   18 hours ago   870MB
firecrawl-api                  latest    01bb699700f6   18 hours ago   870MB
firecrawl-playwright-service   latest    519ef502e368   43 hours ago   2.5GB
python                         latest    e20207435136   5 days ago     1.02GB
golang                         1.24      f254902cf370   7 days ago     853MB
rust                           1-slim    597f2b7f9f59   8 days ago     847MB
redis                          alpine    67ae465a4123   9 days ago     60.5MB
node                           22-slim   ef55d7d36951   2 weeks ago    224MB
node                           18-slim   fc665eaf5031   6 weeks ago    192MB
  1. 使用下面的命令来进行备份:
    docker save -o /root/firecrawl_images/firecrawl-worker.tar firecrawl-worker
    docker save -o /root/firecrawl_images/firecrawl-api.tar firecrawl-api
    docker save -o /root/firecrawl_images/firecrawl-playwright-service.tar firecrawl-playwright-service
    docker save -o /root/firecrawl_images/redis.tar redis
    

二、加载 Firecrawl 的镜像
将备份的镜像拷贝到需要部署的机器之后使用以下命令进行镜像的载入:

# 假设镜像存储的路径为 /root/firecrawl_images/
docker load -i /root/firecrawl_images/firecrawl-worker.tar firecrawl-worker
docker load -i /root/firecrawl_images/firecrawl-api.tar firecrawl-api
docker load -i /root/firecrawl_images/firecrawl-playwright-service.tar firecrawl-playwright-service
docker load -i /root/firecrawl_images/redis.tar redis

加载完成后可以使用以下命令查看是否加载成功:

docker image ls

当然也是需要重新下载源码以及修改环境变量和配置文件的,请重复前面 Firecrawl 安装的第三步,在一切处理完成后就可以使用以下命令来启动了:

# 假设下载源代码的路径为 /root/firecrawl/
cd /root/firecrawl/
docker compose up -d
Dify 的调用
  1. 在部署好的 Dify(v1.0.0)当中安装 Firecrawl 插件
    在这里插入图片描述

  2. 单击插件配置页面进行授权配置
    在这里插入图片描述

  3. 点击保存成功授权
    在这里插入图片描述

  4. 测试
    测试网址:https://baijiahao.baidu.com/s?id=1831912111607933623
    在这里插入图片描述

流程如下:
在这里插入图片描述

测试结果如下:

在这里插入图片描述

注意

  • 确保 Firecrawl 和 Dify 服务均已正确启动。
  • 在 Dify 中配置 Firecrawl 插件时,需填写正确的 API URL 和 API Key(在 Firecrawl 的 .env 文件中设置的 TEST_API_KEY)。
  • 测试时可根据实际需求调整抓取深度、格式等参数。

通过以上步骤,您可以成功部署 Firecrawl 并实现与 Dify 的集成调用,确保数据抓取和 LLM 应用的无缝衔接。

http://www.xdnf.cn/news/6598.html

相关文章:

  • ShardingSphere:查询报错:Actual table `数据源名称.表名` is not in table rule configuration
  • 人工智能 (AI) 在无线接入网络 (RAN) 中的变革性作用
  • 来一个复古的技术FTP
  • AlphaEvolve:LLM驱动的算法进化革命与科学发现新范式
  • 艾体宝案例丨AI 团队如何高效管理多云部署?Cinnamon AI 的 DevOps 成功经验
  • 筑牢信息安全防线:涉密计算机与互联网隔离的理论实践与风险防控
  • 【嵌入式开发-RGB 全彩 LED】
  • 芍药BAHD酰基转移酶-文献精读128
  • 【软件推荐——pdf2docx】
  • Executors类详解
  • Java中的锁机制全解析:从synchronized到分布式锁
  • Unity:场景管理系统 —— SceneManagement 模块
  • 供应链安全检测系列技术规范介绍之一|软件成分分析
  • 美创科技针对《银行保险机构数据安全管理办法》解读
  • window 显示驱动开发-分页视频内存资源
  • 大模型基础之量化
  • 二层交换机、三层交换机与路由器三者的详细对比
  • QMK宏全面实战教程:从入门到精通(附17个实用案例)(理论部分)
  • Vue 3.0双向数据绑定实现原理
  • 速通RocketMQ配置
  • 用Python生成词云图的几种方式
  • C++23 中的 ranges::fold_left:范围折叠算法
  • FC7300 GPT MCAL 配置引导
  • 2025年渗透测试面试题总结-安恒[社招]售前工程师(题目+回答)
  • 城市内涝监测预警系统守护城市安全
  • idea运行
  • iPaaS 集成平台实践指南:如何做好API 服务治理
  • 【vue】适合大型项目的封装(接口,全局字典,表格表头)
  • 架构篇、第五章_05Jenkins的部署与构建
  • outbox架构解说