> ## 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/uk/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/uk/on-premises/configuration/kubernetes/horizontal-scaling.md) уже використовує бакет `overleaf-template-files`.
* Публікація бере PDF останньої компіляції проєкту, який існує лише на репліці, що його скомпілювала. Липка 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.