Skip to main content
Якщо ви хочете налаштувати ізольовану компіляцію (Sandbox Compiles) для розробки, слід враховувати кілька відмінностей між середовищами розробки та продакшну. Потрібно звернути увагу на 3 речі:
  • Проблема з правами доступу до файлів
  • Спільний том для history-v1 та filestore
  • Проблема з підкаталогами

Увімкнення ізольованої компіляції

Тут потрібно просто увімкнути Sandbox Compiles так само, як і в Overleaf CE. Однак слід звернути увагу на користувача. Тут ми встановлюємо його як root. У продакшн-середовищі ми використовуємо www-data як спільного користувача для контейнера Overleaf і контейнера компіляції TeX. Проте в середовищі розробки користувачем за замовчуванням у контейнері є node, і користувача www-data, до якого можна було б прив’язатися, немає. Тож як обхідне рішення ми просто використовуємо root.
Будь ласка, не використовуйте власноруч зібраний образ — ви можете зіткнутися з низкою помилок.

Виправлення прав доступу до файлів

LaTeX виконується в сусідніх контейнерах від імені користувача, вказаного у змінній середовища TEXLIVE_IMAGE_USER. У прикладі вище це root з uid 0. Це створює проблему з наведеними вище правами доступу, оскільки користувач root не має дозволу на запис у підкаталоги compiles. Швидке виправлення — надати групі root право власності та права на читання й запис для compiles, встановивши setgid, щоб нові підкаталоги також успадковували це право власності:
bash
Докладну документацію див. у services/clsi/README.md.

Спільний том для history-v1 та filestore

За замовчуванням filestore виконує роль мосту між S3 та іншими сервісами Overleaf. Однак в Overleaf CE або Server Pro всі файли за замовчуванням зберігаються локально. Тому в Overleaf запровадили доволі хитромудрий метод.
server-ce/config/settings.js
Водночас data/history також використовується сервісом history. Таким чином різні мікросервіси можуть спільно використовувати ті самі дані. Вам потрібно додати том history-v1-buckets до сервісу filestore у середовищі розробки. Інакше clsi не зможе отримувати blob-файли із сервісу filestore.
develop/docker-compose.yml
Також потрібно додати назви BUCKET до налаштувань dev.env:
develop/dev.env

Використання підкаталогів

Filestore за замовчуванням використовує useSubdirectories зі значенням true, однак у середовищі розробки history v1 зберігає всі дані в пласкій структурі. Це спричиняє певний конфлікт. Щоб це виправити, додайте таке:
develop/dev.env
У history v1 усі файли project_blobs початково зберігаються так:
Потрібно встановити useSubdirectories у true, щоб перейти в режим підкаталогів. Тепер початковий символ _ у blob буде замінено на / .
Останнє оновлення 5 жовтня 2026 р.