贡献者?

欢迎来到 Firecrawl🔥!以下是一些有关如何在本地获取项目以便您可以自行运行并做出贡献的说明。

如果您要做出贡献,请注意该过程与其他开源存储库类似,即 fork Firecrawl、进行更改、运行测试、PR。

如果您有任何疑问或需要帮助,请加入我们的 Discord 社区 此处 了解更多信息,或在 Github 上提交问题 此处

自托管 Firecrawl

请参阅 SELF_HOST.md 了解如何在本地运行。

为什么?

自托管 Firecrawl 对于具有严格安全策略且要求数据保留在受控环境中的组织特别有益。以下是考虑自托管的一些主要原因:

  • 增强的安全性和合规性:通过自托管,您可以确保所有数据处理和处理都符合内部和外部法规,将敏感信息保留在安全的基础架构中。请注意,Firecrawl 是 Mendable 产品,依赖 SOC2 Type2 认证,这意味着该平台遵守行业高标准来管理数据安全。
  • 可定制服务:自托管允许您定制服务(例如 Playwright 服务),以满足特定需求或处理标准云产品可能不支持的特定用例。
  • 学习和社区贡献:通过设置和维护自己的实例,您可以更深入地了解 Firecrawl 的工作原理,这也可以为项目做出更有意义的贡献。

注意事项

但是,需要注意一些限制和额外责任:

  1. 对 Fire-engine 的访问受限:目前,Firecrawl 的自托管实例无法访问 Fire-engine,其中包括用于处理 IP 块、机器人检测机制等的高级功能。这意味着虽然您可以管理基本的抓取任务,但更复杂的场景可能需要额外的配置或可能不受支持。
  2. 需要手动配置:如果您需要使用基本抓取和 Playwright 选项以外的抓取方法,则需要在 .env 文件中手动配置这些方法。这需要更深入地了解相关技术,并且可能需要更多设置时间。

自托管 Firecrawl 非常适合那些需要完全控制抓取和数据处理环境的人,但需要付出额外的维护和配置努力。

步骤

  1. 首先,安装依赖项
  1. 设置环境变量

在根目录中创建一个 .env,您可以复制 apps/api/.env.example 中的模板

首先,我们不会设置身份验证或任何可选子服务(pdf 解析、JS 阻止支持、AI 功能)

# .env

# ===== 必需的 ENVS ======
NUM_WORKERS_PER_QUEUE=8
PORT=3002
HOST=0.0.0.0

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

#对于使用 docker 进行自托管,请使用 redis://redis:6379。若要在本地运行,请使用 redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://redis:6379
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html

## 若要开启 DB 身份验证,您需要设置 supabase。
USE_DB_AUTHENTICATION=false

# ===== 可选 ENVS ======

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

# 其他可选项
# 如果您已设置身份验证并希望使用真实 API 密钥进行测试,请使用
TEST_API_KEY=
# 如果您想测试抓取速率限制,请设置
RATE_LIMIT_TEST_API_KEY_SCRAPE=
# 如果您想测试抓取速率限制,请设置
RATE_LIMIT_TEST_API_KEY_CRAWL=
# 如果您想使用抓取 Be 来处理 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 的代理设置(备用 ative 可以使用像 oxylabs 这样的代理服务,它会在每次请求时为您轮换 IP)
PROXY_SERVER=
PROXY_USERNAME=
PROXY_PASSWORD=
# 如果您想阻止媒体请求以节省代理带宽,请设置
BLOCK_MEDIA=

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

# 重新发送事务电子邮件的 API 密钥
RESEND_API_KEY=

# LOGGING_LEVEL 确定系统将输出的日志的详细程度。
# 可用级别为:
# NONE - 不会输出任何日志。
# ERROR - 用于记录指示特定操作失败的错误消息。
# WARN - 用于记录不一定是错误的潜在有害情况。
# INFO - 用于记录突出显示应用程序进度的信息消息。
# DEBUG - 用于记录系统流程的详细信息,主要用于调试。
# TRACE - 用于记录比 DEBUG 级别更详细的信息。
# 将 LOGGING_LEVEL 设置为上述选项之一以控制日志输出。
LOGGING_LEVEL=INFO
  1. (可选) 使用 TypeScript Playwright 服务运行
  • 更新 docker-compose.yml 文件以更改 Playwright 服务:
build: apps/playwright-service

TO

build: apps/playwright-service-ts
  • 在您的 .env 文件中设置 PLAYWRIGHT_MICROSERVICE_URL
PLAYWRIGHT_MICROSERVICE_URL=http://localhost:3000/scrape
  • 不要忘记根据需要在您的 .env 文件中设置代理服务器。
  1. 构建并运行 Docker 容器:
docker compose build
docker compose up

这将运行 Firecrawl 的本地实例,可通过 http://localhost:3002 访问。

您应该能够在 http://localhost:3002/admin/@/queues 上看到 Bull Queue Manager UI。

  1. (可选) 测试 API

如果您想测试抓取端点,可以运行以下命令:

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

故障排除

本节提供在设置或运行自托管 Firecrawl 实例时可能遇到的常见问题的解决方案。

Supabase 客户端未配置

症状:

[YYYY-MM-DDTHH:MM:SS.SSSz]错误 - 尝试在未配置 Supabase 客户端的情况下访问它。
[YYYY-MM-DDTHH:MM:SS.SSSz]错误 - 插入抓取事件时出错:错误:Supabase 客户端未配置。

解释: 此错误是因为 Supabase 客户端设置未完成。您应该能够毫无问题地抓取和爬取数据。目前无法在自托管实例中配置 Supabase。

您正在绕过身份验证

症状:

[YYYY-MM-DDTHH:MM:SS.SSSz]警告 - 您正在绕过身份验证

解释: 发生此错误是因为 Supabase 客户端设置未完成。您应该能够毫无问题地进行抓取和爬取。目前无法在自托管实例中配置 Supabase。

Docker 容器无法启动

症状: Docker 容器意外退出或无法启动。

解决方案: 使用以下命令检查 Docker 日志中是否有任何错误消息:

docker logs [container_name]
  • 确保在 .env 文件中正确设置了所有必需的环境变量。
  • 验证 docker-compose.yml 中定义的所有 Docker 服务是否已正确配置并且所需的映像是否可用。

Redis 连接问题

症状: 与连接到 Redis 相关的错误,例如超时或“连接被拒绝”。

解决方案:

  • 确保 Redis 服务在您的 Docker 环境中启动并运行。
  • 验证 .env 文件中的 REDIS_URL 和 REDIS_RATE_LIMIT_URL 是否指向正确的 Redis 实例。
  • 检查可能阻止与 Redis 端口连接的网络设置和防火墙规则。

API 端点没有响应

症状: 对 Firecrawl 实例的 API 请求超时或没有返回响应。

解决方案:

  • 通过检查 Docker 容器状态确保 Firecrawl 服务正在运行。
  • 验证 .env 文件中的 PORT 和 HOST 设置是否正确,并且没有其他服务正在使用同一端口。
  • 检查网络配置以确保主机可从发出 API 请求的客户端访问。

通过解决这些常见问题,您可以确保更顺利地设置和运行自托管 Firecrawl 实例。

在 Kubernetes 集群上安装 Firecrawl(简单版本)

阅读 examples/kubernetes-cluster-install/README.md 以获取有关如何在 Kubernetes 集群上安装 Firecrawl 的说明。