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

# Kehitysympäristön määritys (paikallinen)

> Määritä kehitysympäristösi paikalliselle palvelimelle tai työasemalle.

## Esivaatimukset

Overleaf on tyypillinen mikropalveluarkkitehtuuriin perustuva avoimen lähdekoodin projekti, jonka kaikki palvelut ajetaan Dockerissa.

* Virallisen Community Editionin lähdekoodi on osoitteessa [GitHub Overleaf Official](https://github.com/overleaf/overleaf/tree).
* Overleaf-CEP:n lähdekoodi on saatavilla osoitteessa [GitHub Yu-i-i/Overleaf](https://github.com/yu-i-i/overleaf-cep).
* Overleaf Pro Edition on saatavilla osoitteessa [GitHub Ayaka-notes/overleaf-pro](https://github.com/ayaka-notes/overleaf-pro).

Overleaf-kehitysympäristön määrittämiseen tarvitset tehokkaan palvelimen; suosittelemme vähintään 8 ydintä ja 16 Gt RAM-muistia, koska sinun on ajettava yli 20 konttia samanaikaisesti.

<Info>
  Koska palvelimet, joissa on vähintään 8 suoritinydintä, ovat yleensä kalliita, suosittelemme vahvasti kehittämään omalla paikallisella tietokoneellasi.
</Info>

Oletamme lisäksi, että kehittäjänä tunnet jo [Dockerin asennuksen](https://docs.docker.com/engine/install/ubuntu/). Suosittelemme vahvasti käyttämään kehitykseen tuoretta ja vakaata Ubuntu LTS -versiota (esim. Ubuntu 24.04 vuosina 2025–2026) ja uusinta Dockeria, sillä tämä vähentää odottamattomien virheiden todennäköisyyttä.

Yhteenvetona tarvitset:

* [x] Tehokkaan palvelimen tai työaseman kehitykseen
* [x] Tuoreen ja vakaan Ubuntu LTS -version (esim. Ubuntu 24.04)
* [x] Docker- ja Git-ympäristön

## Määritysopas

Käytämme tässä esimerkkinä overleaf-cep:tä havainnollistaaksemme, miten Overleaf-kehitysympäristö määritetään.

<Steps>
  <Step title="Hae lähdekoodi">
    Kloonataan ensin repositorio:

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

  <Step title="Synkronoi `package-lock.json`">
    Koska Overleafia kehitetään [sisäisessä repositoriossa](http://github.com/overleaf/internal), `package-lock.json`-tiedosto on hyvin todennäköisesti epäsynkronissa joidenkin kehitykseen liittyvien seikkojen vuoksi. Se on synkronoitava ajamalla seuraava komento (jos sinulla on paikallinen nodejs-ympäristö):

    ```bash title="bash" theme={null}
    npm install --package-lock-only --ignore-scripts
    ```

    Jos sinulla ei ole nodejs:ää asennettuna, ei hätää: voit ajaa saman komennon suoraan `docker`-komennolla. Aja <strong>Overleaf-repositorion juuresta:</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="Rakenna kehitysimage">
    Overleaf tarjoaa kehitysskripteille erillisen hakemiston `/develop`. Rakenna palvelut:

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

    <Info>
      Jos Dockerilta loppuu RAM-muisti palveluiden rinnakkaisen rakentamisen aikana, luo tähän hakemistoon `.env`-tiedosto, joka sisältää rivin `COMPOSE_PARALLEL_LIMIT=1`.
    </Info>
  </Step>

  <Step title="Käynnistä kaikki mikropalvelut">
    Käynnistä sitten palvelut:

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

    Kun palvelut ovat käynnissä, avaa [http://localhost/launchpad](http://localhost/launchpad) ja luo ensimmäinen ylläpitäjätili.

    <Danger>
      Sinun on ajettava `bin/up` ennen `bin/dev`-komentoa. Muuten saatat kohdata useita käyttöoikeusongelmia.
    </Danger>
  </Step>
</Steps>

<Info>
  Ylläpitäjän oikeudet eivät ole oletuksena käytettävissä. Lisää tämä tiedostoon `develop/dev.env`. Sen jälkeen pääset ylläpitopaneeliin.

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

### TeX Live

PDF:n kääntäminen edellyttää TeX Live -imagen rakentamista, jotta kääntäminen voidaan tehdä Dockerin sisällä:

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

Jos käännät macOS-isännällä, Docker-socketin polku on ehkä ohitettava luomalla tähän hakemistoon `.env`-tiedosto, joka sisältää rivin `DOCKER_SOCKET_PATH=/var/run/docker.sock.raw`

Voit myös käyttää imagea [ayaka-notes/texlive-full](https://github.com/ayaka-notes/texlive-full), mutta voit käyttää base-tagia, joka on texliven minimiversio.

### Kehitys

Jotta sinun ei tarvitse ajaa `bin/build && bin/up` jokaisen koodimuutoksen jälkeen, voit ajaa Overleaf Community Editionia *kehitystilassa*, jolloin palvelut päivittyvät automaattisesti koodimuutosten myötä.

Käytä tähän mukana tulevaa `bin/dev`-skriptiä:

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

Tämä käynnistää kaikki palvelut komennolla `node --watch`, joka valvoo koodia automaattisesti ja käynnistää palvelut tarvittaessa uudelleen.

Suorituskyvyn parantamiseksi voit käynnistää kehitystilassa vain osan palveluista antamalla `bin/dev`-skriptille välilyönnein erotellun luettelon:

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

<Info>
  Kun `web`-palvelu käynnistetään *kehitystilassa*, vain `web`-palvelu päivittyy taustajärjestelmän koodin muuttuessa. Jotta myös käyttöliittymäkoodi päivittyisi automaattisesti, käynnistä myös `webpack`-palvelu *kehitystilassa*.
</Info>

Jos palveluita ei nimetä, kaikki palvelut käynnistyvät kehitystilassa.

### Virheenjäljitys

*Kehitystilassa* ajettaessa useimmat palvelut avaavat virheenjäljitysportin, johon voit liittää virheenjäljittimen, kuten Chromen Dev Toolsin inspectorin tai IDE:hen integroidun virheenjäljittimen. Seuraava taulukko näyttää kunkin palvelun **isäntäkoneella** avaaman portin:

| Palvelu | Portti |
| - | - |
| `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 |

Liittyäksesi palveluun Chromen *etävirheenjäljityksellä* siirry osoitteeseen chrome://inspect/ ja varmista, että *Discover network targets* on valittuna. Napsauta seuraavaksi *Configure...* ja lisää merkintä `localhost:[service port]` jokaiselle palvelulle, johon haluat liittää virheenjäljittimen.

Merkinnän lisäämisen jälkeen palvelu näkyy *Remote Target* -kohteena, jota voit tarkastella ja jäljittää.

### Lokit

Kehitysympäristössä Overleaf tarjoaa skriptin `bin/logs`, mutta sitä varten on asennettava joitakin riippuvuuksia:

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

Vaihtoehtoisesti voit ajaa suoraan:

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

### Muut työkalut

Kun olet tehnyt kaiken tämän, voit katsoa [seuraavasta osiosta](/fi/dev/environment/setup-develop-tools), miten lisäät Overleaf-kehitykseesi virheenjäljitystyökaluja.


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