¿Quieres contribuir?

¡Bienvenido a Firecrawl 🔥! Aquí tienes instrucciones para obtener el proyecto en local, ejecutarlo por tu cuenta y contribuir. Si vas a contribuir, ten en cuenta que el proceso es similar al de otros repositorios de código abierto: haz un fork de Firecrawl, realiza cambios, ejecuta las pruebas y abre un PR. Si tienes preguntas o necesitas ayuda para empezar, únete a nuestra comunidad de Discord aquí para más información o crea un issue en GitHub aquí.

Autohospedar Firecrawl

Consulta SELF_HOST.md para obtener instrucciones sobre cómo ejecutarlo localmente.

¿Por qué?

Alojar Firecrawl por tu cuenta es especialmente útil para organizaciones con políticas de seguridad estrictas que requieren mantener los datos en entornos controlados. Estas son algunas razones clave para considerar el autoalojamiento:
  • Mayor seguridad y cumplimiento: Al autoalojar, garantizas que el manejo y procesamiento de datos cumplan con normativas internas y externas, manteniendo la información sensible dentro de tu infraestructura segura. Ten en cuenta que Firecrawl es un producto de Mendable y cuenta con certificación SOC 2 Type II, lo que significa que la plataforma cumple con altos estándares del sector para la gestión de la seguridad de los datos.
  • Servicios personalizables: El autoalojamiento permite adaptar servicios como Playwright a necesidades específicas o a casos de uso particulares que quizá no estén cubiertos por la oferta estándar en la nube.
  • Aprendizaje y contribución a la comunidad: Al configurar y mantener tu propia instancia, obtienes una comprensión más profunda de cómo funciona Firecrawl, lo que también puede traducirse en contribuciones más valiosas al proyecto.

Consideraciones

Sin embargo, hay algunas limitaciones y responsabilidades adicionales que debes tener en cuenta:
  1. Acceso limitado a Fire-engine: Actualmente, las instancias autoalojadas de Firecrawl no tienen acceso a Fire-engine, que incluye funciones avanzadas para manejar bloqueos de IP, mecanismos de detección de bots y más. Esto significa que, aunque puedes gestionar tareas básicas de scraping, los escenarios más complejos podrían requerir configuración adicional o puede que no estén admitidos.
  2. Se requiere configuración manual: Si necesitas usar métodos de scraping más allá de las opciones básicas de fetch y Playwright, deberás configurarlos manualmente en el archivo .env. Esto requiere un conocimiento más profundo de las tecnologías y podría implicar más tiempo de configuración.
Autoalojar Firecrawl es ideal para quienes necesitan control total sobre sus entornos de scraping y procesamiento de datos, pero conlleva el coste de un mantenimiento y una configuración adicionales.

Pasos

  1. Primero, instala las dependencias
  1. Configura las variables de entorno
Crea un .env en el directorio raíz; puedes copiar la plantilla de apps/api/.env.example. Para empezar, no configuraremos la autenticación ni ningún servicio opcional (parsing de PDF, compatibilidad con bloqueo de JS, funciones de IA).
# .env

# ===== ENVS requeridas ======
NUM_WORKERS_PER_QUEUE=8 
PORT=3002
HOST=0.0.0.0

# para autoalojar con Docker, usa redis://redis:6379. Para ejecutar localmente, usa redis://localhost:6379
REDIS_URL=redis://redis:6379

# para autoalojar con Docker, usa redis://redis:6379. Para ejecutar localmente, usa redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://redis:6379 
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html

## Para activar la autenticación de BD, debes configurar Supabase.
USE_DB_AUTHENTICATION=false

# ===== ENVS opcionales ======

# Configuración de Supabase (se usa para admitir autenticación de BD, registro avanzado, etc.)
SUPABASE_ANON_TOKEN= 
SUPABASE_URL= 
SUPABASE_SERVICE_TOKEN=

# Otros opcionales
# Úsalo si configuraste autenticación y quieres probar con una clave de API real
TEST_API_KEY=
# Establécelo si quieres probar el límite de tasa de scraping
RATE_LIMIT_TEST_API_KEY_SCRAPE=
# Establécelo si quieres probar el límite de tasa de crawling
RATE_LIMIT_TEST_API_KEY_CRAWL=
# Agrega para funciones dependientes de LLM (generación de texto alternativo de imágenes, etc.)
OPENAI_API_KEY=
BULL_AUTH_KEY=@
# Úsalo si estás configurando registro básico con Logtail
LOGTAIL_KEY=
# Establécelo si tienes una clave de Llamaparse que quieras usar para procesar PDFs
LLAMAPARSE_API_KEY=
# Establécelo si quieres enviar mensajes de estado de salud del servidor a Slack
SLACK_WEBHOOK_URL=
# Establécelo si quieres enviar eventos de PostHog como registros de tareas
POSTHOG_API_KEY=
# Establécelo si quieres enviar eventos de PostHog como registros de tareas
POSTHOG_HOST=

# Establécelo si quieres usar la beta cerrada de Fire Engine
FIRE_ENGINE_BETA_URL=

# Configuración de proxy para Playwright (Alternativamente, puedes usar un servicio proxy como Oxylabs, que rota IPs por ti en cada solicitud)
PROXY_SERVER=
PROXY_USERNAME=
PROXY_PASSWORD=
# Establécelo si quieres bloquear solicitudes de medios para ahorrar ancho de banda del proxy
BLOCK_MEDIA=

# Establece esto en la URL de tu webhook cuando uses la versión autoalojada de Firecrawl
SELF_HOSTED_WEBHOOK_URL=

# Clave de API de Resend para correos transaccionales
RESEND_API_KEY=

# LOGGING_LEVEL determina la verbosidad de los registros que generará el sistema.
# Los niveles disponibles son:
# NONE - No se generarán registros.
# ERROR - Para registrar mensajes de error que indiquen una falla en una operación específica.
# WARN - Para registrar situaciones potencialmente perjudiciales que no son necesariamente errores.
# INFO - Para registrar mensajes informativos que destaquen el progreso de la aplicación.
# DEBUG - Para registrar información detallada sobre el flujo del sistema, principalmente para depuración.
# TRACE - Para registrar información aún más detallada que el nivel DEBUG.
# Establece LOGGING_LEVEL en una de las opciones anteriores para controlar la salida de registros.
LOGGING_LEVEL=INFO
  1. (Opcional) Ejecutar con el servicio Playwright en TypeScript
    • Actualiza el archivo docker-compose.yml para cambiar el servicio de Playwright:
          build: apps/playwright-service
      
      A
          build: apps/playwright-service-ts
      
    • Define PLAYWRIGHT_MICROSERVICE_URL en tu archivo .env:
      PLAYWRIGHT_MICROSERVICE_URL=http://localhost:3000/scrape
      
    • No olvides configurar el servidor proxy en tu archivo .env según sea necesario.
  2. Compila y ejecuta los contenedores de Docker:
    docker compose build
    docker compose up
    
Esto iniciará una instancia local de Firecrawl accesible en http://localhost:3002. Deberías poder ver la interfaz de Bull Queue Manager en http://localhost:3002/admin/@/queues.
  1. (Opcional) Probar la API
Si quieres probar el punto de conexión /crawl, puedes ejecutar lo siguiente:
  curl -X POST http://localhost:3002/v2/crawl \
      -H 'Content-Type: application/json' \
      -d '{
        "url": "https://docs.firecrawl.dev"
      }'

Solución de problemas

Esta sección ofrece soluciones a problemas comunes que puedes encontrar al configurar o ejecutar tu instancia autoalojada de Firecrawl.

El cliente de Supabase no está configurado

Síntoma:
[YYYY-MM-DDTHH:MM:SS.SSSz]ERROR - Se intentó acceder al cliente de Supabase cuando no está configurado.
[YYYY-MM-DDTHH:MM:SS.SSSz]ERROR - Error al insertar el evento de scraping: Error: el cliente de Supabase no está configurado.
Explicación: Este error ocurre porque la configuración del cliente de Supabase no está completa. Deberías poder hacer scraping y crawling sin problemas. Actualmente no es posible configurar Supabase en instancias autogestionadas.

Estás eludiendo la autenticación

Síntoma:
[YYYY-MM-DDTHH:MM:SS.SSSz]WARN - Estás eludiendo la autenticación
Explicación: Este error se debe a que la configuración del cliente de Supabase no está completa. Deberías poder realizar scraping y crawling sin problemas. Por ahora, no es posible configurar Supabase en instancias autogestionadas.

Los contenedores de Docker no arrancan

Síntoma: Los contenedores de Docker se detienen inesperadamente o no llegan a iniciarse. Solución: Consulta los registros de Docker para ver si hay mensajes de error usando el siguiente comando:
docker logs [nombre_del_contenedor]
  • Asegúrate de que todas las variables de entorno necesarias estén correctamente definidas en el archivo .env.
  • Verifica que todos los servicios de Docker definidos en docker-compose.yml estén correctamente configurados y que las imágenes necesarias estén disponibles.

Problemas de conexión con Redis

Síntoma: Errores al conectarse a Redis, como tiempos de espera o “Connection refused”. Solución:
  • Asegúrate de que el servicio de Redis esté en ejecución en tu entorno Docker.
  • Verifica que REDIS_URL y REDIS_RATE_LIMIT_URL en tu archivo .env apunten a la instancia correcta de Redis.
  • Revisa la configuración de red y las reglas del firewall que puedan bloquear la conexión al puerto de Redis.

El punto de conexión de la API no responde

Síntoma: Las solicitudes a la API de la instancia de Firecrawl se agotan por tiempo de espera o no devuelven respuesta. Solución:
  • Asegúrate de que el servicio de Firecrawl esté en ejecución comprobando el estado del contenedor de Docker.
  • Verifica que las variables PORT y HOST en tu archivo .env sean correctas y que ningún otro servicio esté usando el mismo puerto.
  • Revisa la configuración de red para garantizar que el host sea accesible desde el cliente que realiza la solicitud a la API.
Al resolver estos problemas comunes, podrás lograr una configuración y operación más fluidas de tu instancia autogestionada de Firecrawl.

Instalar Firecrawl en un clúster de Kubernetes (versión sencilla)

Consulta el examples/kubernetes-cluster-install/README.md para ver las instrucciones sobre cómo instalar Firecrawl en un clúster de Kubernetes.