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

# Modèles

> Exécutez la galerie de modèles sur un déploiement Kubernetes.

La galerie de modèles s'exécute dans le service **web** (le module `template-gallery`) de chaque pod Ayakaleaf Pro ; le service **filestore** du même pod stocke les fichiers des modèles et génère leurs aperçus. Les catégories, les autorisations et la publication sont décrites dans [Modèles](https://ayakaleaf-pro.mintlify.site/fr/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Services | web (module `template-gallery`), filestore (fichiers et images d'aperçu) |
| Données stockées | métadonnées des modèles dans MongoDB ; ZIP, PDF et images d'aperçu dans le stockage de modèles de filestore : `/var/lib/overleaf/data/template_files` sur le volume de données, ou le bucket S3 `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → extérieur | aucun (S3, le cas échéant) |
| Tâches périodiques | aucune : les aperçus sont générés lors de leur premier affichage |

### Configuration

**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 utilisateur dédié aux modèles (facultatif)**

Les administrateurs peuvent toujours publier. Pour permettre à un utilisateur non administrateur de gérer la galerie, créez cet utilisateur, lisez son identifiant dans MongoDB et placez-le dans le 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. Appliquer et redémarrer**

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

### Plusieurs répliques

* Les fichiers des modèles doivent se trouver dans S3 : si les fichiers étaient sur le disque propre à chaque réplique, chaque nœud afficherait une galerie différente. La configuration de [Mise à l'échelle horizontale](https://ayakaleaf-pro.mintlify.site/fr/on-premises/configuration/kubernetes/horizontal-scaling.md) utilise déjà le bucket `overleaf-template-files`.
* La publication utilise le PDF de la dernière compilation du projet, qui n'existe que sur la réplique qui l'a compilé. Le cookie de persistance (sticky) de l'équilibreur de charge maintient l'utilisateur sur cette réplique ; publiez donc depuis la même session de navigateur que celle qui a compilé.

### Testé sur Kubernetes

Sur Kubernetes 1.37 avec trois répliques derrière HAProxy et les fichiers des modèles dans le bucket S3 `overleaf-template-files` (Garage), nos tests de bout en bout de la galerie de modèles réussissent (41 cas) : publication d'un projet compilé depuis le menu Fichier, avec le PDF, les images d'aperçu et le ZIP source servis depuis le bucket ; création de projets à partir d'un modèle ; catégories, recherche, tri et pages de la galerie ; modification, remplacement et suppression de modèles ; autorisations des administrateurs, des utilisateurs ordinaires et de l'utilisateur des modèles défini par `OVERLEAF_TEMPLATES_USER_ID` (son identifiant lu dans MongoDB comme décrit ci-dessus) ; et requêtes malformées.


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