Forudsætninger
Overleaf er et typisk open source-projekt med mikroservicearkitektur, hvor alle tjenester kører i Docker.- Den officielle kildekode til Community Edition findes på GitHub Overleaf Official.
- Kildekoden til Overleaf-CEP er tilgængelig på GitHub Yu-i-i/Overleaf.
- Overleaf Pro Edition er tilgængelig på GitHub Ayaka-notes/overleaf-pro.
Da servere med 8 eller flere CPU-kerner typisk er dyre, anbefales det kraftigt at bruge din lokale computer til udvikling.
- En kraftig server/desktop til udvikling
- En nyere og stabil Ubuntu LTS (f.eks. Ubuntu 24.04)
- Et Docker- og Git-miljø
Konfigurationsvejledning
Her bruger vi overleaf-cep som eksempel til at vise, hvordan man konfigurerer et udviklingsmiljø til Overleaf.1
Hent kildekoden
Lad os først klone repositoriet:
bash
2
Synkroniser package-lock.json
Da Overleaf udvikles i et internt repository, er der stor sandsynlighed for, at filen Hvis du ikke har nodejs installeret, skal du ikke bekymre dig – du kan bruge
package-lock.json kommer ud af synkronisering på grund af visse udviklingsforhold. Vi skal køre følgende kommando for at synkronisere den (hvis du har et lokalt nodejs-miljø).bash
docker direkte til at køre den samme kommando. Kør den fra roden af Overleaf-repositoriet:bash
3
Byg udviklingsimaget
Overleaf stiller en dedikeret mappe
/develop til rådighed til udviklingsscripts. Byg blot tjenesterne:bash
Hvis Docker løber tør for RAM, mens tjenesterne bygges parallelt, skal du oprette en
.env-fil i denne mappe, der indeholder COMPOSE_PARALLEL_LIMIT=1.4
Start alle mikrotjenester
Start derefter tjenesterne:Når tjenesterne kører, skal du åbne http://localhost/launchpad for at oprette den første administratorkonto.
bash
Du skal køre
bin/up, før du kører kommandoen bin/dev. Ellers kan du støde på en række rettighedsproblemer.Som standard er administratorrettigheder ikke tilgængelige. Du skal tilføje dette til
develop/dev.env. Derefter har du adgang til administrationspanelet.TeX Live
For at kompilere en PDF skal der bygges et TeX Live-image, som håndterer kompileringen i Docker:.env-fil i denne mappe, der indeholder DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
Du er også velkommen til at bruge ayaka-notes/texlive-full, men du kan bruge base-tagget, som er den minimale version af texlive.
Udvikling
For at undgå at kørebin/build && bin/up efter hver kodeændring kan du køre Overleaf Community Edition i udviklingstilstand, hvor tjenesterne automatisk opdateres ved kodeændringer.
Det gør du med det medfølgende script bin/dev:
node --watch, som automatisk overvåger koden og genstarter tjenesterne efter behov.
For at forbedre ydeevnen kan du starte kun en delmængde af tjenesterne i udviklingstilstand ved at give scriptet bin/dev en mellemrumsadskilt liste:
Hvis tjenesten
web startes i udviklingstilstand, opdateres web-tjenesten kun, når backend-koden ændres. For også at opdatere frontend-koden automatisk skal du sørge for også at starte tjenesten webpack i udviklingstilstand.Fejlfinding
Når de kører i udviklingstilstand, eksponerer de fleste tjenester en debugging-port, som du kan tilknytte en debugger til, f.eks. inspectoren i Chromes Dev Tools eller en debugger integreret i en IDE. Følgende tabel viser den port, der eksponeres på værtsmaskinen for hver tjeneste:
For at tilknytte dig en tjeneste med Chromes remote debugging skal du gå til chrome://inspect/ og sikre dig, at Discover network targets er markeret. Klik derefter på Configure… og tilføj en post
localhost:[service port] for hver af de tjenester, du vil tilknytte en debugger til.
Når du har tilføjet en post, vises tjenesten som et Remote Target, som du kan inspicere og debugge.
Logning
I udviklingsmiljøet stiller Overleaf scriptetbin/logs til rådighed, men du skal installere nogle afhængigheder:

