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

# Configurar el entorno de desarrollo (local)

> Configura tu entorno de desarrollo con tu servidor local o tu equipo de escritorio.

## Requisitos previos

Overleaf es un proyecto de código abierto típico con arquitectura de microservicios, en el que todos los servicios se ejecutan en Docker.&#x20;

* El código fuente oficial de Community Edition está en [GitHub Overleaf Official](https://github.com/overleaf/overleaf/tree).&#x20;
* El código fuente de Overleaf-CEP está disponible en [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep).
* Overleaf Pro Edition está disponible en [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro).

Para configurar un entorno de desarrollo de Overleaf necesitarás un servidor potente; se recomienda una configuración de al menos 8 núcleos y 16 GB de RAM, ya que tendrás que ejecutar más de 20 contenedores simultáneamente.

<Info>
  Como los servidores con 8 o más núcleos de CPU suelen ser caros, se recomienda encarecidamente usar tu ordenador local para el desarrollo.
</Info>

Por otro lado, como desarrollador, entendemos que ya deberías estar familiarizado con la [instalación de Docker](https://docs.docker.com/engine/install/ubuntu/). Te recomendamos encarecidamente usar una versión reciente y estable de Ubuntu LTS (por ejemplo, Ubuntu 24.04 en 2025–2026) y la última versión de Docker para el desarrollo, ya que así se reduce la posibilidad de encontrar errores inesperados.

En resumen, necesitarás:

* [x] Un servidor o equipo de escritorio potente para desarrollar
* [x] Una versión reciente y estable de Ubuntu LTS (por ejemplo, Ubuntu 24.04)
* [x] Un entorno con Docker y Git

## Tutorial de configuración

Aquí usaremos overleaf-cep como ejemplo para mostrar cómo configurar un entorno de desarrollo de Overleaf.

<Steps>
  <Step title="Descargar el código fuente">
    En primer lugar, clonemos el repositorio:

    ```bash title="bash" theme={null}
    git clone https://github.com/ayaka-notes/overleaf-pro.git
    cd overleaf-pro
    ```
  </Step>

  <Step title="Sincronizar `package-lock.json`">
    Como Overleaf se desarrolla en un [repositorio interno](http://github.com/overleaf/internal), es muy probable que el archivo `package-lock.json` quede desincronizado debido a algunos problemas de desarrollo. Necesitamos ejecutar el siguiente comando para sincronizarlo (si tienes un entorno local de nodejs):

    ```bash title="bash" theme={null}
    npm install --package-lock-only --ignore-scripts
    ```

    Si no tienes nodejs instalado, no te preocupes: puedes usar directamente `docker` para ejecutar el mismo comando. Ejecútalo <strong>desde la raíz del repositorio de Overleaf:</strong>

    ```bash title="bash" theme={null}
    docker run --rm \
      -v "$(pwd)":/workspace \
      -w /workspace \
      node:22.18.0 \
      npm install --package-lock-only --ignore-scripts
    ```
  </Step>

  <Step title="Construir la imagen de desarrollo">
    Overleaf proporciona un directorio dedicado, `/develop`, para almacenar los scripts de desarrollo. Simplemente construye los servicios:

    ```bash title="bash" theme={null}
    cd ./develop
    bin/build
    ```

    <Info>
      Si Docker se queda sin RAM al construir los servicios en paralelo, crea un archivo `.env` en este directorio que contenga `COMPOSE_PARALLEL_LIMIT=1`.
    </Info>
  </Step>

  <Step title="Iniciar todos los microservicios">
    A continuación, inicia los servicios:

    ```bash title="bash" theme={null}
    bin/up
    ```

    Una vez que los servicios estén en ejecución, abre [http://localhost/launchpad](http://localhost/launchpad) para crear la primera cuenta de administrador.

    <Danger>
      Debes ejecutar `bin/up` antes de ejecutar el comando `bin/dev`. De lo contrario, podrías encontrarte con una serie de problemas de permisos.
    </Danger>
  </Step>
</Steps>

<Info>
  De forma predeterminada, los privilegios de administrador no están disponibles. Debes añadir lo siguiente a `develop/dev.env`. Después de eso, tendrás acceso al panel de administración.

  ```text theme={null}
  ADMIN_PRIVILEGE_AVAILABLE=true
  ```
</Info>

### TeX Live

Para compilar un PDF es necesario construir una imagen de TeX Live que se encargue de la compilación dentro de Docker:

```text theme={null}
docker build texlive -t texlive-full
```

Para compilar en un host macOS, puede que necesites sobrescribir la ruta del socket de Docker creando un archivo `.env` en este directorio que contenga `DOCKER_SOCKET_PATH=/var/run/docker.sock.raw`

También puedes usar [ayaka-notes/texlive-full](https://github.com/ayaka-notes/texlive-full); puedes usar la etiqueta base, que es la versión mínima de texlive.

### Desarrollo

Para evitar ejecutar `bin/build && bin/up` después de cada cambio en el código, puedes ejecutar Overleaf Community Edition en *modo de desarrollo*, en el que los servicios se actualizan automáticamente cuando cambia el código.

Para ello, usa el script incluido `bin/dev`:

```text theme={null}
bin/dev
```

Esto iniciará todos los servicios con `node --watch`, que supervisará automáticamente el código y reiniciará los servicios cuando sea necesario.

Para mejorar el rendimiento, puedes iniciar solo un subconjunto de los servicios en modo de desarrollo pasando una lista separada por espacios al script `bin/dev`:

```text theme={null}
bin/dev [service1] [service2] ... [serviceN]
```

<Info>
  Iniciar el servicio `web` en *modo de desarrollo* solo actualizará el servicio `web` cuando cambie el código del backend. Para que también se actualice automáticamente el código del frontend, asegúrate de iniciar también el servicio `webpack` en *modo de desarrollo*.
</Info>

Si no se indica ningún servicio, todos los servicios se iniciarán en modo de desarrollo.

### Depuración

Cuando se ejecutan en *modo de desarrollo*, la mayoría de los servicios exponen un puerto de depuración al que puedes conectar un depurador, como el inspector de las Dev Tools de Chrome o uno integrado en un IDE. La siguiente tabla muestra el puerto expuesto en la **máquina host** para cada servicio:

| Servicio | Puerto |
| - | - |
| `web` | 9229 |
| `clsi` | 9230 |
| `chat` | 9231 |
| `contacts` | 9232 |
| `docstore` | 9233 |
| `document-updater` | 9234 |
| `filestore` | 9235 |
| `notifications` | 9236 |
| `real-time` | 9237 |
| `references` | 9238 |
| `history-v1` | 9239 |
| `project-history` | 9240 |
| `linked-url-proxy` | 9241 |

Para conectarte a un servicio mediante la *depuración remota* de Chrome, ve a chrome://inspect/ y asegúrate de que *Discover network targets* esté marcado. Después haz clic en *Configure...* y añade una entrada `localhost:[service port]` para cada uno de los servicios a los que quieras conectar un depurador.

Tras añadir una entrada, el servicio aparecerá como *Remote Target*, que podrás inspeccionar y depurar.

### Registros

En el entorno de desarrollo, Overleaf proporciona el script `bin/logs`; sin embargo, necesitas instalar algunas dependencias:

```bash theme={null}
sudo npm install -g bunyan
# Or sudo apt install node-bunyan 
```

O bien puedes ejecutar directamente:

```text theme={null}
docker compose logs -f [service name]
```

### Otras herramientas

Una vez que hayas terminado todo, puedes consultar la [siguiente sección](/es/dev/environment/setup-develop-tools) para añadir algunas herramientas de depuración a tu entorno de desarrollo de Overleaf.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.