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

# Ejecución local

> Configura Firecrawl en tu máquina local para desarrollo y colaboración.

Esta guía te explica cómo ejecutar el servidor de la API de Firecrawl en tu máquina local. Sigue estos pasos para configurar el entorno de desarrollo, iniciar los servicios y enviar tu primera solicitud.

Si vas a contribuir, el proceso sigue las convenciones estándar de código abierto: haz un fork del repositorio, realiza cambios, ejecuta las pruebas y abre un pull request. Si tienes dudas o necesitas ayuda para comenzar, escribe a [help@firecrawl.com](mailto:help@firecrawl.com) o [abre un issue](https://github.com/mendableai/firecrawl/issues).

<div id="prerequisites">
  ## Requisitos previos
</div>

Instala lo siguiente antes de continuar:

| Dependencia | Obligatorio | Guía de instalación                                                                   |
| ----------- | ----------- | ------------------------------------------------------------------------------------- |
| Node.js     | Sí          | [nodejs.org](https://nodejs.org/en/learn/getting-started/how-to-install-nodejs)       |
| pnpm (v9+)  | Sí          | [pnpm.io](https://pnpm.io/installation)                                               |
| Redis       | Sí          | [redis.io](https://redis.io/docs/latest/operate/oss_and_stack/install/install-redis/) |
| PostgreSQL  | Sí          | Mediante Docker (ver más abajo) o instalado directamente                              |
| Docker      | Opcional    | Necesario para la configuración del contenedor de PostgreSQL                          |

<div id="set-up-the-database">
  ## Configura la base de datos
</div>

Necesitas una base de datos PostgreSQL inicializada con el esquema en `apps/nuq-postgres/nuq.sql`. La forma más sencilla es usar la imagen de Docker dentro de `apps/nuq-postgres`.

Con Docker en ejecución, construye y arranca el contenedor:

```bash theme={null}
docker build -t nuq-postgres apps/nuq-postgres
```

```bash theme={null}
docker run --name nuqdb \
  -e POSTGRES_PASSWORD=postgres \
  -p 5433:5432 \
  -v nuq-data:/var/lib/postgresql/data \
  -d nuq-postgres
```

<div id="configure-environment-variables">
  ## Configurar variables de entorno
</div>

Copia la plantilla para crear el archivo `.env` en el directorio `apps/api/`:

```bash theme={null}
cp apps/api/.env.example apps/api/.env
```

Para una configuración local mínima sin autenticación ni servicios opcionales (análisis de PDF, bloqueo de JS, funciones de IA), usa la siguiente configuración:

```bash apps/api/.env theme={null}
# ===== Requerido =====
NUM_WORKERS_PER_QUEUE=8
PORT=3002
HOST=0.0.0.0
REDIS_URL=redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://localhost:6379

## Para activar la autenticación de BD, necesitas configurar supabase.
USE_DB_AUTHENTICATION=false

## Conexión PostgreSQL para colas — cambia si las credenciales, el host o la BD difieren
NUQ_DATABASE_URL=postgres://postgres:postgres@localhost:5433/postgres

# ===== Opcional =====
# SUPABASE_ANON_TOKEN=
# SUPABASE_URL=
# SUPABASE_SERVICE_TOKEN=
# TEST_API_KEY=               # Configura si habilitaste autenticación y quieres probar con una clave API real
# OPENAI_API_KEY=             # Necesario para funciones que dependen de LLM (generación de texto alternativo de imágenes, etc.)
# BULL_AUTH_KEY=@
# PLAYWRIGHT_MICROSERVICE_URL= # Configura para ejecutar un fallback de Playwright
# LLAMAPARSE_API_KEY=         # Configura para procesar PDFs con LlamaParse
# SLACK_WEBHOOK_URL=          # Configura para enviar mensajes de estado del servidor a Slack
# POSTHOG_API_KEY=            # Configura para enviar eventos de PostHog como registros de trabajos
# POSTHOG_HOST=               # Configura para enviar eventos de PostHog como registros de trabajos
```

<div id="install-dependencies">
  ## Instala las dependencias
</div>

Desde el directorio `apps/api/`, instala los paquetes con pnpm:

```bash theme={null}
cd apps/api
pnpm install
```

<div id="start-the-services">
  ## Inicia los servicios
</div>

Necesitas tres sesiones de terminal en ejecución simultánea: Redis, el servidor de la API y otra terminal para enviar solicitudes.

<div id="terminal-1-redis">
  ### Terminal 1 — Redis
</div>

Inicia el servidor de Redis desde cualquier parte del proyecto:

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

<div id="terminal-2-api-server">
  ### Terminal 2 — Servidor de la API
</div>

Ve a `apps/api/` y inicia el servicio:

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

Esto inicia el servidor de la API y los workers encargados de procesar las tareas de rastreo.

<Note>
  Si planeas usar la [función de extracción mediante LLM](https://github.com/firecrawl/firecrawl/pull/586/), primero exporta tu clave de OpenAI: `export OPENAI_API_KEY=sk-...`
</Note>

<div id="terminal-3-send-a-test-request">
  ### Terminal 3 — Enviar una petición de prueba
</div>

Verifica que el servidor esté en ejecución mediante una comprobación de estado (health check):

```bash theme={null}
curl -X GET http://localhost:3002/test
```

Esto debería devolver `Hello, world!`.

Para probar el endpoint de rastreo:

```bash theme={null}
curl -X POST http://localhost:3002/v1/crawl \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://mendable.ai"
  }'
```

<div id="alternative-docker-compose">
  ## Alternativa: Docker Compose
</div>

Para una configuración más sencilla, Docker Compose ejecuta todos los servicios (Redis, servidor de la API y workers) con un solo comando.

1. Asegúrate de que Docker y Docker Compose estén instalados.
2. Copia `.env.example` a `.env` en el directorio `apps/api/` y configura las variables según sea necesario.
3. Desde la raíz del proyecto, ejecuta:

```bash theme={null}
docker compose up
```

Esto inicia todos los servicios automáticamente en la configuración adecuada.

<div id="running-tests">
  ## Ejecutar pruebas
</div>

Ejecuta la suite de pruebas con:

```bash theme={null}
npm run test:snips
```
