Voraussetzungen
Overleaf ist ein typisches Open-Source-Projekt mit Microservice-Architektur, bei dem alle Dienste in Docker laufen.- Der Quellcode der offiziellen Community Edition befindet sich auf GitHub Overleaf Official.
- Der Quellcode von Overleaf-CEP ist auf GitHub Yu-i-i/Overleaf verfügbar.
- Die Overleaf Pro Edition ist auf GitHub Ayaka-notes/overleaf-pro verfügbar.
Da Server mit 8 oder mehr CPU-Kernen in der Regel teuer sind, wird dringend empfohlen, für die Entwicklung Ihren lokalen Computer zu verwenden.
- Einen leistungsstarken Server/Desktop-Rechner für die Entwicklung
- Ein aktuelles und stabiles Ubuntu LTS (z. B. Ubuntu 24.04)
- Eine Docker- und Git-Umgebung
Konfigurationsanleitung
Hier verwenden wir overleaf-cep als Beispiel, um zu zeigen, wie eine Overleaf-Entwicklungsumgebung konfiguriert wird.1
Quellcode abrufen
Klonen Sie zunächst das Repository:
bash
2
package-lock.json synchronisieren
Da Overleaf in einem internen Repository entwickelt wird, ist die Datei Wenn Node.js nicht installiert ist, keine Sorge: Sie können denselben Befehl direkt mit
package-lock.json aufgrund einiger Entwicklungsabläufe sehr wahrscheinlich nicht mehr synchron. Führen Sie den folgenden Befehl aus, um sie zu synchronisieren (sofern Sie eine lokale Node.js-Umgebung haben):bash
docker ausführen. Führen Sie ihn im Stammverzeichnis des Overleaf-Repositorys aus:bash
3
Entwicklungs-Image bauen
Overleaf stellt ein eigenes Verzeichnis
/develop für Entwicklungsskripte bereit. Bauen Sie einfach die Dienste:bash
Falls Docker beim parallelen Bauen der Dienste nicht genügend RAM hat, erstellen Sie in diesem Verzeichnis eine
.env-Datei mit dem Inhalt COMPOSE_PARALLEL_LIMIT=1.4
Alle Microservices starten
Starten Sie anschließend die Dienste:Sobald die Dienste laufen, öffnen Sie http://localhost/launchpad, um das erste Administratorkonto anzulegen.
bash
Sie müssen
bin/up ausführen, bevor Sie den Befehl bin/dev ausführen. Andernfalls können eine Reihe von Berechtigungsproblemen auftreten.Standardmäßig sind Administratorrechte nicht verfügbar. Sie müssen Folgendes zu
develop/dev.env hinzufügen. Danach haben Sie Zugriff auf das Admin-Panel.TeX Live
Zum Kompilieren eines PDFs muss ein TeX-Live-Image gebaut werden, das die Kompilierung innerhalb von Docker übernimmt:.env-Datei mit dem Inhalt DOCKER_SOCKET_PATH=/var/run/docker.sock.raw anlegen.
Sie können auch gerne ayaka-notes/texlive-full verwenden; dabei können Sie den Tag base nutzen, die minimale Version von TeX Live.
Entwicklung
Damit Sie nicht nach jeder Codeänderungbin/build && bin/up ausführen müssen, können Sie die Overleaf Community Edition im Entwicklungsmodus betreiben, in dem sich die Dienste bei Codeänderungen automatisch aktualisieren.
Verwenden Sie dazu das mitgelieferte Skript bin/dev:
node --watch gestartet, das den Code automatisch überwacht und die Dienste bei Bedarf neu startet.
Zur Verbesserung der Performance können Sie nur eine Teilmenge der Dienste im Entwicklungsmodus starten, indem Sie dem Skript bin/dev eine durch Leerzeichen getrennte Liste übergeben:
Wenn Sie den Dienst
web im Entwicklungsmodus starten, wird web nur bei Änderungen am Backend-Code aktualisiert. Damit auch der Frontend-Code automatisch aktualisiert wird, starten Sie zusätzlich den Dienst webpack im Entwicklungsmodus.Debugging
Im Entwicklungsmodus stellen die meisten Dienste einen Debugging-Port bereit, an den Sie einen Debugger anhängen können, etwa den Inspector in den Chrome Dev Tools oder einen in eine IDE integrierten Debugger. Die folgende Tabelle zeigt den auf dem Host-Rechner bereitgestellten Port für jeden Dienst:
Um sich über das Remote Debugging von Chrome mit einem Dienst zu verbinden, öffnen Sie chrome://inspect/ und stellen Sie sicher, dass Discover network targets aktiviert ist. Klicken Sie dann auf Configure… und fügen Sie für jeden Dienst, an den Sie einen Debugger anhängen möchten, einen Eintrag
localhost:[service port] hinzu.
Nach dem Hinzufügen eines Eintrags erscheint der Dienst als Remote Target, das Sie untersuchen und debuggen können.
Logging
In der Entwicklungsumgebung stellt Overleaf das Skriptbin/logs bereit; dafür müssen Sie jedoch einige Abhängigkeiten installieren:

