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

# Sette opp utviklingsmiljø (lokalt)

> Sett opp utviklingsmiljøet ditt på din lokale server eller stasjonære datamaskin.

## Forutsetninger

Overleaf er et typisk åpen kildekode-prosjekt med mikrotjenestearkitektur, der alle tjenester kjører i Docker.&#x20;

* Kildekoden til den offisielle Community Edition finnes på [GitHub Overleaf Official](https://github.com/overleaf/overleaf/tree).&#x20;
* Kildekoden til Overleaf-CEP er tilgjengelig på [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep).
* Overleaf Pro Edition er tilgjengelig på [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro).

For å sette opp et utviklingsmiljø for Overleaf trenger du en kraftig server; en konfigurasjon med minst 8 kjerner og 16 GB RAM anbefales, siden du må kjøre mer enn 20 containere samtidig.

<Info>
  Siden servere med 8 eller flere CPU-kjerner vanligvis er dyre, anbefales det sterkt å bruke din lokale datamaskin til utvikling.
</Info>

Samtidig forventer vi at du som utvikler allerede er kjent med [Docker-installasjon](https://docs.docker.com/engine/install/ubuntu/). Vi anbefaler sterkt å bruke en nyere og stabil Ubuntu LTS (f.eks. Ubuntu 24.04 i 2025–2026) og nyeste Docker til utvikling, da dette reduserer risikoen for uventede feil.

Oppsummert trenger du:

* [x] En kraftig server/stasjonær maskin å utvikle på
* [x] En nyere og stabil Ubuntu LTS (f.eks. Ubuntu 24.04)
* [x] Docker- og Git-miljø

## Konfigurasjonsveiledning

Her bruker vi overleaf-cep som eksempel for å vise hvordan du konfigurerer et utviklingsmiljø for Overleaf.

<Steps>
  <Step title="Hent kildekoden">
    Først kloner vi 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`">
    Siden Overleaf utvikles i et [internt repositorium](http://github.com/overleaf/internal), er det svært sannsynlig at `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 title="bash" theme={null}
    npm install --package-lock-only --ignore-scripts
    ```

    Hvis du ikke har Node.js installert, trenger du ikke bekymre deg – du kan bruke `docker` direkte til å kjøre den samme kommandoen. Kjør <strong>fra roten av 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="Bygg utviklingsimage">
    Overleaf tilbyr en egen katalog, `/develop`, for utviklingsskript. Bygg ganske enkelt tjenestene:

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

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

  <Step title="Start alle mikrotjenester">
    Start deretter tjenestene:

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

    Når tjenestene kjører, åpner du [http://localhost/launchpad](http://localhost/launchpad) for å opprette den første administratorkontoen.

    <Danger>
      Du må kjøre `bin/up` før du kjører kommandoen `bin/dev`. Ellers kan du støte på en rekke tillatelsesproblemer.
    </Danger>
  </Step>
</Steps>

<Info>
  Administratorrettigheter er ikke tilgjengelige som standard. Du må legge til dette i `develop/dev.env`. Etter det får du tilgang til administrasjonspanelet.

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

### TeX Live

For å kompilere en PDF må du bygge et TeX Live-image som håndterer kompileringen inne i Docker:

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

For å kompilere på en macOS-vert kan det hende du må overstyre stien til Docker-socketen ved å opprette en `.env`-fil i denne katalogen som inneholder `DOCKER_SOCKET_PATH=/var/run/docker.sock.raw`

Du kan også gjerne bruke [ayaka-notes/texlive-full](https://github.com/ayaka-notes/texlive-full), men da kan du bruke base-taggen, som er minimumsversjonen av TeX Live.

### Utvikling

For å slippe å kjøre `bin/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:

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

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

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

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

Hvis ingen tjenester angis, starter alle tjenestene i utviklingsmodus.

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

| 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 å 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 skriptet `bin/logs`, men du må installere en avhengighet:

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

Eller du kan kjøre direkte med:

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

### Andre verktøy

Når du er ferdig med alt dette, kan du se [neste avsnitt](/no/dev/environment/setup-develop-tools) for å legge til noen feilsøkingsverktøy i Overleaf-utviklingen din.


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