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

# Ejecutar Firecrawl localmente para desarrollo

> Configura el entorno de desarrollo de la API de Firecrawl, verifica un scraping local y ejecuta el conjunto de pruebas del repositorio antes de contribuir.

Ejecuta Firecrawl localmente cuando modifiques la API, los workers o las pruebas. Este proceso instala las dependencias de desarrollo e inicia los servicios del repositorio con el entorno de pruebas de la API.

<Warning>
  Este es un entorno de desarrollo para colaboradores, no una guía de despliegue. Si
  quieres ejecutar Firecrawl en una infraestructura que controlas sin modificar el
  producto, usa [Autoalojar Firecrawl](/es/contributing/self-host).
</Warning>

<div id="choose-local-development-or-self-hosting">
  ## Seleccionar desarrollo local o autoalojamiento
</div>

* **Desarrolla localmente** cuando necesites ciclos rápidos de codificación, pruebas y depuración con la revisión actual del código fuente.
* **Autoaloja una versión específica** cuando quieras una base estable de Docker Compose en tu propia infraestructura.
* **Usa Firecrawl Cloud** cuando quieras la forma más rápida de contar con una solución administrada sin tener que operar ninguno de los dos entornos.

Mantén estos entornos separados. El archivo de desarrollo de la API en `apps/api/.env` y el archivo `.env` de Compose en la raíz corresponden a procesos distintos y no son intercambiables.

<div id="start-the-firecrawl-development-environment">
  ## Inicia el entorno de desarrollo de Firecrawl
</div>

<div id="install-the-prerequisites">
  ### Instala los requisitos previos
</div>

Instala:

* [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 o Podman para los contenedores de PostgreSQL y RabbitMQ administrados por el entorno de prueba de la API
* [Go](https://go.dev/dl/) 1.23 o una versión posterior, que el entorno de prueba de la API recompila en cada inicio
* [Rust](https://www.rust-lang.org/tools/install), compilado durante `pnpm install` para el paquete nativo `@mendable/firecrawl-rs`

Habilita la versión del gestor de paquetes que utiliza la API:

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

<div id="clone-firecrawl-and-install-dependencies">
  ### Clona Firecrawl e instala las dependencias
</div>

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

Crea `apps/api/.env` con la configuración mínima de desarrollo sin autenticación:

```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
```

Deja `NUQ_DATABASE_URL` y `NUQ_RABBITMQ_URL` sin configurar si quieres que el entorno de pruebas cree contenedores locales de PostgreSQL y RabbitMQ. Configúralas solo si gestionas esas dependencias tú mismo.

<div id="start-redis-and-firecrawl">
  ### Inicia Redis y Firecrawl
</div>

Inicia Redis en una terminal:

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

A continuación, inicia Firecrawl desde `apps/api` en otra terminal:

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

El comando start compila la API, inicia los procesos de la API y del worker, y gestiona los contenedores locales de la cola. Mantén esa terminal abierta mientras desarrollas.

<div id="verify-one-local-scrape">
  ### Verifica un scraping local
</div>

Comprueba que el proceso de la API responda:

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

Respuesta esperada:

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

Luego, pruebe la ruta 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
  }'
```

Una respuesta satisfactoria incluye `success: true`, Markdown en `data.markdown` y un código de estado HTTP en `data.metadata.statusCode`.

<div id="change-and-test-firecrawl">
  ## Modifica y prueba Firecrawl
</div>

Mantén cada cambio acotado, añade una ruta de éxito y cobertura de errores relevante, y ejecuta el comando de prueba más específico, del repositorio, que valide el comportamiento.

Desde `apps/api`, ejecuta la suite de snippets de la API con sus dependencias:

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

El entorno de pruebas inicia la API, los workers, PostgreSQL y RabbitMQ para ejecutar el comando de prueba y, después, limpia los procesos que inició. Usa una ruta de Vitest más específica cuando no necesites ejecutar toda la suite de snippets.

Para conocer el flujo de trabajo de contribución, revisa el [`CONTRIBUTING.md`](https://github.com/firecrawl/firecrawl/blob/main/CONTRIBUTING.md) del repositorio antes de abrir una pull request.

<div id="troubleshoot-the-development-environment">
  ## Solución de problemas del entorno de desarrollo
</div>

<div id="redis-does-not-connect">
  ### Redis no se conecta
</div>

Confirma que Redis esté escuchando en `localhost:6379` y que ambas URL de Redis en `apps/api/.env` usen esa dirección.

<div id="the-harness-cannot-start-postgresql-or-rabbitmq">
  ### El entorno de prueba no puede iniciar PostgreSQL ni RabbitMQ
</div>

Inicia Docker o Podman y vuelve a ejecutar `pnpm start`. Si administras los servicios por tu cuenta, configura explícitamente sus URL de conexión en lugar de depender de contenedores gestionados por el entorno de prueba.

<div id="port-3002-is-already-in-use">
  ### El puerto 3002 ya está en uso
</div>

Detén el otro proceso o cambia `PORT` en `apps/api/.env`; luego usa ese mismo puerto en las solicitudes de verificación.

<div id="basic-fetch-works-but-browser-rendering-does-not">
  ### La obtención básica funciona, pero el renderizado en el navegador no
</div>

Un `PLAYWRIGHT_MICROSERVICE_URL` vacío mantiene deshabilitado el servicio de Playwright independiente. Inicia y configura este servicio solo cuando el cambio que estás probando lo requiera.

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

* **¿Vas a implementar en lugar de desarrollar?** Consulta [Autoalojar Firecrawl](/es/contributing/self-host).
* **¿Aún estás decidiendo qué camino seguir?** Compara [Código abierto o Firecrawl Cloud](/es/contributing/open-source-or-cloud).
* **¿Listo para contribuir?** Usa la [guía de contribución](https://github.com/firecrawl/firecrawl/blob/main/CONTRIBUTING.md) del repositorio.
