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

# Opsætning af udviklingsmiljø (lokalt)

> Opsæt dit udviklingsmiljø på din lokale server eller desktop.

## Forudsætninger

Overleaf er et typisk open source-projekt med mikroservicearkitektur, hvor alle tjenester kører i Docker.&#x20;

* Den officielle kildekode til Community Edition findes på [GitHub Overleaf Official](https://github.com/overleaf/overleaf/tree).&#x20;
* Kildekoden til Overleaf-CEP er tilgængelig på [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep).
* Overleaf Pro Edition er tilgængelig på [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro).

For at opsætte et udviklingsmiljø til Overleaf skal du bruge en kraftig server; en konfiguration med mindst 8 kerner og 16 GB RAM anbefales, da du skal køre mere end 20 containere samtidigt.

<Info>
  Da servere med 8 eller flere CPU-kerner typisk er dyre, anbefales det kraftigt at bruge din lokale computer til udvikling.
</Info>

Som udvikler går vi samtidig ud fra, at du allerede er fortrolig med [installation af Docker](https://docs.docker.com/engine/install/ubuntu/). Vi anbefaler kraftigt at bruge en nyere og stabil Ubuntu LTS (f.eks. Ubuntu 24.04 i 2025–2026) og den nyeste Docker til udvikling, da det mindsker risikoen for uventede fejl.

Kort sagt skal du bruge:

* [x] En kraftig server/desktop til udvikling
* [x] En nyere og stabil Ubuntu LTS (f.eks. Ubuntu 24.04)
* [x] Et Docker- og Git-miljø

## Konfigurationsvejledning

Her bruger vi overleaf-cep som eksempel til at vise, hvordan man konfigurerer et udviklingsmiljø til Overleaf.

<Steps>
  <Step title="Hent kildekoden">
    Lad os først klone repositoriet:

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

  <Step title="Synkroniser `package-lock.json`">
    Da Overleaf udvikles i et [internt repository](http://github.com/overleaf/internal), er der stor sandsynlighed for, at filen `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 title="bash" theme={null}
    npm install --package-lock-only --ignore-scripts
    ```

    Hvis du ikke har nodejs installeret, skal du ikke bekymre dig – du kan bruge `docker` direkte til at køre den samme kommando. Kør den <strong>fra roden af Overleaf-repositoriet:</strong>

    ```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="Byg udviklingsimaget">
    Overleaf stiller en dedikeret mappe `/develop` til rådighed til udviklingsscripts. Byg blot tjenesterne:

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

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

  <Step title="Start alle mikrotjenester">
    Start derefter tjenesterne:

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

    Når tjenesterne kører, skal du åbne [http://localhost/launchpad](http://localhost/launchpad) for at oprette den første administratorkonto.

    <Danger>
      Du skal køre `bin/up`, før du kører kommandoen `bin/dev`. Ellers kan du støde på en række rettighedsproblemer.
    </Danger>
  </Step>
</Steps>

<Info>
  Som standard er administratorrettigheder ikke tilgængelige. Du skal tilføje dette til `develop/dev.env`. Derefter har du adgang til administrationspanelet.

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

### TeX Live

For at kompilere en PDF skal der bygges et TeX Live-image, som håndterer kompileringen i Docker:

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

For at kompilere på en macOS-vært kan det være nødvendigt at tilsidesætte stien til Docker-socket ved at oprette en `.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](https://github.com/ayaka-notes/texlive-full), men du kan bruge base-tagget, som er den minimale version af texlive.

### Udvikling

For at undgå at køre `bin/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`:

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

Dette starter alle tjenester med `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:

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

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

Hvis der ikke angives nogen tjenester, starter alle tjenester 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:

| Tjeneste | 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 |

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 scriptet `bin/logs` til rådighed, men du skal installere nogle afhængigheder:

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

Alternativt kan du køre direkte med:

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

### Andre værktøjer

Når du har gjort alt dette, kan du se [næste afsnit](/da/dev/environment/setup-develop-tools) for at tilføje nogle debugging-værktøjer til din Overleaf-udvikling.


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