Förutsättningar
Overleaf är ett typiskt open source-projekt med mikrotjänstarkitektur, där alla tjänster körs i Docker.- Källkoden för den officiella Community Edition finns på GitHub Overleaf Official.
- Källkoden för Overleaf-CEP finns på GitHub Yu-i-i/Overleaf.
- Overleaf Pro Edition finns på GitHub Ayaka-notes/overleaf-pro.
Eftersom servrar med 8 eller fler CPU-kärnor vanligtvis är dyra rekommenderar vi starkt att du använder din lokala dator för utveckling.
- En kraftfull server/dator att utveckla på
- En aktuell och stabil Ubuntu LTS (t.ex. Ubuntu 24.04)
- En miljö med Docker och Git
Konfigurationsguide
Här använder vi overleaf-cep som exempel för att visa hur du konfigurerar en utvecklingsmiljö för Overleaf.1
Hämta källkoden
Först klonar vi repot:
bash
2
Synkronisera package-lock.json
Eftersom Overleaf utvecklas i ett internt repository är det mycket troligt att filen Om du inte har nodejs installerat behöver du inte oroa dig – du kan använda
package-lock.json blir osynkroniserad på grund av vissa utvecklingsproblem. Vi behöver köra följande kommando för att synkronisera den (om du har en lokal nodejs-miljö).bash
docker direkt för att köra samma kommando. Kör från roten av Overleaf-repot:bash
3
Bygg utvecklingsavbildningen
Overleaf tillhandahåller en särskild katalog,
/develop, för utvecklingsskript. Bygg bara tjänsterna:bash
Om Docker får slut på RAM när tjänsterna byggs parallellt skapar du en
.env-fil i den här katalogen som innehåller COMPOSE_PARALLEL_LIMIT=1.4
Starta alla mikrotjänster
Starta sedan tjänsterna:När tjänsterna körs öppnar du http://localhost/launchpad för att skapa det första administratörskontot.
bash
Du måste köra
bin/up innan du kör kommandot bin/dev. Annars kan du stöta på en rad behörighetsproblem.Som standard är administratörsbehörighet inte tillgänglig. Du behöver lägga till följande i
develop/dev.env. Därefter får du åtkomst till adminpanelen.TeX Live
För att kompilera en PDF behöver du bygga en TeX Live-avbildning som hanterar kompileringen i Docker:.env-fil i den här katalogen som innehåller DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
Du är också välkommen att använda ayaka-notes/texlive-full, men du kan använda taggen base, som är den minsta versionen av texlive.
Utveckling
För att slippa körabin/build && bin/up efter varje kodändring kan du köra Overleaf Community Edition i utvecklingsläge, där tjänsterna uppdateras automatiskt vid kodändringar.
Använd det medföljande skriptet bin/dev för detta:
node --watch, som automatiskt övervakar koden och startar om tjänsterna vid behov.
För bättre prestanda kan du starta endast en delmängd av tjänsterna i utvecklingsläge genom att ange en blankstegsseparerad lista till skriptet bin/dev:
Om tjänsten
web startas i utvecklingsläge uppdateras tjänsten web endast när backendkoden ändras. För att även frontendkoden ska uppdateras automatiskt ser du till att också starta tjänsten webpack i utvecklingsläge.Felsökning
När de körs i utvecklingsläge exponerar de flesta tjänster en felsökningsport som du kan ansluta en debugger till, till exempel inspektören i Chromes Dev Tools eller en debugger som är integrerad i en IDE. Följande tabell visar vilken port som exponeras på värddatorn för varje tjänst:
För att ansluta till en tjänst med Chromes fjärrfelsökning går du till chrome://inspect/ och ser till att Discover network targets är markerat. Klicka sedan på Configure… och lägg till en post
localhost:[service port] för var och en av de tjänster du vill ansluta en debugger till.
När du har lagt till en post visas tjänsten som ett Remote Target som du kan inspektera och felsöka.
Loggning
I utvecklingsmiljön tillhandahåller Overleaf skriptetbin/logs, men du behöver installera vissa beroenden:

