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

# Sandbox Derlemeleri

> LaTeX'i bir Kubernetes kümesinin düğümlerinde TeX Live konteynerlerinde derleyin.

Derlemeler, her Ayakaleaf Pro pod'unun içindeki **clsi** hizmeti tarafından çalıştırılır. Sandbox derlemeleri açıkken clsi, pod'un çalıştığı **düğümün Docker Engine'inden** her derleme için bir TeX Live konteyneri başlatmasını ister ve projenin dizinini o düğümdeki yolu üzerinden konteynere verir. Sandbox'ın nasıl çalıştığı ve hangi imajların mevcut olduğu [Sandbox Derlemeleri](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md) sayfasında açıklanmıştır.

| | |
| - | - |
| Hizmet | clsi (derlemeler), web (derleyici ayarlarındaki imaj listesi), her Ayakaleaf Pro pod'unda |
| Düğüm | Ayakaleaf Pro çalıştırabilen her düğümde Docker Engine ve `ALL_TEX_LIVE_DOCKER_IMAGES` içindeki her imaj |
| Pod bağlamaları | `/var/run/docker.sock` ve `hostPath` birimleri olarak derleme, çıktı ve önbellek dizinleri |
| Periyodik işler | clsi bir gündür kullanılmayan derleme dizinlerini siler ve her saat eski TeX Live konteynerlerini düğümün Docker'ından kaldırır |

### Yapılandırma

Kurulum her şeyi ayarlar: düğümlerdeki Docker ve imajlar [0. Düğümleri hazırlayın](https://ayakaleaf-pro.mintlify.site/tr/on-premises/installation/using-kubernetes/0.-prepare-the-nodes.md) sayfasında, ayarlar [4. Örneğinizi kişiselleştirme](https://ayakaleaf-pro.mintlify.site/tr/on-premises/installation/using-kubernetes/4.-personalizing-your-instance.md) sayfasında ve birimler [5. Ayakaleaf Pro'yu dağıtın](https://ayakaleaf-pro.mintlify.site/tr/on-premises/installation/using-kubernetes/5.-deploy-ayakaleaf-pro.md) sayfasında. Ayarların tümü ConfigMap'tedir:

| Değişken | Değer |
| - | - |
| `SANDBOXED_COMPILES`, `SANDBOXED_COMPILES_SIBLING_CONTAINERS`, `DOCKER_RUNNER` | `"true"` |
| `SANDBOXED_COMPILES_HOST_DIR_COMPILES` | `/var/lib/overleaf/data/compiles` konumuna bağlanan birimin düğümdeki yolu |
| `SANDBOXED_COMPILES_HOST_DIR_OUTPUT` | `/var/lib/overleaf/data/output` konumuna bağlanan birimin düğümdeki yolu |
| `SANDBOXED_COMPILES_HOST_DIR_CACHE` | `/var/lib/overleaf/data/cache` konumuna bağlanan birimin düğümdeki yolu |
| `ALL_TEX_LIVE_DOCKER_IMAGES`, `ALL_TEX_LIVE_DOCKER_IMAGE_NAMES`, `TEX_LIVE_DOCKER_IMAGE` | imajlar, Toolkit'teki gibi |

### Bir TeX Live sürümü ekleme

**1. İmajı her düğümde çekin**

```bash theme={null}
# on each node that can run Ayakaleaf Pro
sudo docker pull ghcr.io/ayaka-notes/texlive-full:2025.1
```

Toolkit imajları kendisi çeker; Kubernetes'te bunu kimse yapmaz. İmajı `crictl` ile değil **Docker**'a çekin: clsi imajı Docker'dan ister. Düğümde eksik olan bir imajla yapılan derleme başarısız olur.

**2. ConfigMap'te listeleyin ve yeniden başlatın**

```yaml theme={null}
  ALL_TEX_LIVE_DOCKER_IMAGES: ghcr.io/ayaka-notes/texlive-full:2026.1,ghcr.io/ayaka-notes/texlive-full:2025.1
  ALL_TEX_LIVE_DOCKER_IMAGE_NAMES: TeX Live 2026,TeX Live 2025
  TEX_LIVE_DOCKER_IMAGE: ghcr.io/ayaka-notes/texlive-full:2026.1
```

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

Kümeye daha sonra eklenen bir düğüm, Ayakaleaf Pro orada çalışmadan önce Docker'a ve tüm imajlara ihtiyaç duyar. Her düğüm uygun değilse bu tür düğümleri etiketleyin ve Ayakaleaf Pro'yu bir `nodeSelector` ile onlarda tutun.

### Birden fazla replika

Her replika kendi düğümünde derleme yapar ve derleme çıktısını orada tutar; bu nedenle kullanıcının derlemeyi yapan replikada kalması gerekir, bunu da yük dengeleyicinin yapışkan çerezi sağlar. Aynı düğümde asla iki replika çalıştırmayın: düğümün derleme dizinlerini paylaşırlar. [Yatay ölçeklendirme](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/kubernetes/horizontal-scaling.md) kurulumu bunu `podAntiAffinity` ile önler.

TeX Live konteynerleri pod'un yanında, onun bellek sınırının ve zamanlayıcının görüş alanının dışında çalışır. Düğümlerde onlar için boş bellek bırakın, bkz. [0. Düğümleri hazırlayın](https://ayakaleaf-pro.mintlify.site/tr/on-premises/installation/using-kubernetes/0.-prepare-the-nodes.md).

### Kubernetes üzerinde test edildi

HAProxy arkasında, düğüm başına bir tane olmak üzere üç replikalı ve her düğümde Docker'a TeX Live 2026 ve 2025 çekilmiş Kubernetes 1.37 üzerinde, sandbox derlemeleri için uçtan uca testlerimiz başarılı oldu (7 vaka): yeni bir projenin PDF'e derlenmesi, derleyici ayarlarının her iki imajı sunması ve aralarında geçiş yapması, fontspec ile XeLaTeX, LaTeX hataları ve düzeltmeden sonra yeniden derleme, çalışan bir derlemeyi durdurma ve her iki yönde SyncTeX. Aynı anda 600 sayfalık bir belgeyi derleyen 12 kullanıcıyla yapılan bir yük testi düğüm başına 4 derleme çalıştırdı, bkz. [Ne beklemeli](https://ayakaleaf-pro.mintlify.site/tr/on-premises/configuration/kubernetes/horizontal-scaling.md#what-to-expect).


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