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

# Vorlagen

> Die Vorlagengalerie in einem Kubernetes-Deployment betreiben.

Die Vorlagengalerie läuft im **web**-Dienst (dem Modul `template-gallery`) jedes Ayakaleaf Pro-Pods; der **filestore**-Dienst im selben Pod speichert die Vorlagendateien und rendert ihre Vorschauen. Kategorien, Berechtigungen und Veröffentlichung sind unter [Vorlagen](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/overleaf-toolkit/templates.md) beschrieben.

| | |
| - | - |
| Dienste | web (Modul `template-gallery`), filestore (Dateien und Vorschaubilder) |
| Gespeicherte Daten | Vorlagen-Metadaten in MongoDB; ZIP, PDF und Vorschaubilder im Vorlagenspeicher von filestore: `/var/lib/overleaf/data/template_files` auf dem Daten-Volume oder der S3-Bucket `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → außen | keine (S3, falls verwendet) |
| Periodische Jobs | keine: Vorschauen werden beim ersten Aufruf gerendert |

### Konfiguration

**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. Ein Vorlagenbenutzer (optional)**

Administratoren können immer veröffentlichen. Damit ein Benutzer ohne Administratorrechte die Galerie verwalten kann, legen Sie den Benutzer an, lesen Sie seine ID aus MongoDB aus und tragen Sie sie in die ConfigMap ein:

```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. Anwenden und neu starten**

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

### Mehrere Replikate

* Die Vorlagendateien müssen in S3 liegen: Mit Dateien auf der eigenen Festplatte jedes Replikats würde jeder Knoten eine andere Galerie anzeigen. Das Setup für die [Horizontale Skalierung](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/kubernetes/horizontal-scaling.md) verwendet bereits den Bucket `overleaf-template-files`.
* Beim Veröffentlichen wird das PDF der letzten Kompilierung des Projekts verwendet, das nur auf dem Replikat existiert, das es kompiliert hat. Das Sticky-Cookie des Load Balancers hält einen Benutzer auf diesem Replikat; veröffentlichen Sie daher aus derselben Browsersitzung, in der kompiliert wurde.

### Auf Kubernetes getestet

Auf Kubernetes 1.37 mit drei Replikaten hinter HAProxy und den Vorlagendateien im S3-Bucket `overleaf-template-files` (Garage) bestehen unsere End-to-End-Tests für die Vorlagengalerie (41 Fälle): Veröffentlichen eines kompilierten Projekts über das Menü "Datei", wobei PDF, Vorschaubilder und Quell-ZIP aus dem Bucket ausgeliefert werden; Erstellen von Projekten aus einer Vorlage; Kategorien, Suche, Sortierung und Seiten der Galerie; Bearbeiten, Überschreiben und Löschen von Vorlagen; Berechtigungen von Administratoren, normalen Benutzern und dem Vorlagenbenutzer aus `OVERLEAF_TEMPLATES_USER_ID` (dessen ID wie oben beschrieben aus MongoDB ausgelesen wurde); sowie fehlerhafte Anfragen.


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