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

# Mẫu

> Chạy thư viện mẫu trên một bản triển khai Kubernetes.

Thư viện mẫu chạy trong dịch vụ **web** (mô-đun `template-gallery`) của mọi pod Ayakaleaf Pro; dịch vụ **filestore** trong cùng pod lưu trữ các tệp mẫu và tạo ảnh xem trước cho chúng. Danh mục, quyền và việc xuất bản được mô tả trong [Mẫu](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/overleaf-toolkit/templates.md).

| | |
| - | - |
| Dịch vụ | web (mô-đun `template-gallery`), filestore (tệp và ảnh xem trước) |
| Dữ liệu được lưu trữ | siêu dữ liệu mẫu trong MongoDB; ZIP, PDF và ảnh xem trước trong kho mẫu của filestore: `/var/lib/overleaf/data/template_files` trên volume dữ liệu, hoặc bucket S3 `OVERLEAF_FILESTORE_TEMPLATE_FILES_BUCKET_NAME` |
| Pod → bên ngoài | không có (S3, nếu được dùng) |
| Tác vụ định kỳ | không có: ảnh xem trước được tạo vào lần đầu tiên được xem |

### Cấu hình

**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. Người dùng quản lý mẫu (tùy chọn)**

Quản trị viên luôn có thể xuất bản. Để cho phép một người dùng không phải quản trị viên quản lý thư viện, hãy tạo người dùng đó, đọc ID của nó từ MongoDB và đưa vào 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. Áp dụng và khởi động lại**

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

### Nhiều replica

* Các tệp mẫu phải nằm trong S3: nếu tệp nằm trên ổ đĩa riêng của mỗi replica, mỗi node sẽ hiển thị một thư viện khác nhau. Thiết lập [Mở rộng theo chiều ngang](https://ayakaleaf-pro.mintlify.site/vi/on-premises/configuration/kubernetes/horizontal-scaling.md) đã dùng sẵn bucket `overleaf-template-files`.
* Việc xuất bản lấy PDF từ lần biên dịch gần nhất của dự án, vốn chỉ tồn tại trên replica đã biên dịch nó. Cookie sticky của load balancer giữ người dùng trên replica đó, vì vậy hãy xuất bản từ cùng phiên trình duyệt đã biên dịch.

### Đã kiểm thử trên Kubernetes

Trên Kubernetes 1.37 với ba replica phía sau HAProxy và các tệp mẫu trong bucket S3 `overleaf-template-files` (Garage), các bài kiểm thử end-to-end của chúng tôi cho thư viện mẫu đều đạt (41 trường hợp): xuất bản một dự án đã biên dịch từ menu File, với PDF, ảnh xem trước và ZIP mã nguồn được phục vụ từ bucket; tạo dự án từ một mẫu; danh mục, tìm kiếm, sắp xếp và phân trang của thư viện; chỉnh sửa, ghi đè và xóa mẫu; quyền của quản trị viên, người dùng thông thường và người dùng quản lý mẫu từ `OVERLEAF_TEMPLATES_USER_ID` (ID của nó được đọc từ MongoDB như mô tả ở trên); và các yêu cầu sai định dạng.


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