Skip to main content
LDAP login is handled by the web service (the authentication module) inside every Ayakaleaf Pro pod. Unlike OIDC and SAML, the pods talk to the directory themselves. Set up the directory side as in LDAP Authentication, then put the values into Kubernetes as below.

Where things run

Configuration

1

Let the pods reach the directory

Every pod that runs Ayakaleaf Pro opens the LDAP connections. If a firewall or NetworkPolicy guards the directory, allow the addresses the pods leave the cluster with: usually the nodes’ addresses, or your egress gateway.The image has no ldapsearch. To run the search check from inside the cluster, use a throwaway pod:
It must print exactly one dn:.
2

Add the settings to the ConfigMap

30-config.yaml (additions)
Every OVERLEAF_LDAP_* setting is listed in Environment Variables. They all go into the ConfigMap except the bind password. Quote "true", "false", JSON values such as OVERLEAF_LDAP_SEARCH_ATTRIBUTES: '["mail", "cn"]', and values that start with *.
3

Put the bind password into the Secret

4

LDAPS or STARTTLS with your own CA (optional)

Put the CA into the Secret overleaf-certs mounted at /var/lib/overleaf/certs (see Certificates and other files) and point to it:
The CA list replaces the system CAs for LDAP connections. It is read when web starts.
5

Apply and restart

Several replicas

Nothing extra beyond the firewall in step 1: each replica connects to the directory on its own, and the login result goes into the session in Redis.

Tested on Kubernetes

With goauthentik’s LDAP outpost as the directory, on Kubernetes 1.37 with three replicas behind HAProxy, our end-to-end tests for LDAP pass (26 cases): the first admin from the launchpad logging in through LDAP, login with the bind password from the Secret, wrong passwords and unknown users refused, the admin mapping by group and without mapping, name and admin flag updated at each login (one name attribute, or first and last name), directory contacts, logout, password rules for LDAP accounts, suspended accounts, and the LDAP login with reCAPTCHA.

Q&A

Answer: The directory is not reachable from every node. Check from each pod:
Answer: In the web log of the pod that served the login:
Last modified on November 2, 2026