Skip to main content
Project files and their history are stored by the history-v1 service, template files by the filestore service, both inside every Ayakaleaf Pro pod. By default they write to the data volume; with S3 they write to buckets. Which buckets and permissions are needed is described in S3.
Choose S3 before users create projects. An instance that already keeps files on its volume needs the S3 migration first.

Configuration

1

Buckets and keys

Create the three buckets overleaf-template-files, overleaf-project-blobs and overleaf-chunks and the two restricted users with your S3 service as described in S3 setup, or run Garage in the cluster as shown below. Put the four keys into a Secret:
2

ConfigMap

30-config.yaml (additions)
3

Add the Secret to the pod and restart

In the Deployment (or StatefulSet), add the Secret next to the others:

Garage in the cluster

Without an S3 service, Garage is a small S3 server that runs in the cluster. The Horizontal scaling setup was tested with it. The commands below generate the keys and create the Secret overleaf-s3 themselves, so use them instead of the Secret command in step 1.
MinIO, used in Overleaf’s sample, no longer publishes container images: minio/minio is gone from Docker Hub and quay.io.
50-garage.yaml
Generate the secrets, start Garage, then create the layout, buckets and the two restricted keys. Garage key IDs are GK plus 24 hex characters, secrets 64 hex characters:
The permissions match the policies in S3. Garage checks the region: it is garage here, and OVERLEAF_*_S3_REGION must be the same. With Garage, set the endpoint, PATH_STYLE: "true" and the region garage for both services in the ConfigMap, as in 60-config.yaml of Horizontal scaling.

Several replicas

All replicas must use the same buckets and keys. Back the buckets up with your S3 provider’s tools; the replicas’ own disks then hold no data that needs a backup.

Tested on Kubernetes

On Kubernetes 1.37 with three replicas and Garage as above, every end-to-end test of these pages that creates projects, uploads files, uses the history or publishes templates passed, and afterwards the buckets overleaf-project-blobs, overleaf-chunks and overleaf-template-files held the objects, while the replicas’ own /var/lib/overleaf/data/history stayed empty.
Last modified on November 2, 2026