欢迎来到Firecrawl 🔥! 以下是一些关于如何本地获取项目的说明,这样您就可以自行运行并做出贡献了。

如果您想做出贡献,请注意,这个过程与其他开源仓库类似,即:fork Firecrawl,做出更改,运行测试,提交PR。

如果您有任何问题或希望得到帮助,请加入我们的Discord社区 这里 以获取更多信息,或者在GitHub上提交问题 这里!

本地运行项目

首先,从安装依赖开始:

  1. node.js 说明
  2. pnpm 说明
  3. redis 说明

/apps/api/ 目录中设置环境变量。您可以复制 .env.example 中的模板。

一开始,我们不会设置身份验证,也不会设置任何可选的子服务(PDF解析、JS阻塞支持、AI功能)。

# ./apps/api/.env

# ===== 必需的ENV变量 ======
NUM_WORKERS_PER_QUEUE=8 
PORT=3002
HOST=0.0.0.0

#自托管使用docker时,使用redis://redis:6379。本地运行时,使用redis://localhost:6379
REDIS_URL=redis://localhost:6379

#自托管使用docker时,使用redis://redis:6379。本地运行时,使用redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://localhost:6379 
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html

## 要开启数据库身份验证,需要设置supabase。
USE_DB_AUTHENTICATION=false

# ===== 可选的ENV变量 ======

# Supabase 设置(用于支持数据库身份验证、高级日志记录等)
SUPABASE_ANON_TOKEN= 
SUPABASE_URL= 
SUPABASE_SERVICE_TOKEN=

# 其他可选设置
# 如果您已经设置了身份验证并想用真实的API密钥进行测试
TEST_API_KEY=
# 如果您想测试抓取速率限制
RATE_LIMIT_TEST_API_KEY_SCRAPE=
# 如果您想测试爬取速率限制
RATE_LIMIT_TEST_API_KEY_CRAWL=
# 如果您想使用Scraping Bee处理JS阻塞
SCRAPING_BEE_API_KEY=
# 为LLM相关功能添加(图像alt生成等)
OPENAI_API_KEY=
BULL_AUTH_KEY=@
# 如果您正在配置基本日志记录与logtail
LOGTAIL_KEY=
# 如果您有llamaparse密钥并想用来解析PDF文件
LLAMAPARSE_API_KEY=
# 如果您想发送Slack服务器健康状态消息
SLACK_WEBHOOK_URL=
# 如果您想发送posthog事件,如作业日志
POSTHOG_API_KEY=
# 如果您想发送posthog事件,如作业日志
POSTHOG_HOST=

# 如果您想使用Fire Engine封闭测试版
FIRE_ENGINE_BETA_URL=

# Playwright的代理设置(另一种选择是使用oxylabs这样的代理服务,它会在每次请求时为您轮换IP)
PROXY_SERVER=
PROXY_USERNAME=
PROXY_PASSWORD=
# 如果您想阻止媒体请求以节省代理带宽
BLOCK_MEDIA=

# 当使用FireCrawl的自托管版本时,将其设置为您的webhook的URL
SELF_HOSTED_WEBHOOK_URL=

# 用于事务性电子邮件的Resend API密钥
RESEND_API_KEY=

# LOGGING_LEVEL决定了系统将输出的日志详细程度。
# 可用级别包括:
# NONE - 不输出日志。
# ERROR - 用于记录指示特定操作失败的错误消息。
# WARN - 用于记录可能有害但不一定是错误的情况。
# INFO - 用于记录突出显示应用程序进度的信息性消息。
# DEBUG - 用于记录有关系统流程的详细信息,主要用于调试。
# TRACE - 用于记录比DEBUG级别更详细的信息。
# 将LOGGING_LEVEL设置为上述选项之一来控制日志输出。
LOGGING_LEVEL=INFO

安装依赖

首先,使用pnpm安装依赖。

# cd apps/api # 确保您在正确的文件夹中
pnpm install # 确保您使用的是pnpm版本9+!

运行项目

您需要打开3个终端来运行服务。这里有一个截至2024年10月的视频指南(可选:4个终端用于运行服务和测试)。

终端1 - 设置redis

在项目的任意位置运行以下命令:

redis-server

终端2 - 设置工作进程

现在,导航到 apps/api/ 目录并运行:

pnpm run workers
# 如果您打算使用[llm-extract功能](https://github.com/mendableai/firecrawl/pull/586/),您还应该导出OPENAI_API_KEY=sk-______

这将启动负责处理爬取任务的工作进程。

终端3 - 设置主服务器

为此,导航到 apps/api/ 目录。如果您还没有安装pnpm,可以在这里安装:https://pnpm.io/installation

接下来,运行您的服务器:

pnpm run start

(可选) 终端4 - 发送我们的第一个请求

好的,现在让我们发送我们的第一个请求。

curl -X GET http://localhost:3002/test

这应该会返回响应Hello, world!

如果您想测试爬取端点,可以运行这个:

curl -X POST http://localhost:3002/v0/crawl \
    -H 'Content-Type: application/json' \
    -d '{
      "url": "https://docs.firecrawl.dev"
    }'

测试:

最好通过运行 npm run test:local-no-auth 来进行测试,如果您希望在没有身份验证的情况下运行测试。

如果您想在有身份验证的情况下运行测试,请运行 npm run test:prod