Skip to main content
修改 API、worker 或测试时,请在本地运行 Firecrawl。此流程会安装开发依赖项,并通过 API 测试框架启动仓库自带的服务。
这是面向贡献者的开发环境,不是部署指南。如果你想在自己控制的基础设施上运行 Firecrawl, 而不修改产品,请参阅 自托管 Firecrawl

选择本地开发还是自行托管

  • 需要基于当前源代码版本快速进行编写、测试和调试时,请在本地开发
  • 希望在自己的基础设施上使用稳定的 Docker Compose 基线时,请自行托管固定版本
  • 希望以最快的托管方式使用 Firecrawl,而无需维护上述任一环境时,请使用 Firecrawl Cloud
请将这些环境分开使用。apps/api/.env 中的 API 开发配置文件与根目录的 Compose .env 分别用于不同的进程,不能互换。

启动 Firecrawl 开发环境

安装前置依赖

安装:
  • Git
  • Node.js 22
  • pnpm 11.4.0
  • Redis
  • Docker 或 Podman,用于运行由 API 测试框架管理的 PostgreSQL 和 RabbitMQ 容器
  • Go 1.23 或更高版本,API 测试框架会在每次启动时重新构建
  • Rust,执行 pnpm install 时会为 @mendable/firecrawl-rs 原生包构建 Rust 组件
启用 API 所使用的包管理器版本:

克隆 Firecrawl 并安装依赖

使用最精简的无需认证的开发配置创建 apps/api/.env
如需让测试框架创建本地 PostgreSQL 和 RabbitMQ 容器,请不要设置 NUQ_DATABASE_URLNUQ_RABBITMQ_URL。仅在您有意自行管理这些依赖项时才设置它们。

启动 Redis 和 Firecrawl

在一个终端中启动 Redis:
然后在另一个终端中,从 apps/api 目录启动 Firecrawl:
启动命令会构建 API、启动 API 和 worker 进程,并管理本地队列容器。开发期间请保持此终端窗口处于打开状态。

验证本地抓取

检查 API 进程是否正常响应:
预期响应:
然后测试抓取路径:
成功的响应包含 success: truedata.markdown 中的 Markdown 内容,以及 data.metadata.statusCode 中的 HTTP 状态码。

修改并测试 Firecrawl

每次修改都应聚焦明确,覆盖成功路径及相关失败场景,并运行由源码维护、且足以验证该行为的最小范围测试命令。 apps/api 目录下,运行 API snippet 测试套件及其依赖项:
测试框架会为测试命令启动 API、worker、PostgreSQL 和 RabbitMQ,随后清理其启动的进程。如果无需运行完整的 snippet 测试套件,请使用更有针对性的 Vitest 路径。 贡献前,请先阅读仓库中的 CONTRIBUTING.md,再创建 pull request。

排查开发环境问题

Redis 无法连接

确认 Redis 正在监听 localhost:6379,并确保 apps/api/.env 中的两个 Redis URL 都使用该地址。

测试框架无法启动 PostgreSQL 或 RabbitMQ

启动 Docker 或 Podman,然后重新运行 pnpm start。如果这些服务由你自行管理,请显式设置其连接 URL,而不要依赖测试框架管理的容器。

端口 3002 已被占用

请停止其他进程,或在 apps/api/.env 中更改 PORT,然后在验证请求中使用相同的端口。

基本抓取可用,但浏览器渲染不可用

PLAYWRIGHT_MICROSERVICE_URL 留空会禁用独立的 Playwright 服务。仅当测试的变更需要该服务时,才启动并配置它。

下一步