Forutsetninger
Overleaf er et typisk åpen kildekode-prosjekt med mikrotjenestearkitektur, der alle tjenester kjører i Docker.- Kildekoden til den offisielle Community Edition finnes på GitHub Overleaf Official.
- Kildekoden til Overleaf-CEP er tilgjengelig på GitHub Yu-i-i/Overleaf.
- Overleaf Pro Edition er tilgjengelig på GitHub Ayaka-notes/overleaf-pro.
Siden servere med 8 eller flere CPU-kjerner vanligvis er dyre, anbefales det sterkt å bruke din lokale datamaskin til utvikling.
- En kraftig server/stasjonær maskin å utvikle på
- En nyere og stabil Ubuntu LTS (f.eks. Ubuntu 24.04)
- Docker- og Git-miljø
Konfigurasjonsveiledning
Her bruker vi overleaf-cep som eksempel for å vise hvordan du konfigurerer et utviklingsmiljø for Overleaf.1
Hent kildekoden
Først kloner vi repositoriet:
bash
2
Synkroniser package-lock.json
Siden Overleaf utvikles i et internt repositorium, er det svært sannsynlig at Hvis du ikke har Node.js installert, trenger du ikke bekymre deg – du kan bruke
package-lock.json-filen kommer ut av synk på grunn av enkelte utviklingsforhold. Vi må kjøre følgende kommando for å synkronisere den (hvis du har et lokalt Node.js-miljø):bash
docker direkte til å kjøre den samme kommandoen. Kjør fra roten av Overleaf-repositoriet:bash
3
Bygg utviklingsimage
Overleaf tilbyr en egen katalog,
/develop, for utviklingsskript. Bygg ganske enkelt tjenestene:bash
Hvis Docker går tom for RAM mens tjenestene bygges parallelt, oppretter du en
.env-fil i denne katalogen som inneholder COMPOSE_PARALLEL_LIMIT=1.4
Start alle mikrotjenester
Start deretter tjenestene:Når tjenestene kjører, åpner du http://localhost/launchpad for å opprette den første administratorkontoen.
bash
Du må kjøre
bin/up før du kjører kommandoen bin/dev. Ellers kan du støte på en rekke tillatelsesproblemer.Administratorrettigheter er ikke tilgjengelige som standard. Du må legge til dette i
develop/dev.env. Etter det får du tilgang til administrasjonspanelet.TeX Live
For å kompilere en PDF må du bygge et TeX Live-image som håndterer kompileringen inne i Docker:.env-fil i denne katalogen som inneholder DOCKER_SOCKET_PATH=/var/run/docker.sock.raw
Du kan også gjerne bruke ayaka-notes/texlive-full, men da kan du bruke base-taggen, som er minimumsversjonen av TeX Live.
Utvikling
For å slippe å kjørebin/build && bin/up etter hver kodeendring kan du kjøre Overleaf Community Edition i utviklingsmodus, der tjenestene oppdateres automatisk ved kodeendringer.
Bruk det medfølgende skriptet bin/dev til dette:
node --watch, som automatisk overvåker koden og starter tjenestene på nytt ved behov.
For bedre ytelse kan du starte bare et utvalg av tjenestene i utviklingsmodus ved å gi skriptet bin/dev en mellomromsseparert liste:
Hvis du starter
web-tjenesten i utviklingsmodus, oppdateres web-tjenesten bare når backend-koden endres. For også å oppdatere frontend-koden automatisk må du sørge for å starte webpack-tjenesten i utviklingsmodus i tillegg.Feilsøking
Når de kjøres i utviklingsmodus, eksponerer de fleste tjenester en feilsøkingsport som du kan koble en debugger til, for eksempel inspektøren i Chromes utviklerverktøy eller en som er integrert i en IDE. Tabellen nedenfor viser porten som eksponeres på vertsmaskinen for hver tjeneste:
For å koble til en tjeneste med Chromes ekstern feilsøking går du til chrome://inspect/ og sørger for at Discover network targets er avkrysset. Klikk deretter Configure… og legg til en oppføring
localhost:[service port] for hver tjeneste du vil koble en debugger til.
Etter at du har lagt til en oppføring, vises tjenesten som et Remote Target som du kan inspisere og feilsøke.
Logging
I utviklingsmiljøet tilbyr Overleaf skriptetbin/logs, men du må installere en avhengighet:

