> ## 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 o ambiente de desenvolvimento (local)

> Configure seu ambiente de desenvolvimento em seu servidor local ou desktop.

## Pré-requisitos

O Overleaf é um projeto de código aberto típico com arquitetura de microsserviços, com todos os serviços executados no Docker.&#x20;

* O código-fonte oficial da Community Edition está em [GitHub Overleaf Official](https://github.com/overleaf/overleaf/tree).&#x20;
* O código-fonte do Overleaf-CEP está disponível em [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep).
* O Overleaf Pro Edition está disponível em [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro).

Para configurar um ambiente de desenvolvimento do Overleaf, você precisará de um servidor potente; recomenda-se uma configuração de pelo menos 8 núcleos e 16 GB de RAM, pois será necessário executar mais de 20 contêineres simultaneamente.

<Info>
  Como servidores com 8 ou mais núcleos de CPU costumam ser caros, recomendamos fortemente usar seu computador local para o desenvolvimento.
</Info>

Além disso, como desenvolvedor, acreditamos que você já esteja familiarizado com a [instalação do Docker](https://docs.docker.com/engine/install/ubuntu/). Sugerimos fortemente usar uma versão LTS recente e estável do Ubuntu (por exemplo, Ubuntu 24.04 em 2025–2026) e a versão mais recente do Docker para desenvolvimento, pois isso reduz a possibilidade de encontrar erros inesperados.

Em resumo, você precisará de:

* [x] Um servidor/desktop potente para desenvolver
* [x] Uma versão LTS recente e estável do Ubuntu (por exemplo, Ubuntu 24.04)
* [x] Ambiente com Docker e Git

## Tutorial de configuração

Aqui, usaremos o overleaf-cep como exemplo para demonstrar como configurar um ambiente de desenvolvimento do Overleaf.

<Steps>
  <Step title="Obter o código-fonte">
    Primeiro, vamos clonar o repositório:

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

  <Step title="Sincronizar o `package-lock.json`">
    Como o Overleaf é desenvolvido em um [repositório interno](http://github.com/overleaf/internal), é muito provável que o arquivo `package-lock.json` fique dessincronizado devido a questões de desenvolvimento. Precisamos executar o comando a seguir para sincronizá-lo (caso você tenha um ambiente nodejs local).

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

    Se você não tiver o nodejs instalado, não se preocupe: você pode usar diretamente o `docker` para executar o mesmo comando. Execute <strong>a partir da raiz do repositório do 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 a imagem de desenvolvimento">
    O Overleaf fornece um diretório dedicado `/develop` para armazenar os scripts de desenvolvimento. Basta construir os serviços:

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

    <Info>
      Se o Docker ficar sem RAM ao construir os serviços em paralelo, crie um arquivo `.env` neste diretório contendo `COMPOSE_PARALLEL_LIMIT=1`.
    </Info>
  </Step>

  <Step title="Iniciar todos os microsserviços">
    Em seguida, inicie os serviços:

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

    Quando os serviços estiverem em execução, abra [http://localhost/launchpad](http://localhost/launchpad) para criar a primeira conta de administrador.

    <Danger>
      Você deve executar `bin/up` antes de executar o comando `bin/dev`. Caso contrário, poderá encontrar uma série de problemas de permissão.
    </Danger>
  </Step>
</Steps>

<Info>
  Por padrão, o privilégio de administrador não está disponível. Você precisa adicionar isto ao `develop/dev.env`. Depois disso, você terá acesso ao painel de administração.

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

### TeX Live

Compilar um PDF requer a construção de uma imagem do TeX Live para realizar a compilação dentro do Docker:

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

Para compilar em um host macOS, talvez seja necessário substituir o caminho do socket do Docker criando um arquivo `.env` neste diretório contendo `DOCKER_SOCKET_PATH=/var/run/docker.sock.raw`

Você também pode usar o [ayaka-notes/texlive-full](https://github.com/ayaka-notes/texlive-full), mas pode usar a tag base, que é a versão mínima do texlive.

### Desenvolvimento

Para evitar executar `bin/build && bin/up` após cada alteração no código, você pode executar o Overleaf Community Edition em *modo de desenvolvimento*, no qual os serviços são atualizados automaticamente quando o código muda.

Para isso, use o script incluído `bin/dev`:

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

Isso iniciará todos os serviços usando `node --watch`, que monitora automaticamente o código e reinicia os serviços conforme necessário.

Para melhorar o desempenho, você pode iniciar apenas um subconjunto dos serviços em modo de desenvolvimento, fornecendo uma lista separada por espaços ao script `bin/dev`:

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

<Info>
  Iniciar o serviço `web` em *modo de desenvolvimento* só atualizará o serviço `web` quando o código de backend mudar. Para atualizar automaticamente também o código de frontend, certifique-se de iniciar também o serviço `webpack` em *modo de desenvolvimento*.
</Info>

Se nenhum serviço for informado, todos os serviços serão iniciados em modo de desenvolvimento.

### Depuração

Quando executados em *modo de desenvolvimento*, a maioria dos serviços expõe uma porta de depuração à qual você pode conectar um depurador, como o inspetor do Chrome Dev Tools ou um integrado a uma IDE. A tabela a seguir mostra a porta exposta na **máquina host** para cada serviço:

| Serviço | Porta |
| - | - |
| `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 se conectar a um serviço usando a *depuração remota* do Chrome, acesse chrome://inspect/ e certifique-se de que *Discover network targets* esteja marcado. Em seguida, clique em *Configure...* e adicione uma entrada `localhost:[service port]` para cada serviço ao qual deseja conectar um depurador.

Depois de adicionar uma entrada, o serviço aparecerá como um *Remote Target* que você pode inspecionar e depurar.

### Logs

No ambiente de desenvolvimento, o Overleaf fornece o script `bin/logs`; no entanto, é necessário instalar uma dependência:

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

Ou você pode executar diretamente:

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

### Outras ferramentas

Depois de concluir tudo, você pode consultar a [próxima seção](/pt/dev/environment/setup-develop-tools) para adicionar algumas ferramentas de depuração ao seu desenvolvimento do Overleaf.


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