> ## Documentation Index
> Fetch the complete documentation index at: https://firecrawl-docs-agent-spark-2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Execute o Firecrawl localmente para desenvolvimento

> Configure o ambiente de desenvolvimento da API do Firecrawl, verifique um scraping local e execute o conjunto de testes do código-fonte antes de contribuir.

Execute o Firecrawl localmente ao modificar a API, os workers ou os testes. Este processo instala as dependências de desenvolvimento e inicia os serviços do código-fonte com o harness da API.

<Warning>
  Este é um ambiente de desenvolvimento para contribuidores, não um guia de implantação. Se
  você quiser executar o Firecrawl em uma infraestrutura sob seu controle sem modificar o
  produto, use [Hospedagem própria do Firecrawl](/pt-BR/contributing/self-host).
</Warning>

<div id="choose-local-development-or-self-hosting">
  ## Escolha entre desenvolvimento local e auto-hospedagem
</div>

* **Desenvolva localmente** quando precisar de ciclos rápidos de codificação, teste e depuração usando a revisão atual do código-fonte.
* **Auto-hospede uma versão específica** quando quiser uma base estável do Docker Compose na sua própria infraestrutura.
* **Use o Firecrawl Cloud** quando quiser o caminho gerenciado mais rápido, sem precisar operar nenhum dos dois ambientes.

Mantenha esses ambientes separados. O arquivo de desenvolvimento da API em `apps/api/.env` e o arquivo `.env` do Compose na raiz são usados por processos diferentes e não são intercambiáveis.

<div id="start-the-firecrawl-development-environment">
  ## Inicie o ambiente de desenvolvimento do Firecrawl
</div>

<div id="install-the-prerequisites">
  ### Instale os pré-requisitos
</div>

Instale:

* [Git](https://git-scm.com/downloads)
* Node.js 22
* pnpm `11.4.0`
* [Redis](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/)
* Docker ou Podman para os contêineres do PostgreSQL e do RabbitMQ gerenciados pelo harness da API
* [Go](https://go.dev/dl/) 1.23 ou mais recente, recompilado pelo harness da API a cada inicialização
* [Rust](https://www.rust-lang.org/tools/install), compilado durante o `pnpm install` para o pacote nativo `@mendable/firecrawl-rs`

Ative a versão do gerenciador de pacotes usada pela API:

```bash theme={null}
corepack enable
corepack prepare pnpm@11.4.0 --activate
```

<div id="clone-firecrawl-and-install-dependencies">
  ### Clone o Firecrawl e instale as dependências
</div>

```bash theme={null}
git clone https://github.com/firecrawl/firecrawl.git
cd firecrawl/apps/api
pnpm install
```

Crie `apps/api/.env` com a configuração mínima de desenvolvimento sem autenticação:

```bash theme={null}
cat > .env <<'EOF'
PORT=3002
HOST=0.0.0.0
REDIS_URL=redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://localhost:6379
USE_DB_AUTHENTICATION=false
PLAYWRIGHT_MICROSERVICE_URL=
EOF
```

Deixe `NUQ_DATABASE_URL` e `NUQ_RABBITMQ_URL` não configuradas para que o harness crie contêineres locais do PostgreSQL e RabbitMQ. Configure-as apenas se você for gerenciar essas dependências.

<div id="start-redis-and-firecrawl">
  ### Inicie o Redis e o Firecrawl
</div>

Inicie o Redis em um terminal:

```bash theme={null}
redis-server
```

Em seguida, inicie o Firecrawl em `apps/api`, em outro terminal:

```bash theme={null}
pnpm start
```

O comando start compila a API, inicia os processos da API e do worker e gerencia os contêineres locais da fila. Mantenha esse terminal aberto durante o desenvolvimento.

<div id="verify-one-local-scrape">
  ### Verifique um scraping local
</div>

Confirme se o processo da API responde:

```bash theme={null}
curl \
  --fail \
  --silent \
  --show-error \
  http://localhost:3002/v0/health/readiness
```

Resposta esperada:

```json theme={null}
{"status":"ok"}
```

Em seguida, teste o fluxo de scraping:

```bash theme={null}
curl \
  --fail-with-body \
  --silent \
  --show-error \
  --max-time 75 \
  -X POST \
  http://localhost:3002/v2/scrape \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com",
    "formats": ["markdown"],
    "timeout": 60000
  }'
```

Uma resposta bem-sucedida inclui `success: true`, conteúdo em Markdown em `data.markdown` e um status HTTP em `data.metadata.statusCode`.

<div id="change-and-test-firecrawl">
  ## Modifique e teste o Firecrawl
</div>

Mantenha cada alteração focada, inclua um fluxo de sucesso e cobertura relevante para falhas e execute o comando de teste mais específico, mantido no repositório, que comprove o comportamento.

Em `apps/api`, execute a suíte de snippets da API com suas dependências:

```bash theme={null}
pnpm harness pnpm test:snips
```

O harness inicia a API, os workers, o PostgreSQL e o RabbitMQ para executar o comando de teste e, em seguida, encerra os processos que iniciou. Use um caminho mais específico do Vitest quando não for necessário executar toda a suíte de snippets.

Para o fluxo de trabalho de contribuição, consulte o [`CONTRIBUTING.md`](https://github.com/firecrawl/firecrawl/blob/main/CONTRIBUTING.md) do repositório antes de abrir um pull request.

<div id="troubleshoot-the-development-environment">
  ## Solução de problemas no ambiente de desenvolvimento
</div>

<div id="redis-does-not-connect">
  ### Redis não conecta
</div>

Confirme se o Redis está escutando em `localhost:6379` e se ambas as URLs do Redis em `apps/api/.env` usam esse endereço.

<div id="the-harness-cannot-start-postgresql-or-rabbitmq">
  ### O harness não consegue iniciar o PostgreSQL ou o RabbitMQ
</div>

Inicie o Docker ou o Podman e execute `pnpm start` novamente. Se você gerencia os serviços por conta própria, defina explicitamente as URLs de conexão em vez de depender de contêineres gerenciados pelo harness.

<div id="port-3002-is-already-in-use">
  ### A porta 3002 já está em uso
</div>

Interrompa o outro processo ou altere `PORT` em `apps/api/.env` e, em seguida, use a mesma porta nas solicitações de verificação.

<div id="basic-fetch-works-but-browser-rendering-does-not">
  ### A busca básica funciona, mas a renderização no navegador não
</div>

Deixar `PLAYWRIGHT_MICROSERVICE_URL` vazio mantém o serviço Playwright separado desativado. Inicie e configure esse serviço apenas quando a alteração que você estiver testando exigir isso.

<div id="where-to-go-next">
  ## Próximos passos
</div>

* **Vai implantar em vez de desenvolver?** Consulte [Hospedagem própria do Firecrawl](/pt-BR/contributing/self-host).
* **Ainda está decidindo qual caminho seguir?** Compare [Código aberto ou Firecrawl Cloud](/pt-BR/contributing/open-source-or-cloud).
* **Pronto para contribuir?** Use o [guia de contribuição](https://github.com/firecrawl/firecrawl/blob/main/CONTRIBUTING.md) mantido no repositório.
