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.- O código-fonte oficial da Community Edition está em GitHub Overleaf Official.
- O código-fonte do Overleaf-CEP está disponível em GitHub Yu-i-i/Overleaf.
- O Overleaf Pro Edition está disponível em GitHub Ayaka-notes/overleaf-pro.
Como servidores com 8 ou mais núcleos de CPU costumam ser caros, recomendamos fortemente usar seu computador local para o desenvolvimento.
- Um servidor/desktop potente para desenvolver
- Uma versão LTS recente e estável do Ubuntu (por exemplo, Ubuntu 24.04)
- 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.1
Obter o código-fonte
Primeiro, vamos clonar o repositório:
bash
2
Sincronizar o package-lock.json
Como o Overleaf é desenvolvido em um repositório interno, é muito provável que o arquivo Se você não tiver o nodejs instalado, não se preocupe: você pode usar diretamente o
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
docker para executar o mesmo comando. Execute a partir da raiz do repositório do Overleaf:bash
3
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
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.4
Iniciar todos os microsserviços
Em seguida, inicie os serviços:Quando os serviços estiverem em execução, abra http://localhost/launchpad para criar a primeira conta de administrador.
bash
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.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.TeX Live
Compilar um PDF requer a construção de uma imagem do TeX Live para realizar a compilação dentro do Docker:.env neste diretório contendo DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
Você também pode usar o ayaka-notes/texlive-full, mas pode usar a tag base, que é a versão mínima do texlive.
Desenvolvimento
Para evitar executarbin/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:
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:
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.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:
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 scriptbin/logs; no entanto, é necessário instalar uma dependência:

