> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Entwicklungsumgebung einrichten (lokal)

> Richten Sie Ihre Entwicklungsumgebung auf Ihrem lokalen Server oder Desktop-Rechner ein.

## 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](https://github.com/overleaf/overleaf/tree).
* Der Quellcode von Overleaf-CEP ist auf [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep) verfügbar.
* Die Overleaf Pro Edition ist auf [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro) verfügbar.

Um eine Overleaf-Entwicklungsumgebung einzurichten, benötigen Sie einen leistungsstarken Server; empfohlen wird eine Konfiguration mit mindestens 8 Kernen und 16 GB RAM, da Sie mehr als 20 Container gleichzeitig ausführen müssen.

<Info>
  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.
</Info>

Als Entwickler sollten Sie außerdem bereits mit der [Docker-Installation](https://docs.docker.com/engine/install/ubuntu/) vertraut sein. Wir empfehlen dringend, ein aktuelles und stabiles Ubuntu LTS (z. B. Ubuntu 24.04 in 2025–2026) und die neueste Docker-Version für die Entwicklung zu verwenden, da dies die Wahrscheinlichkeit unerwarteter Fehler verringert.

Zusammengefasst benötigen Sie:

* [x] Einen leistungsstarken Server/Desktop-Rechner für die Entwicklung
* [x] Ein aktuelles und stabiles Ubuntu LTS (z. B. Ubuntu 24.04)
* [x] Eine Docker- und Git-Umgebung

## Konfigurationsanleitung

Hier verwenden wir overleaf-cep als Beispiel, um zu zeigen, wie eine Overleaf-Entwicklungsumgebung konfiguriert wird.

<Steps>
  <Step title="Quellcode abrufen">
    Klonen Sie zunächst das Repository:

    ```bash title="bash" theme={null}
    git clone https://github.com/ayaka-notes/overleaf-pro.git
    cd overleaf-pro
    ```
  </Step>

  <Step title="`package-lock.json` synchronisieren">
    Da Overleaf in einem [internen Repository](http://github.com/overleaf/internal) entwickelt wird, ist die Datei `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 title="bash" theme={null}
    npm install --package-lock-only --ignore-scripts
    ```

    Wenn Node.js nicht installiert ist, keine Sorge: Sie können denselben Befehl direkt mit `docker` ausführen. Führen Sie ihn <strong>im Stammverzeichnis des Overleaf-Repositorys</strong> aus:

    ```bash title="bash" theme={null}
    docker run --rm \
      -v "$(pwd)":/workspace \
      -w /workspace \
      node:22.18.0 \
      npm install --package-lock-only --ignore-scripts
    ```
  </Step>

  <Step title="Entwicklungs-Image bauen">
    Overleaf stellt ein eigenes Verzeichnis `/develop` für Entwicklungsskripte bereit. Bauen Sie einfach die Dienste:

    ```bash title="bash" theme={null}
    cd ./develop
    bin/build
    ```

    <Info>
      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`.
    </Info>
  </Step>

  <Step title="Alle Microservices starten">
    Starten Sie anschließend die Dienste:

    ```bash title="bash" theme={null}
    bin/up
    ```

    Sobald die Dienste laufen, öffnen Sie [http://localhost/launchpad](http://localhost/launchpad), um das erste Administratorkonto anzulegen.

    <Danger>
      Sie müssen `bin/up` ausführen, bevor Sie den Befehl `bin/dev` ausführen. Andernfalls können eine Reihe von Berechtigungsproblemen auftreten.
    </Danger>
  </Step>
</Steps>

<Info>
  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.

  ```text theme={null}
  ADMIN_PRIVILEGE_AVAILABLE=true
  ```
</Info>

### TeX Live

Zum Kompilieren eines PDFs muss ein TeX-Live-Image gebaut werden, das die Kompilierung innerhalb von Docker übernimmt:

```text theme={null}
docker build texlive -t texlive-full
```

Um auf einem macOS-Host zu kompilieren, müssen Sie möglicherweise den Pfad zum Docker-Socket überschreiben, indem Sie in diesem Verzeichnis eine `.env`-Datei mit dem Inhalt `DOCKER_SOCKET_PATH=/var/run/docker.sock.raw` anlegen.

Sie können auch gerne [ayaka-notes/texlive-full](https://github.com/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änderung `bin/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`:

```text theme={null}
bin/dev
```

Dadurch werden alle Dienste mit `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:

```text theme={null}
bin/dev [service1] [service2] ... [serviceN]
```

<Info>
  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*.
</Info>

Wenn keine Dienste angegeben werden, starten alle Dienste 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:

| Dienst | Port |
| - | - |
| `web` | 9229 |
| `clsi` | 9230 |
| `chat` | 9231 |
| `contacts` | 9232 |
| `docstore` | 9233 |
| `document-updater` | 9234 |
| `filestore` | 9235 |
| `notifications` | 9236 |
| `real-time` | 9237 |
| `references` | 9238 |
| `history-v1` | 9239 |
| `project-history` | 9240 |
| `linked-url-proxy` | 9241 |

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 Skript `bin/logs` bereit; dafür müssen Sie jedoch einige Abhängigkeiten installieren:

```bash theme={null}
sudo npm install -g bunyan
# Or sudo apt install node-bunyan 
```

Alternativ können Sie die Logs direkt so anzeigen:

```text theme={null}
docker compose logs -f [service name]
```

### Weitere Tools

Wenn Sie alles erledigt haben, finden Sie im [nächsten Abschnitt](/de/dev/environment/setup-develop-tools) Hinweise, wie Sie Ihrer Overleaf-Entwicklung einige Debugging-Tools hinzufügen.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.