> ## 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 배포에서 템플릿 갤러리를 실행합니다.

템플릿 갤러리는 모든 Ayakaleaf Pro 파드의 **web** 서비스(`template-gallery` 모듈)에서 실행되며, 같은 파드의 **filestore** 서비스가 템플릿 파일을 저장하고 미리보기를 렌더링합니다. 카테고리, 권한 및 게시는 [템플릿](https://ayakaleaf-pro.mintlify.site/ko/on-premises/configuration/overleaf-toolkit/templates.md)에 설명되어 있습니다.

| | |
| - | - |
| 서비스 | web(`template-gallery` 모듈), filestore(파일 및 미리보기 이미지) |
| 저장되는 데이터 | MongoDB의 템플릿 메타데이터; filestore 템플릿 저장소의 ZIP, PDF 및 미리보기 이미지: 데이터 볼륨의 `/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. 템플릿 사용자(선택 사항)**

관리자는 언제나 게시할 수 있습니다. 관리자가 아닌 사용자가 갤러리를 관리하도록 하려면 사용자를 만들고, MongoDB에서 해당 ID를 읽어 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/ko/on-premises/configuration/kubernetes/horizontal-scaling.md) 구성은 이미 버킷 `overleaf-template-files`를 사용합니다.
* 게시 시에는 프로젝트의 마지막 컴파일 PDF를 사용하는데, 이 PDF는 컴파일한 레플리카에만 존재합니다. 로드 밸런서의 고정(sticky) 쿠키가 사용자를 해당 레플리카에 유지하므로, 컴파일한 것과 같은 브라우저 세션에서 게시하세요.

### Kubernetes에서의 테스트

HAProxy 뒤에 레플리카 세 개를 두고 템플릿 파일을 S3 버킷 `overleaf-template-files`(Garage)에 저장한 Kubernetes 1.37에서, 템플릿 갤러리에 대한 엔드 투 엔드 테스트가 통과했습니다(41개 케이스). 테스트 항목은 파일 메뉴에서 컴파일된 프로젝트 게시 및 버킷에서 제공되는 PDF, 미리보기 이미지, 소스 ZIP; 템플릿으로 프로젝트 만들기; 갤러리의 카테고리, 검색, 정렬 및 페이지; 템플릿 편집, 덮어쓰기 및 삭제; 관리자, 일반 사용자, 그리고 `OVERLEAF_TEMPLATES_USER_ID`의 템플릿 사용자(위에서 설명한 대로 MongoDB에서 ID를 읽음)의 권한; 잘못된 형식의 요청입니다.


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