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

# 0. Siapkan node

> Instal Docker Engine, containerd, dan kubeadm di node, lalu pull image TeX Live.

Ayakaleaf Pro mengompilasi LaTeX di kontainer TeX Live yang [di-sandbox](https://ayakaleaf-pro.mintlify.site/id/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md). Ayakaleaf Pro memulainya sendiri, melalui socket Docker dari mesin tempatnya berjalan. Di Kubernetes ini berarti:

* setiap node yang dapat menjalankan pod Ayakaleaf Pro memiliki **Docker Engine** yang terinstal dan berjalan;
* setiap image TeX Live yang Anda konfigurasikan di-pull **ke Docker** di setiap node tersebut.

Kubelet tetap dapat menggunakan containerd: Docker Engine menyertakan `containerd.io`, dan keduanya menggunakan daemon yang sama dalam namespace yang berbeda.

> [!WARNING]
>
> Node pool terkelola tanpa Docker (sebagian besar default EKS, GKE, dan AKS) tidak dapat menjalankan sandboxed compiles. Gunakan node pool tempat Anda dapat menginstal Docker Engine, atau beri label pada node tersebut dan pertahankan Ayakaleaf Pro di sana dengan `nodeSelector`.

Langkah-langkah di bawah ini untuk Ubuntu 24.04 dan klaster yang dibangun dengan kubeadm. Jika klaster Anda sudah ada, lakukan langkah 1, 2, dan 5 di node yang akan menjalankan Ayakaleaf Pro.

**1. Modul kernel dan sysctl**

```bash theme={null}
printf 'overlay\nbr_netfilter\n' | sudo tee /etc/modules-load.d/k8s.conf
sudo modprobe overlay && sudo modprobe br_netfilter
printf 'net.bridge.bridge-nf-call-iptables=1\nnet.bridge.bridge-nf-call-ip6tables=1\nnet.ipv4.ip_forward=1\n' \
  | sudo tee /etc/sysctl.d/99-k8s.conf
sudo sysctl --system
sudo swapoff -a   # and comment out swap in /etc/fstab
```

**2. Docker Engine**

Instal Docker Engine dari repositori Docker seperti di [0. Menyiapkan Docker](https://ayakaleaf-pro.mintlify.site/id/on-premises/installation/using-the-toolkit/0.-setup-docker.md). Plugin Compose tidak diperlukan. Langkah ini juga menginstal `containerd.io`.

**3. containerd untuk kubelet**

Paket `containerd.io` dari repositori Docker memiliki plugin CRI yang dinonaktifkan. Tulis konfigurasi default lengkap, yang mengaktifkannya, dan alihkan ke cgroup systemd:

```bash wrap theme={null}
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# containerd 2.x writes config_path = '' and ignores /etc/containerd/certs.d without this
sudo sed -i "s|config_path = ''|config_path = '/etc/containerd/certs.d'|" /etc/containerd/config.toml
sudo systemctl restart containerd docker
```

**4. kubeadm, kubelet, dan kubectl**

Ikuti [Installing kubeadm](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/), lalu buat klaster dengan `kubeadm init` dan `kubeadm join` serta instal plugin jaringan. Misalnya, dengan flannel:

```yaml title="kubeadm-config.yaml" theme={null}
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
networking:
  podSubnet: 10.244.0.0/16   # flannel's default
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
# Compile containers are started by Docker, outside the kubelet's accounting: keep memory for them
systemReserved:
  memory: 300Mi
kubeReserved:
  memory: 200Mi
```

```bash theme={null}
sudo kubeadm init --config kubeadm-config.yaml
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
```

Klaster juga memerlukan StorageClass default. Untuk klaster uji, [local-path-provisioner](https://github.com/rancher/local-path-provisioner) dapat digunakan; di produksi, gunakan block storage dari platform Anda (Longhorn, Ceph, driver CSI cloud).

**5. Image TeX Live**

Di **setiap** node yang dapat menjalankan Ayakaleaf Pro, pull image TeX Live yang akan Anda cantumkan di `ALL_TEX_LIVE_DOCKER_IMAGES` dengan Docker, misalnya:

```bash theme={null}
sudo docker pull ghcr.io/ayaka-notes/texlive-full:2026.1
```

`crictl pull` atau `ctr` tidak membantu di sini: Ayakaleaf Pro meminta image dari Docker. Image full berukuran besar (sekitar 28 GB masing-masing); lihat [Sandboxed Compiles](https://ayakaleaf-pro.mintlify.site/id/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md) untuk daftarnya. Untuk pengujian pertama, `ghcr.io/ayaka-notes/texlive-basic:2026.1` (sekitar 630 MB, TeX Live minimal) sudah cukup.

### Tanya Jawab

> [accordion] Dapatkah saya menjalankan Ayakaleaf Pro di node tanpa Docker?
>
> **Jawaban:** Hanya dengan `SANDBOXED_COMPILES=false`. Kompilasi kemudian berjalan di dalam kontainer Ayakaleaf Pro dengan TeX Live bawaan yang kecil, dan dokumen LaTeX dapat membaca dan menulis apa pun yang dapat diakses kontainer tersebut. Kami tidak merekomendasikannya; lihat [Sandboxed Compiles](https://ayakaleaf-pro.mintlify.site/id/on-premises/configuration/overleaf-toolkit/sandboxed-compiles.md).

> [accordion] Apakah kompilasi dihitung dalam batas memori pod?
>
> **Jawaban:** Tidak. Kontainer TeX Live dimulai oleh Docker milik node, di luar pod dan di luar pantauan kubelet. Sisakan memori kosong di node untuk kontainer tersebut, misalnya dengan `systemReserved` seperti di atas, dan jangan memenuhi node dengan pod lain.


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