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

# Шаблоны

> Запустите галерею шаблонов в развёртывании на Kubernetes.

Галерея шаблонов работает в сервисе **web** (модуль `template-gallery`) каждого пода Ayakaleaf Pro; сервис **filestore** в том же поде хранит файлы шаблонов и формирует их превью. Категории, права и публикация описаны на странице [Шаблоны](https://ayakaleaf-pro.mintlify.site/ru/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Сервисы | web (модуль `template-gallery`), filestore (файлы и изображения превью) |
| Хранимые данные | метаданные шаблонов в MongoDB; ZIP, PDF и изображения превью в хранилище шаблонов filestore: `/var/lib/overleaf/data/template_files` на томе данных или бакет S3 `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Под → вовне | нет (S3, если используется) |
| Периодические задачи | нет: превью формируются при первом просмотре |

### Настройка

**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. Пользователь шаблонов (необязательно)**

Администраторы могут публиковать всегда. Чтобы разрешить управлять галереей пользователю без прав администратора, создайте этого пользователя, получите его ID из MongoDB и укажите его в 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. Применение и перезапуск**

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

### Несколько реплик

* Файлы шаблонов должны находиться в S3: если файлы хранятся на собственном диске каждой реплики, каждый узел будет показывать свою галерею. Конфигурация из раздела [Горизонтальное масштабирование](https://ayakaleaf-pro.mintlify.site/ru/on-premises/configuration/kubernetes/horizontal-scaling.md) уже использует бакет `overleaf-template-files`.
* Публикация берёт PDF последней компиляции проекта, который существует только на реплике, выполнившей компиляцию. Sticky-cookie балансировщика нагрузки удерживает пользователя на этой реплике, поэтому публикуйте из того же сеанса браузера, в котором выполнялась компиляция.

### Проверено на Kubernetes

В Kubernetes 1.37 с тремя репликами за HAProxy и файлами шаблонов в бакете S3 `overleaf-template-files` (Garage) наши сквозные тесты галереи шаблонов проходят (41 сценарий): публикация скомпилированного проекта из меню «Файл» и выдача PDF, изображений превью и ZIP-архива исходников из бакета; создание проектов из шаблона; категории, поиск, сортировка и страницы галереи; редактирование, перезапись и удаление шаблонов; права администраторов, обычных пользователей и пользователя шаблонов из `OVERLEAF_TEMPLATES_USER_ID` (его ID получен из MongoDB, как описано выше); а также некорректные запросы.


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