Skip to main content
개발 환경에서 샌드박스 컴파일을 설정하려는 경우 개발 환경과 프로덕션 환경 사이에 약간의 차이가 있습니다. 주의해야 할 점은 다음 세 가지입니다.
  • 파일 권한 문제
  • history-v1과 filestore 간 볼륨 공유
  • 하위 디렉터리 문제

샌드박스 컴파일 활성화

여기서는 Overleaf CE에서와 마찬가지로 샌드박스 컴파일을 활성화하기만 하면 됩니다. 다만 사용자에만 주의하면 됩니다. 여기서는 root로 설정합니다. 프로덕션 환경에서는 Overleaf 컨테이너와 TeX 컴파일 컨테이너 간의 공유 사용자로 www-data를 사용합니다. 하지만 개발 환경에서는 컨테이너의 기본 사용자가 node이며, 이를 연결할 www-data 사용자가 없습니다. 그래서 임시 방편으로 root를 사용합니다.
직접 빌드한 이미지는 사용하지 마세요. 여러 가지 오류가 발생할 수 있습니다.

파일 권한 수정

LaTeX는 TEXLIVE_IMAGE_USER 환경 변수에 지정된 사용자로 형제 컨테이너에서 실행됩니다. 위 예시에서는 이 값이 uid 0인 root로 설정되어 있습니다. root 사용자에게 compiles의 하위 폴더에 쓸 권한이 없으므로 위 권한 설정에서는 문제가 발생합니다. 빠른 해결책은 compiles에 root 그룹 소유권과 읽기/쓰기 권한을 부여하고, 새 하위 폴더도 이 소유권을 상속하도록 setgid를 설정하는 것입니다.
bash
자세한 문서는 services/clsi/README.md를 참고하세요.

history-v1과 filestore 간 볼륨 공유

기본적으로 filestore는 Overleaf에서 S3와 다른 서비스 사이의 다리 역할을 합니다. 하지만 Overleaf CE나 Server Pro에서는 기본적으로 모든 파일이 로컬에 저장됩니다. 그래서 Overleaf는 매우 까다로운 방법을 도입했습니다.
server-ce/config/settings.js
동시에 data/history는 history 서비스에서도 사용됩니다. 이렇게 해서 서로 다른 마이크로서비스 간에 동일한 데이터를 공유할 수 있습니다. 개발 환경의 filestore 서비스에 history-v1-buckets 볼륨을 추가해야 합니다. 그렇지 않으면 clsi가 filestore 서비스에서 blob 파일을 가져올 수 없습니다.
develop/docker-compose.yml
또한 dev.env 설정에 BUCKET 이름을 추가해야 합니다.
develop/dev.env

하위 디렉터리 사용

filestore는 기본적으로 useSubdirectories를 true로 사용하지만, 개발 환경에서는 history v1이 모든 데이터를 평탄화합니다. 이로 인해 충돌이 발생합니다. 이를 해결하려면 다음을 추가해야 합니다.
develop/dev.env
history v1에서 모든 project_blobs 파일은 원래 다음과 같이 저장됩니다.
useSubdirectories를 true로 설정하여 하위 디렉터리 모드를 사용하도록 변경해야 합니다. 이제 blob의 원래 _는 /로 대체됩니다.
마지막 수정일 2026년 10월 5일