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

# Szablony

> Uruchom galerię szablonów we wdrożeniu Kubernetes.

Galeria szablonów działa w usłudze **web** (moduł `template-gallery`) każdego poda Ayakaleaf Pro; usługa **filestore** w tym samym podzie przechowuje pliki szablonów i renderuje ich podglądy. Kategorie, uprawnienia i publikowanie opisano na stronie [Szablony](https://ayakaleaf-pro.mintlify.site/pl/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Usługi | web (moduł `template-gallery`), filestore (pliki i obrazy podglądu) |
| Przechowywane dane | metadane szablonów w MongoDB; pliki ZIP, PDF i obrazy podglądu w magazynie szablonów filestore: `/var/lib/overleaf/data/template_files` na woluminie danych lub bucket S3 `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → na zewnątrz | brak (S3, jeśli jest używany) |
| Zadania okresowe | brak: podglądy są renderowane przy pierwszym wyświetleniu |

### Konfiguracja

**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. Użytkownik szablonów (opcjonalnie)**

Administratorzy zawsze mogą publikować. Aby pozwolić użytkownikowi niebędącemu administratorem zarządzać galerią, utwórz tego użytkownika, odczytaj jego identyfikator z MongoDB i umieść go w 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. Zastosuj i uruchom ponownie**

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

### Kilka replik

* Pliki szablonów muszą znajdować się w S3: gdyby pliki leżały na własnym dysku każdej repliki, każdy węzeł pokazywałby inną galerię. Konfiguracja ze strony [Skalowanie poziome](https://ayakaleaf-pro.mintlify.site/pl/on-premises/configuration/kubernetes/horizontal-scaling.md) już korzysta z bucketu `overleaf-template-files`.
* Publikowanie wykorzystuje PDF z ostatniej kompilacji projektu, który istnieje tylko na replice, która go skompilowała. Ciasteczko przypisania (sticky cookie) load balancera utrzymuje użytkownika na tej replice, więc publikuj z tej samej sesji przeglądarki, w której kompilowano.

### Przetestowano na Kubernetes

Na Kubernetes 1.37 z trzema replikami za HAProxy i plikami szablonów w buckecie S3 `overleaf-template-files` (Garage) nasze testy end-to-end galerii szablonów przechodzą pomyślnie (41 przypadków): publikowanie skompilowanego projektu z menu Plik oraz PDF, obrazy podglądu i ZIP ze źródłami serwowane z bucketu; tworzenie projektów z szablonu; kategorie, wyszukiwanie, sortowanie i strony galerii; edycja, nadpisywanie i usuwanie szablonów; uprawnienia administratorów, zwykłych użytkowników oraz użytkownika szablonów z `OVERLEAF_TEMPLATES_USER_ID` (jego identyfikator odczytany z MongoDB w sposób opisany powyżej); a także nieprawidłowo sformułowane żądania.


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