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

# Template

> Esegui la galleria dei template in un deployment Kubernetes.

La galleria dei template viene eseguita nel servizio **web** (il modulo `template-gallery`) di ogni pod di Ayakaleaf Pro; il servizio **filestore** nello stesso pod memorizza i file dei template e ne genera le anteprime. Categorie, permessi e pubblicazione sono descritti in [Template](https://ayakaleaf-pro.mintlify.site/it/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Servizi | web (modulo `template-gallery`), filestore (file e immagini di anteprima) |
| Dati memorizzati | metadati dei template in MongoDB; ZIP, PDF e immagini di anteprima nell'archivio dei template di filestore: `/var/lib/overleaf/data/template_files` sul volume dei dati, oppure il bucket S3 `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → esterno | nessuno (S3, se usato) |
| Job periodici | nessuno: le anteprime vengono generate la prima volta che vengono visualizzate |

### Configurazione

**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. Un utente per i template (facoltativo)**

Gli amministratori possono sempre pubblicare. Per consentire a un utente non amministratore di gestire la galleria, crea l'utente, leggi il suo ID da MongoDB e inseriscilo nella 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. Applica e riavvia**

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

### Più repliche

* I file dei template devono trovarsi in S3: con i file sul disco di ciascuna replica, ogni nodo mostrerebbe una galleria diversa. La configurazione di [Scalabilità orizzontale](https://ayakaleaf-pro.mintlify.site/it/on-premises/configuration/kubernetes/horizontal-scaling.md) usa già il bucket `overleaf-template-files`.
* La pubblicazione usa il PDF dell'ultima compilazione del progetto, che esiste solo sulla replica che lo ha compilato. Il cookie sticky del load balancer mantiene un utente su quella replica, quindi pubblica dalla stessa sessione del browser con cui hai compilato.

### Testato su Kubernetes

Su Kubernetes 1.37 con tre repliche dietro HAProxy e i file dei template nel bucket S3 `overleaf-template-files` (Garage), i nostri test end-to-end per la galleria dei template vengono superati (41 casi): pubblicazione di un progetto compilato dal menu File, con PDF, immagini di anteprima e ZIP dei sorgenti serviti dal bucket; creazione di progetti da un template; categorie, ricerca, ordinamento e pagine della galleria; modifica, sovrascrittura ed eliminazione dei template; permessi degli amministratori, degli utenti normali e dell'utente dei template indicato in `OVERLEAF_TEMPLATES_USER_ID` (il cui ID è stato letto da MongoDB come descritto sopra); e richieste malformate.


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