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

# Skabeloner

> Kør skabelongalleriet i en Kubernetes-installation.

Skabelongalleriet kører i **web**-tjenesten (modulet `template-gallery`) i hver Ayakaleaf Pro-pod; **filestore**-tjenesten i den samme pod gemmer skabelonfilerne og genererer deres forhåndsvisninger. Kategorier, tilladelser og udgivelse er beskrevet under [Skabeloner](https://ayakaleaf-pro.mintlify.site/da/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Tjenester | web (modulet `template-gallery`), filestore (filer og forhåndsvisningsbilleder) |
| Lagrede data | skabelonmetadata i MongoDB; ZIP, PDF og forhåndsvisningsbilleder i filestores skabelonlager: `/var/lib/overleaf/data/template_files` på datavolumet eller S3-bucket'en `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → udefra | ingen (S3, hvis det bruges) |
| Periodiske job | ingen: forhåndsvisninger genereres første gang, de vises |

### 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. En skabelonbruger (valgfrit)**

Administratorer kan altid udgive. For at lade en bruger, der ikke er administrator, administrere galleriet skal du oprette brugeren, læse dens ID fra MongoDB og sætte det ind i ConfigMap'et:

```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. Anvend og genstart**

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

### Flere replikaer

* Skabelonfilerne skal ligge i S3: med filer på hver replikas egen disk ville hver node vise et forskelligt galleri. Opsætningen under [Horisontal skalering](https://ayakaleaf-pro.mintlify.site/da/on-premises/configuration/kubernetes/horizontal-scaling.md) bruger allerede bucket'en `overleaf-template-files`.
* Udgivelse bruger PDF'en fra projektets seneste kompilering, som kun findes på den replika, der kompilerede den. Load balancerens sticky cookie holder en bruger på den replika, så udgiv fra den samme browsersession, som kompilerede.

### Testet på Kubernetes

På Kubernetes 1.37 med tre replikaer bag HAProxy og skabelonfilerne i S3-bucket'en `overleaf-template-files` (Garage) består vores end-to-end-tests for skabelongalleriet (41 tilfælde): udgivelse af et kompileret projekt fra menuen File og levering af PDF'en, forhåndsvisningsbillederne og kilde-ZIP'en fra bucket'en; oprettelse af projekter fra en skabelon; kategorier, søgning, sortering og sider i galleriet; redigering, overskrivning og sletning af skabeloner; tilladelser for administratorer, almindelige brugere og skabelonbrugeren fra `OVERLEAF_TEMPLATES_USER_ID` (dens ID læst fra MongoDB som beskrevet ovenfor); samt fejlformede forespørgsler.


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