Skip to main content
40-overleaf.yaml
The first start runs the database migrations and takes a minute or two. The pod is ready when /status answers; then open OVERLEAF_SITE_URL.

Why the manifest looks like this

  • Data volume. Everything under /var/lib/overleaf (project files, history, uploads) lives on the PVC. The data stays on one node with node-local storage such as local-path; with network block storage the pod can move between nodes.
  • Compile volumes and the Docker socket. Ayakaleaf Pro asks the node’s Docker to start a TeX Live container and passes it the project’s compile directory by its path on the node. These directories are therefore hostPath volumes, and their paths are repeated in SANDBOXED_COMPILES_HOST_DIR_*. Their content is scratch data and needs no backup.
  • enableServiceLinks: false. Kubernetes adds Docker-style variables for every Service of the namespace to each pod: the Service redis becomes REDIS_PORT=tcp://10.x.x.x:6379, the Service git-bridge GIT_BRIDGE_PORT=tcp://.... Some Overleaf services read variables with these names. In this pod the settings from OVERLEAF_REDIS_* and the ConfigMap win, but git-bridge takes GIT_BRIDGE_PORT as its port and stops (see Git integration). Turning the links off keeps the environment to what you set.
  • Recreate. Two pods must never use the same data volume or run migrations at the same time.
  • Exposing it. The NodePort Service answers on port 30080 of every node. In production put your ingress controller or load balancer in front and terminate TLS there; it must allow WebSockets, request timeouts of 10 minutes (long compiles) and uploads of 50 MB, and pass X-Forwarded-For and X-Forwarded-Proto.
Last modified on November 2, 2026