> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/fi/maaritys/overleaf-toolkit/hiekkalaatikossa-suoritettavat-kaannokset.md).

# Hiekkalaatikossa suoritettavat käännökset

Overleaf Pro -versiossa on mahdollisuus ajaa käännökset suojatussa hiekkalaatikkoympäristössä yritystason tietoturvaa varten. Se tekee tämän ajamalla jokaisen projektin omassa suojatussa Docker-ympäristössään.

### Parannettu tietoturva

Sandboxoidut käännökset ovat suositeltu tapa Server Pro -versiossa, koska monet LaTeX-asiakirjat tarvitsevat tai niillä on mahdollisuus suorittaa mielivaltaisia shell-komentoja osana PDF-käännösprosessia. Jos käytät sandboxoituja käännöksiä, jokainen käännös ajetaan erillisessä Docker-kontissa, jonka ominaisuudet ovat rajoitetut, eikä niitä jaeta muiden käyttäjien tai projektien kanssa, eikä sillä ole pääsyä ulkoisiin resursseihin, kuten isäntäkoneen verkkoon.

{% hint style="warning" %}
Jos yrität ajaa Overleaf Pro -versiota **ilman** sandboxoituja käännöksiä, käännös ajetaan muiden samanaikaisten käännösten rinnalla pääasiallisessa Docker-kontissa, ja käyttäjillä on täysi luku- ja kirjoitusoikeus `sharelatex` kontin resursseihin (tiedostojärjestelmä, verkko ja ympäristömuuttujat) LaTeX-käännöksiä ajettaessa.
{% endhint %}

### Helpompi pakettien hallinta

Jotta paketteja ei tarvitsisi asentaa manuaalisesti, suosittelemme ottamaan sandboxoidut käännökset käyttöön. Tämä on Server Pro -versiossa määritettävä asetus, joka antaa käyttäjillesi pääsyn samaan TeX Live -ympäristöön kuin overleaf.comissa, mutta omassa paikallisessa asennuksessasi. Sandboxoitujen käännösten käyttämät TeX Live -kuvat sisältävät suosituimmat paketit ja fontit, jotka on testattu galleria-templaattejamme vasten, varmistaen mahdollisimman hyvän yhteensopivuuden paikallisten projektien kanssa.

Sandboxoitujen käännösten käyttöönotto antaa sinun määrittää, mistä TeX Live -versioista käyttäjät voivat valita projektiensa sisällä, sekä asettaa oletusarvoisen TeX Live -kuvaversion uusille projekteille.

{% hint style="info" %}
Jos yrität ajaa Overleaf Pro -versiota ilman sandboxoituja käännöksiä, instanssisi käyttää oletuksena käännöksissä TeX Live -ohjelmiston perusmalliversiota. Tämä perusversio on kevyt ja sisältää vain hyvin rajatun osajoukon LaTeX-paketeista, mikä johtaa hyvin todennäköisesti puuttuvien pakettien virheisiin käyttäjillesi, erityisesti jos he yrittävät käyttää valmiiksi rakennettuja templateja.
{% endhint %}

Koska Overleaf Pro on suunniteltu toimimaan offline-tilassa, overleaf.comin galleria-templateja ei ole mahdollista integroida automaattisesti paikalliseen asennukseesi; se on kuitenkin mahdollista tehdä manuaalisesti template kerrallaan. Lisätietoja siitä, miten tämä toimii, löydät oppaastamme templatejen siirtämisestä overleaf.comista: [/pages/73d47e68b2e18c3356a98f53074cc22bafd13e61#transferring-templates-from-overleaf.com](https://overleaf-pro.ayaka.space/on-premises/fi/maaritys/overleaf-toolkit/pages/73d47e68b2e18c3356a98f53074cc22bafd13e61#transferring-templates-from-overleaf.com "mention").

{% hint style="info" %}
Sandboxoidut käännökset edellyttävät, että `sharelatex` kontilla on pääsy isäntäkoneen Docker-sokettiin (bind mountin kautta), jotta se voi hallita näitä rinnakkaisia käännöskontteja.
{% endhint %}

## Miten se toimii

Kun sandboxoidut käännökset ovat käytössä, Docker-soketti liitetään isäntäkoneesta `sharelatex` konttiin, jotta kontin kääntäjäpalvelu voi luoda uusia Docker-kontteja isännälle. Sitten jokaisella kääntäjän ajokerralla jokaisessa projektissa LaTeX-kääntäjäpalvelu (CLSI) tekee seuraavaa:

* Kirjoittaa projektitiedostot sijaintiin `OVERLEAF_DATA_PATH`.
* Käyttää liitettyä Docker-sokettia uuden `texlive` kontin luomiseen käännösajoa varten.
* Saa `texlive` kontin lukemaan projektidatan sijainnista `OVERLEAF_DATA_PATH`.
* Kääntää projektin kontissa `texlive` säilön sisällä.

### Sandboxoitujen käännösten käyttöönotto&#xD;

#### Toolkit-käyttäjälle

Ottaaksesi käyttöön sandboxoidut käännökset (tunnetaan myös sisarkontteina), aseta seuraavat määritysvaihtoehdot tiedostossa `overleaf-toolkit/config/overleaf.rc`:

{% code title="config/overleaf.rc" %}

```dotenv
SERVER_PRO=true
SIBLING_CONTAINERS_ENABLED=true
```

{% endcode %}

#### Docker Compose -käyttäjälle <a href="#docker-compose-example" id="docker-compose-example"></a>

{% hint style="danger" %}
Aloittaen Overleaf CE/Server Pro -versiosta `5.0.3` ympäristömuuttujat on nimetty uudelleen muodosta `SHARELATEX_*` versioon `OVERLEAF_*`.
{% endhint %}

Jos käytät `4.x` versio (tai aiempi), varmista että muuttujilla on vastaava etuliite (esim. `SHARELATEX_MONGO_URL` sen sijaan että `OVERLEAF_MONGO_URL`).

<pre class="language-yml"><code class="lang-yml">version: '2'
palvelut:
    sharelatex:
        #...
        volyymit:
            - /data/overleaf_data:/var/lib/overleaf
<strong>            - /var/run/docker.sock:/var/run/docker.sock
</strong>        ympäristö:
            #...
<strong>            DOCKER_RUNNER: "true"
</strong><strong>            SANDBOXED_COMPILES: "true"
</strong><strong>            SANDBOXED_COMPILES_HOST_DIR: "/data/overleaf_data/data/compiles"
</strong>            #...
        #...
</code></pre>

### TexLive-kuvan vaihtaminen

{% hint style="info" %}
Manner-Kiinan käyttäjät voivat käyttää `ghcr.nju.edu.cn` nopeuttaakseen lataustasi.&#x20;
{% endhint %}

Overleaf Pro käyttää kolmea ympäristömuuttujaa määrittääkseen, mitä TeX Live -kuvia käytetään sandboxoituihin käännöksiin:

* `TEX_LIVE_DOCKER_IMAGE` **(vaaditaan),** Oletusarvoinen TeX Live -kuva, jota käytetään uusien projektien kääntämiseen. Tämä kuva on sisällytettävä kohtaan `ALL_TEX_LIVE_DOCKER_IMAGES`.
* `ALL_TEX_LIVE_DOCKER_IMAGE_NAMES` **(vaaditaan),** Pilkuilla eroteltu luettelo kuvien ystävällisistä nimistä, joita käytetään käyttöliittymän vaihtoehdoissa.
* `ALL_TEX_LIVE_DOCKER_IMAGES` **(vaaditaan),** Pilkuilla eroteltu luettelo käytettävistä TeX Live -kuvista. Jos Overleaf Toolkitia käytetään käyttöönottoon, nämä kuvat ladataan tai päivitetään. Voit ohittaa lataamisen asettamalla `SIBLING_CONTAINERS_PULL=false` tiedostossa `config/overleaf.rc`.

Kun käynnistät Overleaf Pro -instanssisi käyttämällä `bin/up` komentoa, Toolkit hakee automaattisesti kaikki kohdassa luetellut kuvat `ALL_TEX_LIVE_DOCKER_IMAGES`.

Tässä on esimerkki, jossa oletusarvo on TeX Live 2025 uusille projekteille, ja 2024 säilyy käytössä olemassa oleville projekteille.

{% code title="config/variables.env" overflow="wrap" %}

```dotenv
ALL_TEX_LIVE_DOCKER_IMAGES=ghcr.io/ayaka-notes/texlive-full:2025.1, ghcr.io/ayaka-notes/texlive-full:2024.1
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=Texlive 2025, Texlive 2024
TEX_LIVE_DOCKER_IMAGE=ghcr.io/ayaka-notes/texlive-full:2025.1
```

{% endcode %}

{% hint style="danger" %}
On erittäin suositeltavaa asettaa **vähintään 2 texlive-full-kuvaa**. Yksityiskohtainen syy löytyy kohdasta [#known-issues](#known-issues "mention")
{% endhint %}

### Saatavilla olevat TeX Live -kuvat

Nämä ovat joukko TeX Live -kuvia, jotka on erityisesti optimoitu Overleafia varten, ja ne voidaan myös lisätä kohtaan `TEX_LIVE_DOCKER_IMAGE` ja `ALL_TEX_LIVE_DOCKER_IMAGES`:&#x20;

* `ghcr.io/ayaka-notes/texlive-full:2025.1` (myös `uusinta` tagi)
* `ghcr.io/ayaka-notes/texlive-full:2024.1`
* `ghcr.io/ayaka-notes/texlive-full:2023.1`
* `ghcr.io/ayaka-notes/texlive-full:2022.1`
* `ghcr.io/ayaka-notes/texlive-full:2021.1`
* `ghcr.io/ayaka-notes/texlive-full:2020.1`

{% hint style="warning" %}
Kuvien nimeämiseen on tiukka skeema **täytyy** olla tagattu (seuraava säännöllinen lauseke pätee `^[0-9]+.[0-9]+`, jossa ensimmäinen numero määrittää TeX Live -vuoden ja toinen korjausversion).
{% endhint %}

### Voinko käyttää muuta kuvarekisteriä

> Jotkut saattavat miettiä, voinko korvata `ghcr.io` jollakin toisella peilisivustolla tai vaihtaa texliven johonkin toiseen kuvaan Docker Hubista?

Ei, emme suosittele sitä, koska määritys on suhteellisen monimutkainen. Jos lataat peilisivustolta, voit nimetä kuvasi uudelleen muotoon `ghcr.io/ayaka-notes/texlive-full`.

Mutta jos todella haluat käyttää omaa kuvarrekisteriäsi, lisää seuraava:

{% code title="config/variables.env" overflow="wrap" %}

```dotenv
IMAGE_ROOT=hub.your.com/your-repo
```

{% endcode %}

Sitten sinun täytyy varmistaa, että kaikki texliven kuvat ovat kohteessa `your-repo`, kuten

* `hub.your.com/your-repo/texlive-full:2025.1`
* `hub.your.com/your-repo/texlive-full:2024.1`

Yksityiskohtaisempia tietoja varten lue alla oleva lähdekoodi ymmärtääksesi, miten tulkitsemme ympäristömuuttujasi:

{% code title="sandboxed-compiles/index.mjs" overflow="wrap" expandable="true" %}

```mjs
if (process.env.SANDBOXED_COMPILES === 'true') {
  // Aseta oletuskuvan juuri, jos sitä ei ole annettu
  let imageRootPath = process.env.IMAGE_ROOT || "ghcr.io/ayaka-notes";
  // Vie imageRoot asetuksiin
  Settings.imageRoot = imageRootPath

  // allowedImageNames:n pitäisi olla:
  // [
  //  { imageName: "texlive-2023:latest", imageDesc: "TeX Live 2023" },
  //  { imageName: "texlive-2022:latest", imageDesc: "TeX Live 2022" },
  // ]
  Settings.allowedImageNames = parseTextExtensions(process.env.ALL_TEX_LIVE_DOCKER_IMAGES)
    .map((texImage, index) => ({
      imageName: texImage.split("/")[texImage.split("/").length - 1],
      imageDesc: parseTextExtensions(process.env.ALL_TEX_LIVE_DOCKER_IMAGE_NAMES)[index]
        || texImage.split(':')[1],
    }))
  
  // Lopuksi imageName yhdistetään imageRootiin täydellisen kuvan polun muodostamiseksi
  // Täysi nimi näyttää tältä: ghcr.io/ayaka-notes/texlive-2023:latest

  // Aseta oletuskuvan nimi, jos sitä ei ole annettu
  if(!process.env.TEX_LIVE_DOCKER_IMAGE) {
    process.env.TEX_LIVE_DOCKER_IMAGE = imageRootPath + "/" + Settings.allowedImageNames[0].imageName
  }

  // Vie currentImageName asetuksiin
  // Tämä on uusien luotujen projektien kuvan nimi
  Settings.currentImageName = process.env.TEX_LIVE_DOCKER_IMAGE
}
```

{% endcode %}

### Tunnetut ongelmat

> Käyttäminen `6.0.1-ext-v3.3`, minulla on nämä asetukset tiedostossa `variables.env`:
>
> ```dotenv
> TEX_LIVE_DOCKER_IMAGE=texlive/texlive:latest-full
> ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texlive:latest-full
> ```
>
> Tämä toimii hyvin kuvan kanssa `texlive/texlive:latest-full`. Kuitenkin latasin toisen texlive-kuvan `danteev/texlive:2025-10-15` ja muutin molemmat näistä muuttujista uuden kuvan nimeksi, mutta se ei toimi:
>
> ```dotenv
> TEX_LIVE_DOCKER_IMAGE=danteev/texlive:2025-10-15
> ALL_TEX_LIVE_DOCKER_IMAGES=danteev/texlive:2025-10-15
> ```
>
> Lokeissa näen seuraavaa:
>
> {% code overflow="wrap" %}
>
> ```
> {"name":"clsi","level":50,"err":{"message":"(HTTP-koodi 404) ei tällaista konttia - Ei tällaista kuvaa: texlive/texlive:latest-full ","name":"Error","stack":"Error: (HTTP-koodi 404) ei tällaista konttia - Ei tällaista kuvaa: texlive/texlive:latest-full ... 
> ```
>
> {% endcode %}
>
> Vaikuttaa siltä, että päivitetyt asetukset tiedostossa `variables.env` eivät tule voimaan. Käännös yrittää edelleen ajaa `texlive/texlive:latest-full` kuvaa, ei uutta kuvaa.
>
> Yritin käynnistää uudelleen, poistaa kontit ja ajaa uudelleen, mutta sama ongelma jatkuu.
>
> Onko ratkaisuja?

Joidenkin teknisten rajoitusten vuoksi, jos määrität vain yhden Docker TeXLive -kuvan, kuten `texlive-fullA:latest`&#x20;

```
ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texliveA:latest-full
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=TeXLiveA
TEX_LIVE_DOCKER_IMAGE=texlive/texliveA:latest-full
```

Ja kun olet käyttänyt overleaf-instanssiasi jonkin aikaa, saatat haluta muokata TeXLive-kuvan muotoon `texlive-fullB:latest`. Silloin huomaat, että käyttäjäsi eivät pysty kääntämään kaikkia projekteja.

```
ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texliveA:latest-full
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=TeXLiveA
TEX_LIVE_DOCKER_IMAGE=texlive/texliveA:latest-full
```

Tämä johtuu siitä, että TeXLive-Full-kuvan nimi (sandbox-käännöksiä varten) on tallennettu tietokantaan jokaisessa projektissa. *Vasta kun käyttäjä vaihtaa projektinsa TeXLive-version esimerkiksi 2024:stä 2025:een, kuvan nimi muuttuu tietokannassa*.

Kun CLSI kääntää projektin, se käyttää tietokannasta löytyvää konttikuvan nimeä projektin kääntämiseen suoraan.

Jos tarjoat vain yhden Docker-kuvan, käyttäjät eivät voi muokata projektin kääntämiseen käytettävää kuvaa. Tässä tapauksessa sinun täytyy kirjoittaa skripti, jolla **muokataan manuaalisesti** TeXLive-kuva kaikkien käyttäjien projekteille mongoDB:ssä.

### Vianetsintä

Aja seuraava komento tarkistaaksesi clsi-lokin Toolkitista:

{% code overflow="wrap" %}

```bash
bin/logs clsi
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/fi/maaritys/overleaf-toolkit/hiekkalaatikossa-suoritettavat-kaannokset.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
