Vereisten
Overleaf is een typisch open-sourceproject met een microservice-architectuur, waarbij alle services in Docker draaien.- De broncode van de officiële Community Edition staat op GitHub Overleaf Official.
- De broncode van Overleaf-CEP is beschikbaar op GitHub Yu-i-i/Overleaf.
- Overleaf Pro Edition is beschikbaar op GitHub Ayaka-notes/overleaf-pro.
Omdat servers met 8 of meer CPU-cores doorgaans duur zijn, raden we ten zeerste aan om je lokale computer te gebruiken voor ontwikkeling.
- Een krachtige server/desktop om op te ontwikkelen
- Een recente en stabiele Ubuntu LTS (bijv. Ubuntu 24.04)
- Een Docker- en Git-omgeving
Configuratiehandleiding
Hier gebruiken we overleaf-cep als voorbeeld om te laten zien hoe je een Overleaf-ontwikkelomgeving configureert.1
De broncode ophalen
Laten we eerst de repository klonen:
bash
2
package-lock.json synchroniseren
Omdat Overleaf wordt ontwikkeld in een interne repository, is de kans groot dat het bestand Als je Node.js niet hebt geïnstalleerd, geen zorgen: je kunt dezelfde opdracht direct met
package-lock.json door bepaalde ontwikkelproblemen niet meer synchroon loopt. We moeten de volgende opdracht uitvoeren om het te synchroniseren (als je een lokale Node.js-omgeving hebt).bash
docker uitvoeren. Voer het uit vanuit de root van de Overleaf-repository:bash
3
Ontwikkelimage bouwen
Overleaf biedt een speciale map
/develop voor het opslaan van ontwikkelscripts. Bouw gewoon de services:bash
Als Docker onvoldoende RAM heeft tijdens het parallel bouwen van de services, maak dan in deze map een
.env-bestand aan met daarin COMPOSE_PARALLEL_LIMIT=1.4
Alle microservices starten
Start vervolgens de services:Zodra de services draaien, open je http://localhost/launchpad om het eerste beheerdersaccount aan te maken.
bash
Je moet
bin/up uitvoeren voordat je de opdracht bin/dev uitvoert. Anders kun je een reeks problemen met rechten tegenkomen.Standaard zijn beheerdersrechten niet beschikbaar. Je moet het volgende toevoegen aan
develop/dev.env. Daarna heb je toegang tot het beheerpaneel.TeX Live
Voor het compileren van een PDF moet je een TeX Live-image bouwen die de compilatie binnen Docker afhandelt:.env-bestand aan te maken met daarin DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
Je kunt ook ayaka-notes/texlive-full gebruiken; daarbij kun je de tag base gebruiken, de minimale versie van TeX Live.
Ontwikkeling
Om te voorkomen dat je na elke codewijzigingbin/build && bin/up moet uitvoeren, kun je Overleaf Community Edition in ontwikkelmodus draaien, waarbij services automatisch worden bijgewerkt bij codewijzigingen.
Gebruik hiervoor het meegeleverde script bin/dev:
node --watch, dat de code automatisch in de gaten houdt en de services zo nodig herstart.
Om de prestaties te verbeteren, kun je slechts een deel van de services in ontwikkelmodus starten door een door spaties gescheiden lijst mee te geven aan het script bin/dev:
Als je de service
web in ontwikkelmodus start, wordt de service web alleen bijgewerkt bij wijzigingen in de backendcode. Om ook de frontendcode automatisch bij te werken, moet je ook de service webpack in ontwikkelmodus starten.Debuggen
Wanneer ze in ontwikkelmodus draaien, stellen de meeste services een debugpoort beschikbaar waaraan je een debugger kunt koppelen, zoals de inspector in de Dev Tools van Chrome of een debugger die in een IDE is geïntegreerd. De volgende tabel toont de poort die voor elke service op de hostmachine beschikbaar is:
Om met remote debugging van Chrome aan een service te koppelen, ga je naar chrome://inspect/ en zorg je dat Discover network targets is aangevinkt. Klik vervolgens op Configure… en voeg een item
localhost:[service port] toe voor elke service waaraan je een debugger wilt koppelen.
Na het toevoegen van een item verschijnt de service als een Remote Target die je kunt inspecteren en debuggen.
Logging
In de ontwikkelomgeving biedt Overleaf een scriptbin/logs, maar je moet daarvoor enkele afhankelijkheden installeren:

