v2.11.162,在 http://localhost:3002 启动 API,并验证 POST /v2/scrape 成功返回 Markdown 响应。
选择自托管或使用 Firecrawl Cloud
在以下情况下自托管
- 您希望掌控源代码或基础设施。 本指南将帮助您在自己的机器上运行 API 及其配套服务。
- 您熟悉整套技术栈的运维。 您需要负责升级、安全、存储、监控和恢复。
- 您希望在自身环境中验证 Firecrawl。 请先在此处完成基础配置,然后在生产前准备中设计相应的控制措施。
自托管需要承担的事项
- 升级、密钥、存储、监控、恢复和事件响应均由你负责。
- 抓取仍会向目标网站发送出站请求。可选的代理、解析或 AI 提供商会带来额外的数据流。
- 本指南刻意简化首次运行。先让一次抓取成功,再逐项调整配置。
- 这些命令固定使用
v2.11.162。其他版本可能采用不同的 Compose 约定。
使用 Docker Compose 自托管 Firecrawl
采用以下默认设置
- 版本:Firecrawl
v2.11.162。 先固定代码和配置。查看目标版本的docker-compose.yaml和自托管说明后再升级。 - API 身份验证:此次本地运行关闭。 仅在具备完整且受支持的身份验证和数据库设计时启用;仅设置一个环境变量并不够。
- 队列:PostgreSQL。 除非你有意运维可选的 FoundationDB 后端,否则请保持此设置。
- 队列管理 UI:关闭。 仅在设置高强度
BULL_AUTH_KEY并采取网络控制措施后启用。 - AI 和高级抓取提供商:未配置。 当所需功能依赖某个提供商时再添加。
前置条件
- Git
- Docker Engine 或 Docker Desktop
- Docker Compose v2 (通过
docker compose调用) - 用于发送验证请求的
curl
3002 可用,并且 Docker 有足够资源来构建和运行多个服务。Firecrawl 尚未公布此技术栈经过验证的最低主机配置。
克隆经验证的版本
v2.11.162 验证。请检出该特定版本,以确保代码、命令和配置保持同步:
docker-compose.yaml 和自托管说明。
配置评估环境部署
.env 文件:
.env。对于 v2.11.162,请保留 POSTGRES_DB=postgres,因为内置的 pg_cron 配置针对该数据库。Compose 会将这些值传递给 API 和 PostgreSQL 服务。
apps/api/.env.example 用于 API 开发,并非可直接用于 Compose 的配置文件。
首次运行会禁用数据库身份验证,因此请求无需提供
API 密钥或 Authorization 请求头。NUQ_BACKEND 和 BULL_AUTH_KEY。你将使用 PostgreSQL 队列,无需运行队列管理 UI——这样首次抓取所需的组件更少。
构建并启动 Firecrawl
docker compose ps --all 应显示 API 和支持服务正在运行,而一次性初始化服务已完成。如果服务仍在启动,请稍候片刻。
检查 API 是否可访问
运行功能冒烟测试
自托管功能支持
如需更全面的产品对比,请参见开源版与 Cloud。如需针对特定版本进行配置,请使用固定版本的
docker-compose.yaml 作为配套参考。
上线前
- **如果数据必须在服务替换后保留,**请为 PostgreSQL、Redis 和 RabbitMQ 添加持久化存储,并制定和测试备份与恢复流程。提供的 Compose 文件未添加这些数据卷。
- **如果用户或不受信任的网络可以访问 API,**请采用受支持的身份验证方案、网络访问控制,并在反向代理或入口层配置 TLS。请勿将这个未经身份验证的基础配置暴露在公网。
- **如果对可用性或容量有要求,**请设定正常运行时间目标、监控、资源规格、扩缩容触发条件,以及升级和回滚流程。Compose 中的限制并非经验证的最低要求。
- **如果数据存储位置或合规性至关重要,**请在启用前确认请求会发送至哪些目标网站,以及每个可选的 AI、代理或解析提供商。
- **如果必须集中管理密钥,**请将数据库密码从
.env移至平台的密钥管理系统。
.env 开关能让该技术栈满足生产环境要求。
下一步
- 仍在评估? 请将 API 保持在受信任的网络中,并在完成后运行
docker compose down。 - 要添加开源功能? 通过自托管功能支持查找所需的提供商或服务,然后单独测试该方案。
- 要修改 Firecrawl 代码? 请参阅本地运行,设置贡献者开发环境。
- 要连接客户端? 将 Firecrawl CLI 或本地 MCP 服务器配置为使用已验证的 API URL。
- 要迁移到 Kubernetes? 请先参考
SELF_HOST.md中链接的带版本 Kubernetes 或 Helm 文档,然后针对你的平台明确做出上述生产环境决策。 - 需要托管基础设施或仅限 Cloud 的功能? 请比较开源版与 Cloud。
- 要投入生产? 请在公开 API 前完成生产前准备中的每项决策。
故障排查
你正在绕过身份验证
USE_DB_AUTHENTICATION=false 时看到此警告,说明这是预期的首次运行流程。请求会使用 self-hosted 身份,无需 API 密钥。如果该 API 可从不受信任的网络访问,请停止操作,并按照生产环境前中的说明添加控制措施。
Docker 容器无法启动
- 如果源代码版本不同,请检出
v2.11.162,或使用该版本的配置。 - 如果构建过程或容器受资源限制,请增加 Docker 的 CPU、内存或磁盘容量。
- 如果 PostgreSQL 启动失败,请检查
.env语法,保持POSTGRES_DB=postgres,并确保用户名和密码一致。
Redis 连接问题
redis://redis:6379。localhost 指向容器自身,而不是 Redis 服务。
REDIS_URL 或 REDIS_RATE_LIMIT_URL,请移除覆盖配置以恢复默认值,或使用可在 Compose 网络内部解析的地址。
API 端点无响应
3002 无响应,请检查 API 容器及其日志:
3002,请停止该进程,或同步修改发布的端口。初次启动时,只有在 API 容器显示为正在运行后再重试。
如果 /v0/health/readiness 请求成功,但 /v2/scrape 失败,请检查 API 和 Playwright 日志,因为可达性端点不会验证这些依赖项:
抓取请求超时
https://example.com,且 API 和 Playwright 服务正在运行。请将 curl 的 --max-time 设置为长于请求正文中的 timeout,以便 API 能返回自身的超时响应。
