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

# Branding

> Change the site title, logo, header links, footers and maintenance message on a Kubernetes deployment.

The **web** service renders the title, logo, header links, footers and the maintenance page from environment variables. Every setting and its format is described in [Branding](https://ayakaleaf-pro.mintlify.site/on-premises/configuration/overleaf-toolkit/branding.md); on Kubernetes they go into the ConfigMap.

| | |
| - | - |
| Service | web, in every Ayakaleaf Pro pod; read when web starts |
| Network | none: logos are URLs the browser loads |
| Periodic jobs | none (web checks the maintenance file every 5 seconds, see below) |

### Configuration

```yaml title="30-config.yaml (additions)" wrap theme={null}
  OVERLEAF_NAV_TITLE: Our Overleaf Instance
  OVERLEAF_HEADER_IMAGE_URL: https://example.com/img/logo.png
  OVERLEAF_HEADER_EXTRAS: '[{"text":"Help","url":"https://example.com/help","class":"subdued"}]'
  OVERLEAF_LEFT_FOOTER: '[{"text":"Run by the IT department"}]'
  OVERLEAF_RIGHT_FOOTER: '[{"text":"Imprint","url":"https://example.com/imprint"}]'
  OVERLEAF_MAINTENANCE_MESSAGE: Our Overleaf Instance is down for maintenance and will be back shortly.
```

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

Put JSON values in single quotes, as above, so that YAML keeps them as one string. Invalid JSON in `OVERLEAF_HEADER_EXTRAS` or the footers is ignored and only logged at startup.

### Maintenance mode

The maintenance page is shown while the file `/etc/overleaf/site_status` in the container contains `closed`. Each pod has its own copy of this file, and a new or restarted pod starts open. To close the site, write the file in every pod:

```bash theme={null}
for p in $(kubectl -n overleaf get pod -l app=overleaf -o name); do   # app=overleaf-ha for several replicas
  kubectl -n overleaf exec "$p" -- sh -c 'echo closed > /etc/overleaf/site_status'
done
```

Write `open` the same way to end it. The pods pick the change up within 5 seconds.

The admin panel's **Close Editor** works differently: it closes the editor only in the replica that served the admin's request, and that replica opens it again when it restarts. With several replicas, use the file as above instead.

### Tested on Kubernetes

On Kubernetes 1.37: with the settings above in the ConfigMap, the pages showed `OVERLEAF_NAV_TITLE`, the left footer and, after logging in, the link from `OVERLEAF_HEADER_EXTRAS` (the login pages hide the header links). Writing `closed` into `/etc/overleaf/site_status` of one pod showed the maintenance page with `OVERLEAF_MAINTENANCE_MESSAGE` on that pod only, and `open` ended it within seconds. With three replicas, the admin panel's Close Editor closed the editor only on the replica that served the admin, while the other two stayed open.


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