> 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/tr/yapilandirma/overleaf-toolkit/korumali-derlemeler.md).

# Korumalı Derlemeler

Overleaf Pro, kurumsal güvenlik için derlemeleri güvenli bir sanal alan ortamında çalıştırma seçeneğiyle birlikte gelir. Bunu, her projeyi kendi güvenli Docker ortamında çalıştırarak yapar.

### Geliştirilmiş güvenlik

Çok sayıda LaTeX belgesinin PDF derleme sürecinin bir parçası olarak keyfi kabuk komutlarını çalıştırmayı gerektirmesi/yapabilmesi nedeniyle, Server Pro için önerilen yaklaşım Korumalı Alan Derlemeleridir. Korumalı Alan Derlemelerini kullanırsanız, her derleme başka hiçbir kullanıcı veya projeyle paylaşılmayan, sınırlı yeteneklere sahip ayrı bir Docker kapsayıcısında çalışır ve ana makine ağı gibi harici kaynaklara erişimi olmaz.

{% hint style="warning" %}
Overleaf Pro'yu çalıştırmaya çalışırsanız **olmadan** Korumalı Alan Derlemeleri olmadan, derleme ana Docker kapsayıcısı içinde eşzamanlı diğer derlemelerle birlikte çalışır ve kullanıcılar şu öğeye tam okuma ve yazma erişimine sahip olur: `sharelatex` LaTeX derlemeleri çalıştırılırken kapsayıcı kaynakları (dosya sistemi, ağ ve ortam değişkenleri).
{% endhint %}

### Daha kolay paket yönetimi

Paketleri elle yüklemekten kaçınmak için Korumalı Alan Derlemelerini etkinleştirmenizi öneririz. Bu, Server Pro içinde yapılandırılabilen bir ayardır ve kullanıcılarınıza overleaf.com’dakiyle aynı TeX Live ortamına, ancak kendi yerel kurulumunuz içinde erişim sağlar. Korumalı Alan Derlemeleri tarafından kullanılan TeX Live imajları, galeri şablonlarımızla test edilmiş en popüler paketleri ve yazı tiplerini içerir ve yerel projelerle maksimum uyumluluk sağlar.

Korumalı Alan Derlemelerini etkinleştirmek, kullanıcıların projeleri içinde hangi TeX Live sürümlerini seçebileceğini yapılandırmanıza ve yeni projeler için varsayılan bir TeX Live imaj sürümü belirlemenize olanak tanır.

{% hint style="info" %}
Korumalı Alan Derlemeleri olmadan Overleaf Pro'yu çalıştırmaya çalışırsanız, örneğiniz derlemeler için varsayılan olarak TeX Live’ın temel şema sürümünü kullanır. Bu temel sürüm hafiftir ve yalnızca çok sınırlı bir LaTeX paketleri alt kümesini içerir; bu da kullanıcılarınız için, özellikle de önceden hazırlanmış şablonları kullanmaya çalışırlarsa, büyük olasılıkla eksik paket hatalarına yol açar.
{% endhint %}

Overleaf Pro çevrimdışı çalışacak şekilde tasarlandığından, overleaf.com galeri şablonlarını yerel kurulumunuza entegre etmenin otomatik bir yolu yoktur; ancak bunu şablon bazında elle yapmak mümkündür. Bunun nasıl çalıştığı hakkında daha fazla bilgi için lütfen overleaf.com’dan şablon aktarma kılavuzumuza göz atın: [/pages/3d92c9f99518c5c3a7efcfb565c4a5c3f990c63e#transferring-templates-from-overleaf.com](https://overleaf-pro.ayaka.space/on-premises/tr/yapilandirma/overleaf-toolkit/pages/3d92c9f99518c5c3a7efcfb565c4a5c3f990c63e#transferring-templates-from-overleaf.com "mention").

{% hint style="info" %}
Korumalı Alan Derlemeleri, şunu gerektirir ki: `sharelatex` kapsayıcının bu kardeş derleme kapsayıcılarını yönetebilmesi için ana makine üzerindeki Docker soketine (bağlama noktası aracılığıyla) erişimi olsun.
{% endhint %}

## Nasıl çalışır

Korumalı Alan Derlemeleri etkinleştirildiğinde, Docker soketi ana makineden şu öğeye bağlanacaktır: `sharelatex` kapsayıcı, böylece kapsayıcı içindeki derleyici hizmeti ana makinede yeni Docker kapsayıcıları oluşturabilir. Ardından her projedeki derleyicinin her çalıştırılması için LaTeX derleyici hizmeti (CLSI) şunları yapacaktır:

* Proje dosyalarını şu konumun içindeki bir yere yazın: `OVERLEAF_DATA_PATH`.
* Bağlanmış Docker soketini kullanarak yeni bir `texlive` derleme çalıştırması için kapsayıcı oluşturun.
* Şunu yaptırın: `texlive` kapsayıcının proje verilerini şunun altındaki konumdan okumasını sağlayın: `OVERLEAF_DATA_PATH`.
* Projeyi şunun içinde derleyin: `texlive` kapsayıcısı.

### Korumalı Alan Derlemelerini Etkinleştirme&#xD;

#### Toolkit Kullanıcısı İçin

Korumalı alan derlemelerini (Kardeş kapsayıcılar olarak da bilinir) etkinleştirmek için, aşağıdaki yapılandırma seçeneklerini şu dosyada ayarlayın: `overleaf-toolkit/config/overleaf.rc`:

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

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

{% endcode %}

#### Docker Compose Kullanıcısı İçin <a href="#docker-compose-example" id="docker-compose-example"></a>

{% hint style="danger" %}
Overleaf CE/Server Pro ile başlayarak `5.0.3` ortam değişkenleri şu isimden yeniden adlandırıldı `SHARELATEX_*` ile `OVERLEAF_*`.
{% endhint %}

Eğer bir `4.x` sürümünde (veya daha önceki bir sürümde) değişkenlerin buna uygun şekilde öneklenmiş olduğundan emin olun (örn. `SHARELATEX_MONGO_URL` yerine `OVERLEAF_MONGO_URL`).

<pre class="language-yml"><code class="lang-yml">version: '2'
services:
    sharelatex:
        #...
        birimler:
            - /data/overleaf_data:/var/lib/overleaf
<strong>            - /var/run/docker.sock:/var/run/docker.sock
</strong>        ortam:
            #...
<strong>            DOCKER_RUNNER: "true"
</strong><strong>            SANDBOXED_COMPILES: "true"
</strong><strong>            SANDBOXED_COMPILES_HOST_DIR: "/data/overleaf_data/data/compiles"
</strong>            #...
        #...
</code></pre>

### TexLive İmajını Değiştirme

{% hint style="info" %}
Çin anakarasındaki kullanıcılar için şunu kullanabilirsiniz: `ghcr.nju.edu.cn` indirme işleminizi hızlandırmak için.&#x20;
{% endhint %}

Overleaf Pro, Korumalı Alan Derlemeleri için hangi TeX Live imajlarının kullanılacağını belirlemek amacıyla üç ortam değişkeni kullanır:

* `TEX_LIVE_DOCKER_IMAGE` **(gerekli),** Yeni projeleri derlemek için kullanılan varsayılan TeX Live imajı. Bu imaj şunların içinde yer almalıdır: `ALL_TEX_LIVE_DOCKER_IMAGES`.
* `ALL_TEX_LIVE_DOCKER_IMAGE_NAMES` **(gerekli),** Ön uç seçenekleri için kullanılan, imajların virgülle ayrılmış kullanıcı dostu adları listesi.
* `ALL_TEX_LIVE_DOCKER_IMAGES` **(gerekli),** Kullanılacak TeX Live imajlarının virgülle ayrılmış listesi. Dağıtım için Overleaf Toolkit kullanılıyorsa, bu imajlar indirilecek veya güncellenecektir. İndirmeyi atlamak için şunu ayarlayın: `SIBLING_CONTAINERS_PULL=false` içindeki `config/overleaf.rc`.

Overleaf Pro örneğinizi şu komutla başlatırken: `bin/up` komutunu, Toolkit listelenen tüm imajları otomatik olarak çekecektir: `ALL_TEX_LIVE_DOCKER_IMAGES`.

İşte yeni projeler için varsayılanı TeX Live 2025 olarak ayarladığımız ve mevcut projelerde 2024’ü kullanmaya devam ettiğimiz bir örnek.

{% 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" %}
Şunu ayarlamanız şiddetle önerilir: **en az 2 texlive-full imajı**. Ayrıntılı neden için şuna bakın: [#known-issues](#known-issues "mention")
{% endhint %}

### Mevcut TeX Live imajları

Bunlar, Overleaf için özel olarak optimize edilmiş bir dizi TeX Live imajıdır; ayrıca şunlara da eklenebilir: `TEX_LIVE_DOCKER_IMAGE` ve `ALL_TEX_LIVE_DOCKER_IMAGES`:&#x20;

* `ghcr.io/ayaka-notes/texlive-full:2025.1` (Ayrıca `latest` etiket)
* `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" %}
İmajların nasıl **zorunda** etiketlenmesi gerektiğine dair katı bir şema vardır (aşağıdaki regex uygulanır `^[0-9]+.[0-9]+`, burada ilk sayı TeX Live yılını, ikincisi ise yama sürümünü belirler).
{% endhint %}

### Başka Bir İmaj Kaydı Kullanabilir miyim?

> Bazı kişiler, şunu değiştirip değiştiremeyeceğini merak edebilir: `ghcr.io` başka bir ayna siteyle değiştirmek ya da texlive'ı Docker Hub’daki başka bir imajla değiştirmek mümkün mü?

Hayır, yapılandırma nispeten karmaşık olduğundan bunu önermiyoruz. Bir ayna sitesinden indiriyorsanız, imajınızın adını şuna değiştirebilirsiniz: `ghcr.io/ayaka-notes/texlive-full`.

Ancak gerçekten kendi İmaj Kaydınızı kullanmak istiyorsanız, lütfen şunu ekleyin:

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

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

{% endcode %}

Ardından, texlive’ın tüm imajlarının şurada olduğundan emin olmanız gerekir: `your-repo`, örneğin

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

Ayrıntılı bilgi için, ortam değişkeninizi nasıl ayrıştırdığımızı anlamak üzere aşağıdaki kaynak kodu okuyun:

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

```mjs
if (process.env.SANDBOXED_COMPILES === 'true') {
  // Sağlanmamışsa varsayılan imaj kökünü ayarla
  let imageRootPath = process.env.IMAGE_ROOT || "ghcr.io/ayaka-notes";
  // imageRoot’u Settings’e aktar
  Settings.imageRoot = imageRootPath

  // allowedImageNames şöyle olmalı:
  // [
  //  { 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],
    }))
  
  // Sonunda, tam imaj yolunu oluşturmak için imageName, imageRoot ile birleştirilecektir
  // Tam ad şu şekilde olacaktır: ghcr.io/ayaka-notes/texlive-2023:latest

  // Sağlanmamışsa varsayılan imaj adını ayarla
  if(!process.env.TEX_LIVE_DOCKER_IMAGE) {
    process.env.TEX_LIVE_DOCKER_IMAGE = imageRootPath + "/" + Settings.allowedImageNames[0].imageName
  }

  // currentImageName’i Settings’e aktar
  // Bu, yeni oluşturulan projelerin imaj adıdır
  Settings.currentImageName = process.env.TEX_LIVE_DOCKER_IMAGE
}
```

{% endcode %}

### Bilinen Sorunlar

> Kullanma `6.0.1-ext-v3.3`, şu ayarlar bende şurada: `variables.env`:
>
> ```dotenv
> TEX_LIVE_DOCKER_IMAGE=texlive/texlive:latest-full
> ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texlive:latest-full
> ```
>
> Bu, şu imajla sorunsuz çalışıyor: `texlive/texlive:latest-full`. Ancak başka bir texlive imajı çektim `danteev/texlive:2025-10-15` ve bu iki değişkeni yeni imaj adıyla değiştirdim, ama çalışmıyor:
>
> ```dotenv
> TEX_LIVE_DOCKER_IMAGE=danteev/texlive:2025-10-15
> ALL_TEX_LIVE_DOCKER_IMAGES=danteev/texlive:2025-10-15
> ```
>
> Günlüklerde aşağıdakini görüyorum:
>
> {% code overflow="wrap" %}
>
> ```
> {"name":"clsi","level":50,"err":{"message":"(HTTP code 404) no such container - No such image: texlive/texlive:latest-full ","name":"Error","stack":"Error: (HTTP code 404) no such container - No such image: texlive/texlive:latest-full ... 
> ```
>
> {% endcode %}
>
> Görünüşe göre şuradaki güncellenmiş ayarlar: `variables.env` etkili olmuyor. Derleme hâlâ şu imajı çalıştırmaya çalışıyor: `texlive/texlive:latest-full` imajı, yeni imajı değil.
>
> Yeniden başlatmayı, kapsayıcıları silip tekrar çalıştırmayı denedim, ama sorun hâlâ aynı.
>
> Bir çözüm var mı?

Bazı teknik sınırlamalar nedeniyle, yalnızca tek bir Docker TeXLive imajı kurarsanız, örneğin `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
```

Ve Overleaf örneğinizi bir süre çalıştırdıktan sonra, TeXLive imajını şuna değiştirmek isteyebilirsiniz: `texlive-fullB:latest`. O zaman kullanıcılarınızın tüm projeleri derleyemediğini göreceksiniz.

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

Bunun nedeni, her projedeki TeXLive-Full imajının (korumalı alan derlemesi için) adının veritabanında kalıcı olarak saklanmasıdır. *Kullanıcı projesinin TeXLive sürümünü, örneğin 2024’ten 2025’e değiştirdiğinde, imaj adı yalnızca o zaman veritabanında değiştirilir*.

CLSI bir projeyi derlerken, projeyi doğrudan derlemek için veritabanında bulunan kapsayıcı imaj adını kullanır.

Yalnızca bir Docker imajı sağlarsanız, kullanıcılar projeyi derlemek için kullanılan imajı değiştiremeyecektir. Bu durumda, şunu yapan bir betik yazmanız gerekir: **elle değiştirmek** MongoDB’deki tüm kullanıcı projeleri için TeXLive imajını.

### Hata ayıklama

Toolkit’ten CLSI günlüğünü kontrol etmek için aşağıdaki komutu çalıştırın:

{% 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/tr/yapilandirma/overleaf-toolkit/korumali-derlemeler.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.
