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

# Templates

> Execute a galeria de templates em uma implantação no Kubernetes.

A galeria de templates é executada no serviço **web** (o módulo `template-gallery`) de cada pod do Ayakaleaf Pro; o serviço **filestore** no mesmo pod armazena os arquivos dos templates e renderiza suas pré-visualizações. Categorias, permissões e publicação estão descritas em [Templates](https://ayakaleaf-pro.mintlify.site/pt/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Serviços | web (módulo `template-gallery`), filestore (arquivos e imagens de pré-visualização) |
| Dados armazenados | metadados dos templates no MongoDB; ZIP, PDF e imagens de pré-visualização no armazenamento de templates do filestore: `/var/lib/overleaf/data/template_files` no volume de dados, ou o bucket S3 `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → exterior | nenhum (S3, se usado) |
| Tarefas periódicas | nenhuma: as pré-visualizações são renderizadas na primeira vez que são vistas |

### Configuração

**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. Um usuário de templates (opcional)**

Os administradores sempre podem publicar. Para permitir que um usuário não administrador gerencie a galeria, crie o usuário, leia seu ID no MongoDB e coloque-o no 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. Aplicar e reiniciar**

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

### Várias réplicas

* Os arquivos dos templates precisam estar no S3: com os arquivos no disco próprio de cada réplica, cada nó mostraria uma galeria diferente. A configuração de [Escalonamento horizontal](https://ayakaleaf-pro.mintlify.site/pt/on-premises/configuration/kubernetes/horizontal-scaling.md) já usa o bucket `overleaf-template-files`.
* A publicação usa o PDF da última compilação do projeto, que existe apenas na réplica que o compilou. O cookie de afinidade (sticky) do balanceador de carga mantém o usuário nessa réplica, então publique a partir da mesma sessão do navegador que compilou.

### Testado no Kubernetes

No Kubernetes 1.37 com três réplicas atrás do HAProxy e os arquivos dos templates no bucket S3 `overleaf-template-files` (Garage), nossos testes ponta a ponta da galeria de templates são aprovados (41 casos): publicar um projeto compilado pelo menu Arquivo e o PDF, as imagens de pré-visualização e o ZIP do código-fonte servidos a partir do bucket; criar projetos a partir de um template; categorias, busca, ordenação e páginas da galeria; editar, sobrescrever e excluir templates; permissões de administradores, usuários comuns e do usuário de templates de `OVERLEAF_TEMPLATES_USER_ID` (com o ID lido no MongoDB conforme descrito acima); e requisições malformadas.


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