Pular para o conteúdo principal

Vai contribuir?

Bem-vindo ao Firecrawl 🔥! Aqui estão algumas instruções para obter o projeto localmente, executá-lo por conta própria e contribuir. Se você for contribuir, observe que o processo é semelhante ao de outros repositórios de código aberto: faça um fork do Firecrawl, faça alterações, rode os testes e abra um PR. Se tiver dúvidas ou precisar de ajuda para começar, entre na nossa comunidade no Discord aqui para mais informações ou abra uma issue no GitHub aqui!

Hospedando o Firecrawl por conta própria

Consulte SELF_HOST.md para instruções sobre como executá-lo localmente.

Por quê?

Hospedar o Firecrawl por conta própria é especialmente vantajoso para organizações com políticas de segurança rigorosas que exigem manter os dados em ambientes controlados. Aqui estão alguns motivos principais para considerar a hospedagem própria:
  • Segurança e conformidade reforçadas: Ao auto-hospedar, você garante que todo o tratamento e processamento de dados esteja em conformidade com regulamentações internas e externas, mantendo informações sensíveis dentro da sua infraestrutura segura. Observe que o Firecrawl é um produto da Mendable e possui certificação SOC 2 Type II, o que significa que a plataforma segue altos padrões do setor para gestão da segurança de dados.
  • Serviços personalizáveis: A hospedagem própria permite adaptar serviços, como o Playwright, para atender a necessidades específicas ou lidar com casos de uso particulares que podem não ser contemplados pela oferta padrão em nuvem.
  • Aprendizado e contribuição para a comunidade: Ao configurar e manter sua própria instância, você obtém um entendimento mais profundo de como o Firecrawl funciona, o que também pode resultar em contribuições mais relevantes para o projeto.

Considerações

No entanto, há algumas limitações e responsabilidades adicionais das quais você deve estar ciente:
  1. Acesso limitado ao Fire-engine: Atualmente, instâncias auto-hospedadas do Firecrawl não têm acesso ao Fire-engine, que inclui recursos avançados para lidar com bloqueios de IP, mecanismos de detecção de robôs e mais. Isso significa que, embora você possa gerenciar tarefas básicas de scraping, cenários mais complexos podem exigir configuração adicional ou talvez não sejam suportados.
  2. Configuração manual necessária: Se você precisar usar métodos de scraping além das opções básicas de fetch e Playwright, será necessário configurá-los manualmente no arquivo .env. Isso exige um entendimento mais profundo das tecnologias e pode demandar mais tempo de configuração.
Hospedar o Firecrawl por conta própria é ideal para quem precisa de controle total sobre seus ambientes de scraping e processamento de dados, mas tem como contrapartida a necessidade de manutenção e configurações adicionais.

Etapas

  1. Primeiro, instale as dependências
  1. Defina as variáveis de ambiente
Crie um arquivo .env no diretório raiz; você pode copiar o template em apps/api/.env.example Para começar, não vamos configurar autenticação nem quaisquer subserviços opcionais (análise de PDF, bloqueio de JS, recursos de IA)
# .env

# ===== ENVS Obrigatórias ======
PORT=3002
HOST=0.0.0.0

# Nota: PORT é usada tanto pelo servidor da API principal quanto pelo endpoint de verificação de disponibilidade do worker

# Para ativar a autenticação do banco de dados, você precisa configurar o Supabase.
USE_DB_AUTHENTICATION=false

# ===== ENVS Opcionais ======

## === Recursos de IA (formato JSON no scrape, API /extract) ===
# Forneça sua chave de API do OpenAI aqui para habilitar recursos de IA
# OPENAI_API_KEY=

# Experimental: Usar Ollama
# OLLAMA_BASE_URL=http://localhost:11434/api
# MODEL_NAME=deepseek-r1:7b
# MODEL_EMBEDDING_NAME=nomic-embed-text

# Experimental: Usar qualquer API compatível com OpenAI
# OPENAI_BASE_URL=https://example.com/v1
# OPENAI_API_KEY=

## === Proxy ===
# PROXY_SERVER pode ser uma URL completa (ex: http://0.1.2.3:1234) ou apenas uma combinação de IP e porta (ex: 0.1.2.3:1234)
# Não descomente PROXY_USERNAME e PROXY_PASSWORD se seu proxy não requer autenticação
# PROXY_SERVER=
# PROXY_USERNAME=
# PROXY_PASSWORD=

## === API /search ===
# Por padrão, a API /search usará a busca do Google.

# Você pode especificar um servidor SearXNG com o formato JSON habilitado, se quiser usar isso em vez do Google direto.
# Você também pode personalizar os parâmetros engines e categories, mas os padrões também devem funcionar bem.
# SEARXNG_ENDPOINT=http://your.searxng.server
# SEARXNG_ENGINES=
# SEARXNG_CATEGORIES=

## === Outros ===

# Configuração do Supabase (usado para suportar autenticação do banco de dados, logging avançado, etc.)
# SUPABASE_ANON_TOKEN=
# SUPABASE_URL=
# SUPABASE_SERVICE_TOKEN=

# Use se você configurou autenticação e quer testar com uma chave de API real
# TEST_API_KEY=

# Esta chave permite acessar o painel de administração da fila. Altere se sua implantação for publicamente acessível.
BULL_AUTH_KEY=CHANGEME

# Isso agora é autoconfigurado pelo docker-compose.yaml. Você não deve precisar configurá-lo.
# PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/scrape
# REDIS_URL=redis://redis:6379
# REDIS_RATE_LIMIT_URL=redis://redis:6379

# Configure se você tiver uma chave llamaparse que gostaria de usar para analisar PDFs
# LLAMAPARSE_API_KEY=

# Configure se você quiser enviar mensagens de status de saúde do servidor para o Slack
# SLACK_WEBHOOK_URL=

# Configure se você quiser enviar eventos do PostHog como logs de jobs
# POSTHOG_API_KEY=
# POSTHOG_HOST=

## === Configuração de Recursos do Sistema ===
# Limite máximo de uso de CPU (0.0-1.0). O worker rejeitará novos jobs quando o uso de CPU exceder este valor.
# Padrão: 0.8 (80%)
# MAX_CPU=0.8

# Limite máximo de uso de RAM (0.0-1.0). O worker rejeitará novos jobs quando o uso de memória exceder este valor.
# Padrão: 0.8 (80%)
# MAX_RAM=0.8

# Configure se você quiser permitir que webhooks locais sejam enviados para sua instância auto-hospedada
# ALLOW_LOCAL_WEBHOOKS=true
  1. (Opcional) Executar com o TypeScript Playwright Service
    • Atualize o arquivo docker-compose.yml para alterar o serviço do Playwright:
          build: apps/playwright-service
      
      PARA
          build: apps/playwright-service-ts
      
    • Defina PLAYWRIGHT_MICROSERVICE_URL no arquivo .env:
      PLAYWRIGHT_MICROSERVICE_URL=http://localhost:3000/scrape
      
    • Não se esqueça de configurar o servidor proxy no arquivo .env, conforme necessário.
  2. Compile e execute os contêineres Docker:
    docker compose build
    docker compose up
    
Isso iniciará uma instância local do Firecrawl, acessível em http://localhost:3002. Você deve conseguir ver a interface do Bull Queue Manager em http://localhost:3002/admin/@/queues.
  1. (Opcional) Teste a API
Se quiser testar o endpoint de crawl, execute:
  curl -X POST http://localhost:3002/v2/crawl \
      -H 'Content-Type: application/json' \
      -d '{
        "url": "https://docs.firecrawl.dev"
      }'

Solução de problemas

Esta seção apresenta soluções para problemas comuns que você pode encontrar ao configurar ou executar sua instância auto-hospedada do Firecrawl.

O cliente Supabase não está configurado

Sintoma:
[YYYY-MM-DDTHH:MM:SS.SSSz]ERROR - Tentativa de acessar o cliente do Supabase quando ele não está configurado.
[YYYY-MM-DDTHH:MM:SS.SSSz]ERROR - Erro ao inserir evento de scraping: Erro: o cliente do Supabase não está configurado.
Explicação: Esse erro ocorre porque a configuração do cliente do Supabase não foi concluída. Você deve conseguir executar scraping e crawling sem problemas. No momento, não é possível configurar o Supabase em instâncias auto-hospedadas.

Você está ignorando a autenticação

Sintoma:
[YYYY-MM-DDTHH:MM:SS.SSSz]WARN - Você está contornando a autenticação
Explicação: Esse erro ocorre porque a configuração do cliente do Supabase não foi concluída. Você deve conseguir fazer scraping e crawling sem problemas. No momento, não é possível configurar o Supabase em instâncias autohospedadas.

Contêineres Docker não iniciam

Sintoma: Contêineres Docker encerram inesperadamente ou não chegam a iniciar. Solução: Verifique os logs do Docker em busca de mensagens de erro usando o comando:
docker logs [nome_do_container]
  • Certifique-se de que todas as variáveis de ambiente necessárias estejam definidas corretamente no arquivo .env.
  • Verifique se todos os serviços do Docker definidos em docker-compose.yml estão configurados corretamente e se as imagens necessárias estão disponíveis.

Problemas de conexão com o Redis

Sintoma: Erros ao conectar ao Redis, como timeouts ou “Connection refused”. Solução:
  • Garanta que o serviço do Redis esteja ativo e em execução no seu ambiente Docker.
  • Verifique se as variáveis REDIS_URL e REDIS_RATE_LIMIT_URL no seu arquivo .env apontam para a instância correta do Redis.
  • Confira as configurações de rede e as regras de firewall que possam estar bloqueando a conexão com a porta do Redis.

O endpoint da API não responde

Sintoma: As requisições de API para a instância do Firecrawl esgotam o tempo (timeout) ou não retornam resposta. Solução:
  • Verifique se o serviço do Firecrawl está em execução conferindo o status do contêiner Docker.
  • Confirme se as variáveis PORT e HOST no arquivo .env estão corretas e se nenhum outro serviço está usando a mesma porta.
  • Verifique a configuração de rede para garantir que o host esteja acessível a partir do cliente que faz a requisição de API.
Ao corrigir esses problemas comuns, você garante uma configuração e operação mais estáveis da sua instância autogerenciada do Firecrawl.

Instalar o Firecrawl em um cluster do Kubernetes (versão simples)

Leia o examples/kubernetes-cluster-install/README.md para obter instruções sobre como instalar o Firecrawl em um cluster do Kubernetes.