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.- El código fuente oficial de Community Edition está en GitHub Overleaf Official.
- El código fuente de Overleaf-CEP está disponible en GitHub Yu-i-i/Overleaf.
- Overleaf Pro Edition está disponible en GitHub Ayaka-notes/overleaf-pro.
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.
- Un servidor o equipo de escritorio potente para desarrollar
- Una versión reciente y estable de Ubuntu LTS (por ejemplo, Ubuntu 24.04)
- 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.1
Descargar el código fuente
En primer lugar, clonemos el repositorio:
bash
2
Sincronizar package-lock.json
Como Overleaf se desarrolla en un repositorio interno, es muy probable que el archivo Si no tienes nodejs instalado, no te preocupes: puedes usar directamente
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
docker para ejecutar el mismo comando. Ejecútalo desde la raíz del repositorio de Overleaf:bash
3
Construir la imagen de desarrollo
Overleaf proporciona un directorio dedicado,
/develop, para almacenar los scripts de desarrollo. Simplemente construye los servicios:bash
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.4
Iniciar todos los microservicios
A continuación, inicia los servicios:Una vez que los servicios estén en ejecución, abre http://localhost/launchpad para crear la primera cuenta de administrador.
bash
Debes ejecutar
bin/up antes de ejecutar el comando bin/dev. De lo contrario, podrías encontrarte con una serie de problemas de permisos.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.TeX Live
Para compilar un PDF es necesario construir una imagen de TeX Live que se encargue de la compilación dentro de Docker:.env en este directorio que contenga DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
También puedes usar ayaka-notes/texlive-full; puedes usar la etiqueta base, que es la versión mínima de texlive.
Desarrollo
Para evitar ejecutarbin/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:
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:
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.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:
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 scriptbin/logs; sin embargo, necesitas instalar algunas dependencias:

