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

# Sjablonen

> Draai de sjablonengalerij in een Kubernetes-deployment.

De sjablonengalerij draait in de **web**-service (de module `template-gallery`) van elke Ayakaleaf Pro-pod; de **filestore**-service in dezelfde pod slaat de sjabloonbestanden op en rendert de voorbeelden ervan. Categorieën, rechten en publiceren staan beschreven in [Sjablonen](https://ayakaleaf-pro.mintlify.site/nl/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Services | web (module `template-gallery`), filestore (bestanden en voorbeeldafbeeldingen) |
| Opgeslagen gegevens | sjabloonmetadata in MongoDB; ZIP, PDF en voorbeeldafbeeldingen in de sjabloonopslag van filestore: `/var/lib/overleaf/data/template_files` op het datavolume, of de S3-bucket `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → buiten | geen (S3, indien gebruikt) |
| Periodieke taken | geen: voorbeelden worden gerenderd wanneer ze voor het eerst worden bekeken |

### Configuratie

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" wrap theme={null}
  OVERLEAF_TEMPLATE_GALLERY: "true"
  ENABLE_CONVERSIONS: "true"
  OVERLEAF_TEMPLATE_CATEGORIES: academic-journal book presentation poster cv report thesis
  TEMPLATE_ACADEMIC_JOURNAL_NAME: Journal articles
  TEMPLATE_ACADEMIC_JOURNAL_DESCRIPTION: Templates for academic journal submissions.
  # ... one _NAME and _DESCRIPTION per category, see the Toolkit page
```

**2. Een sjablonengebruiker (optioneel)**

Beheerders kunnen altijd publiceren. Om een gebruiker die geen beheerder is de galerij te laten beheren, maak je de gebruiker aan, lees je de ID ervan uit MongoDB en zet je deze in de ConfigMap:

```bash wrap theme={null}
kubectl -n overleaf exec mongo-0 -- mongosh --quiet \
  'mongodb://mongo-0.mongo:27017,mongo-1.mongo:27017,mongo-2.mongo:27017/sharelatex?replicaSet=overleaf' \
  --eval 'db.users.findOne({ email: "templates@example.com" })._id.toString()'
```

```yaml theme={null}
  OVERLEAF_TEMPLATES_USER_ID: "<the ID printed above>"
```

**3. Toepassen en herstarten**

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

### Meerdere replica's

* De sjabloonbestanden moeten in S3 staan: met bestanden op de eigen schijf van elke replica zou elke node een andere galerij tonen. De opzet uit [Horizontaal schalen](https://ayakaleaf-pro.mintlify.site/nl/on-premises/configuration/kubernetes/horizontal-scaling.md) gebruikt al de bucket `overleaf-template-files`.
* Publiceren gebruikt de PDF van de laatste compilatie van het project, die alleen bestaat op de replica die deze heeft gecompileerd. De sticky cookie van de load balancer houdt een gebruiker op die replica, dus publiceer vanuit dezelfde browsersessie waarin is gecompileerd.

### Getest op Kubernetes

Op Kubernetes 1.37 met drie replica's achter HAProxy en de sjabloonbestanden in de S3-bucket `overleaf-template-files` (Garage), slagen onze end-to-endtests voor de sjablonengalerij (41 gevallen): een gecompileerd project publiceren vanuit het menu Bestand en de PDF, voorbeeldafbeeldingen en bron-ZIP die vanuit de bucket worden geleverd; projecten aanmaken vanuit een sjabloon; categorieën, zoeken, sorteren en pagina's van de galerij; sjablonen bewerken, overschrijven en verwijderen; rechten van beheerders, gewone gebruikers en de sjablonengebruiker uit `OVERLEAF_TEMPLATES_USER_ID` (de ID gelezen uit MongoDB zoals hierboven beschreven); en onjuist opgemaakte verzoeken.


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