Підвищена безпека
Ізольована компіляція (Sandboxed Compiles) — рекомендований підхід для Ayakaleaf Pro, оскільки багато документів LaTeX потребують або мають змогу виконувати довільні shell-команди в процесі компіляції PDF. Якщо ви використовуєте ізольовану компіляцію, кожна компіляція виконується в окремому контейнері Docker з обмеженими можливостями, який не спільний з іншими користувачами чи проєктами та не має доступу до зовнішніх ресурсів, як-от мережа хоста.Простіше керування пакетами
Щоб не встановлювати пакети вручну, рекомендуємо ввімкнути ізольовану компіляцію. Це параметр Server Pro, який надає вашим користувачам доступ до того самого середовища TeX Live, що й на overleaf.com, але у вашій власній локальній інсталяції. Образи TeX Live, які використовуються для ізольованої компіляції, містять найпопулярніші пакети та шрифти, протестовані з шаблонами нашої галереї, що забезпечує максимальну сумісність для локальних проєктів. Увімкнення ізольованої компіляції дає змогу налаштувати, з яких версій TeX Live користувачі можуть обирати у своєму проєкті, а також задати версію образу TeX Live за замовчуванням для нових проєктів.Якщо ви спробуєте запустити Ayakaleaf Pro без ізольованої компіляції, ваш екземпляр за замовчуванням використовуватиме для компіляції базову схему TeX Live. Ця базова версія легка й містить лише дуже обмежений набір пакетів LaTeX, що, найімовірніше, призведе до помилок про відсутні пакети у ваших користувачів, особливо якщо вони намагатимуться використовувати готові шаблони.
Ізольована компіляція вимагає, щоб контейнер
sharelatex мав доступ до сокета Docker на хост-машині (через bind mount), аби він міг керувати цими сусідніми контейнерами компіляції.Як це працює
Коли ізольовану компіляцію ввімкнено, сокет Docker монтується з хост-машини в контейнерsharelatex, щоб сервіс компілятора в контейнері міг створювати нові контейнери Docker на хості. Потім для кожного запуску компілятора в кожному проєкті сервіс компілятора LaTeX (CLSI) виконує таке:
- Записує файли проєкту в розташування всередині
OVERLEAF_DATA_PATH. - Використовує змонтований сокет Docker, щоб створити новий контейнер
texliveдля цього запуску компіляції. - Контейнер
texliveзчитує дані проєкту з розташування вOVERLEAF_DATA_PATH. - Компілює проєкт усередині контейнера
texlive.
Увімкнення ізольованої компіляції
Для користувачів Toolkit
Щоб увімкнути ізольовану компіляцію (також відому як Sibling containers), задайте такі параметри конфігурації вoverleaf-toolkit/config/overleaf.rc:
config/overleaf.rc
Для користувачів Docker Compose
Починаючи з Overleaf CE/Server Pro
5.0.3, змінні середовища перейменовано з SHARELATEX_* на OVERLEAF_*.4.x (або старішу), переконайтеся, що змінні мають відповідний префікс (наприклад, SHARELATEX_MONGO_URL замість OVERLEAF_MONGO_URL).
Налаштування образу TexLive
Користувачі з материкового Китаю можуть замінити
ghcr.io на ghcr.nju.edu.cn, щоб пришвидшити завантаження. Але НЕ використовуйте ghcr.nju.edu.cn безпосередньо в налаштуваннях середовища toolkit. Єдиним варіантом там має залишатися ghcr.io.TEX_LIVE_DOCKER_IMAGE(обов’язкова) — образ TeX Live за замовчуванням для компіляції нових проєктів. Цей образ має бути включений доALL_TEX_LIVE_DOCKER_IMAGES.ALL_TEX_LIVE_DOCKER_IMAGE_NAMES(обов’язкова) — список зрозумілих назв образів, розділених комами, що використовуються як варіанти у фронтенді.ALL_TEX_LIVE_DOCKER_IMAGES(обов’язкова) — список образів TeX Live для використання, розділених комами. Якщо для розгортання використовується Overleaf Toolkit, ці образи буде завантажено або оновлено. Щоб пропустити завантаження, встановітьSIBLING_CONTAINERS_PULL=falseуconfig/overleaf.rc.
bin/up Toolkit автоматично завантажить усі образи, перелічені в ALL_TEX_LIVE_DOCKER_IMAGES.
Ось приклад, у якому для нових проєктів за замовчуванням використовується TeX Live 2026, а версія 2025 залишається для старих проєктів.
- Мінімальна інсталяція
- Повна інсталяція
Наведена конфігурація встановлює всі повні образи Docker TeX Live з 2025 по 2026 рік. Перед використанням цієї конфігурації рекомендуємо мати щонайменше 64 ГБ вільного місця.
config/variables.env
Наполегливо рекомендується налаштувати щонайменше 2 образи texlive-full. Докладніше про причину див. #known-issues
Доступні образи TeX Live
Це серія образів TeX Live, спеціально оптимізованих для Overleaf, які також можна додати доTEX_LIVE_DOCKER_IMAGE і ALL_TEX_LIVE_DOCKER_IMAGES:
ghcr.io/ayaka-notes/texlive-full:2026.1(також тегlatest)ghcr.io/ayaka-notes/texlive-full:2025.1ghcr.io/ayaka-notes/texlive-full:2024.1ghcr.io/ayaka-notes/texlive-full:2023.1ghcr.io/ayaka-notes/texlive-full:2022.1ghcr.io/ayaka-notes/texlive-full:2021.1ghcr.io/ayaka-notes/texlive-full:2020.1
Чи можна використовувати інший реєстр образів
Дехто може запитати, чи можна замінити ghcr.io на інше дзеркало або перейти на інший образ texlive з Docker Hub?
Ні, ми цього не рекомендуємо, оскільки конфігурація досить складна. Якщо ви завантажуєте образи з дзеркала, можете перейменувати свій образ на ghcr.io/ayaka-notes/texlive-full.
Але якщо ви справді хочете використовувати власний реєстр образів, додайте:
config/variables.env
your-repo, наприклад:
hub.your.com/your-repo/texlive-full:2025.1hub.your.com/your-repo/texlive-full:2024.1
sandboxed-compiles/index.mjs
Автоматична синхронізація образів TeX Live
Щоб не оновлювати екземпляр вручну черезbin/up щоразу, можна автоматизувати оновлення образу TeX Live. Див. updating-tex-live-full-images-automatically.md.
Відомі проблеми
Ось реальний випадок зі спільноти Overleaf:ВикористовуючиЧерез певні технічні обмеження, якщо ви налаштуєте лише один образ Docker TeXLive, наприклад6.0.1-ext-v3.3, я маю такі налаштування уvariables.env:Зtexlive/texlive:latest-fullце працює добре. Однак я завантажив інший образ texlivedanteev/texlive:2025-10-15і змінив обидві змінні на назву нового образу, але це не працює:У журналах я бачу таке:Схоже, що оновлені налаштування уvariables.envне набувають чинності. Компіляція все ще намагається запустити образtexlive/texlive:latest-full, а не новий образ. Я пробував перезавантажити систему, видалити контейнери й запустити знову, але проблема та сама. Чи є якісь рішення?
texlive-fullA:latest
texlive-fullB:latest, то побачите, що ваші користувачі не можуть скомпілювати жоден проєкт.

