Większe bezpieczeństwo
Sandboxed Compiles to zalecane podejście w przypadku Ayakaleaf Pro, ponieważ wiele dokumentów LaTeX wymaga możliwości (lub ją posiada) wykonywania dowolnych poleceń powłoki w ramach procesu kompilacji PDF. Jeśli korzystasz z Sandboxed Compiles, każda kompilacja jest uruchamiana w osobnym kontenerze Docker z ograniczonymi uprawnieniami, który nie jest współdzielony z żadnym innym użytkownikiem ani projektem i nie ma dostępu do zasobów zewnętrznych, takich jak sieć hosta.Łatwiejsze zarządzanie pakietami
Aby uniknąć ręcznego instalowania pakietów, zalecamy włączenie Sandboxed Compiles. Jest to konfigurowalne ustawienie w Server Pro, które zapewni użytkownikom dostęp do tego samego środowiska TeX Live co na overleaf.com, ale w ramach Twojej własnej instalacji lokalnej. Obrazy TeX Live używane przez Sandboxed Compiles zawierają najpopularniejsze pakiety i czcionki przetestowane z szablonami z naszej galerii, co zapewnia maksymalną zgodność z projektami w instalacjach lokalnych. Włączenie Sandboxed Compiles pozwala skonfigurować, spośród których wersji TeX Live użytkownicy mogą wybierać w swoich projektach, a także ustawić domyślną wersję obrazu TeX Live dla nowych projektów.Jeśli spróbujesz uruchomić Ayakaleaf Pro bez Sandboxed Compiles, instancja domyślnie użyje do kompilacji wersji TeX Live z podstawowym schematem (basic scheme). Ta podstawowa wersja jest lekka i zawiera jedynie bardzo ograniczony podzbiór pakietów LaTeX, co najprawdopodobniej spowoduje u użytkowników błędy brakujących pakietów, zwłaszcza jeśli spróbują użyć gotowych szablonów.
Sandboxed Compiles wymaga, aby kontener
sharelatex miał dostęp do gniazda Docker na maszynie hosta (poprzez bind mount), dzięki czemu może zarządzać tymi równoległymi (sibling) kontenerami kompilacji.Jak to działa
Gdy Sandboxed Compiles są włączone, gniazdo Docker zostaje zamontowane z maszyny hosta do kontenerasharelatex, dzięki czemu usługa kompilatora w kontenerze może tworzyć nowe kontenery Docker na hoście. Następnie przy każdym uruchomieniu kompilatora w każdym projekcie usługa kompilatora LaTeX (CLSI) wykonuje następujące czynności:
- Zapisuje pliki projektu w lokalizacji wewnątrz
OVERLEAF_DATA_PATH. - Używa zamontowanego gniazda Docker do utworzenia nowego kontenera
texlivena potrzeby danej kompilacji. - Kontener
texliveodczytuje dane projektu z lokalizacji wOVERLEAF_DATA_PATH. - Kompiluje projekt wewnątrz kontenera
texlive.
Włączanie Sandboxed Compiles
Dla użytkowników Toolkit
Aby włączyć Sandboxed Compiles (znane również jako kontenery Sibling), ustaw następujące opcje konfiguracyjne w plikuoverleaf-toolkit/config/overleaf.rc:
config/overleaf.rc
Dla użytkowników Docker Compose
Począwszy od Overleaf CE/Server Pro
5.0.3 nazwy zmiennych środowiskowych zostały zmienione z SHARELATEX_* na OVERLEAF_*.4.x (lub wcześniejszej), upewnij się, że zmienne mają odpowiedni prefiks (np. SHARELATEX_MONGO_URL zamiast OVERLEAF_MONGO_URL).
Konfiguracja obrazu TeX Live
Użytkownicy z Chin kontynentalnych mogą zastąpić
ghcr.io adresem ghcr.nju.edu.cn, aby przyspieszyć pobieranie. NIE używaj jednak ghcr.nju.edu.cn bezpośrednio w ustawieniach środowiska Toolkit. Jedyną wartością powinno pozostać ghcr.io.TEX_LIVE_DOCKER_IMAGE(wymagana), domyślny obraz TeX Live używany do kompilowania nowych projektów. Ten obraz musi znajdować się wALL_TEX_LIVE_DOCKER_IMAGES.ALL_TEX_LIVE_DOCKER_IMAGE_NAMES(wymagana), lista przyjaznych nazw obrazów rozdzielonych przecinkami, używana w opcjach frontendu.ALL_TEX_LIVE_DOCKER_IMAGES(wymagana), lista obrazów TeX Live do użycia, rozdzielonych przecinkami. Jeśli do wdrożenia używany jest Overleaf Toolkit, obrazy te zostaną pobrane lub zaktualizowane. Aby pominąć pobieranie, ustawSIBLING_CONTAINERS_PULL=falsewconfig/overleaf.rc.
bin/up Toolkit automatycznie pobierze wszystkie obrazy wymienione w ALL_TEX_LIVE_DOCKER_IMAGES.
Oto przykład, w którym domyślnie używamy TeX Live 2026 dla nowych projektów, a wersję 2025 zachowujemy dla starszych projektów.
- Instalacja minimalna
- Instalacja pełna
Poniższa konfiguracja instaluje wszystkie pełne obrazy Docker TeX Live z lat 2025–2026. Przed użyciem tej konfiguracji zalecamy zapewnienie co najmniej 64 GB wolnego miejsca.
config/variables.env
Zdecydowanie zalecamy ustawienie co najmniej 2 obrazów texlive-full. Szczegółowe uzasadnienie znajdziesz w #known-issues
Dostępne obrazy TeX Live
Oto seria obrazów TeX Live specjalnie zoptymalizowanych pod kątem Overleaf, które można również dodać doTEX_LIVE_DOCKER_IMAGE i ALL_TEX_LIVE_DOCKER_IMAGES:
ghcr.io/ayaka-notes/texlive-full:2026.1(również taglatest)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
Czy mogę używać innego rejestru obrazów?
Niektórzy mogą się zastanawiać, czy można zastąpić ghcr.io innym serwerem lustrzanym albo zamienić obraz texlive na inny obraz z Docker Hub?
Nie, nie zalecamy tego, ponieważ konfiguracja jest stosunkowo skomplikowana. Jeśli pobierasz obrazy z serwera lustrzanego, możesz zmienić nazwę obrazu na ghcr.io/ayaka-notes/texlive-full.
Jeśli jednak naprawdę chcesz używać własnego rejestru obrazów, dodaj:
config/variables.env
your-repo, na przykład
hub.your.com/your-repo/texlive-full:2025.1hub.your.com/your-repo/texlive-full:2024.1
sandboxed-compiles/index.mjs
Automatyczna synchronizacja obrazów TeX Live
Aby uniknąć ręcznego aktualizowania instancji za pomocąbin/up za każdym razem, możesz zautomatyzować aktualizacje obrazu TeX Live. Zobacz updating-tex-live-full-images-automatically.md.
Znane problemy
Oto prawdziwy przypadek ze społeczności Overleaf:UżywamZe względu na pewne ograniczenia techniczne, jeśli skonfigurujesz tylko jeden obraz Docker TeXLive, na przykład6.0.1-ext-v3.3i mam wvariables.envnastępujące ustawienia:Działa to poprawnie ztexlive/texlive:latest-full. Jednak pobrałem inny obraz texlive,danteev/texlive:2025-10-15, i zmieniłem obie te zmienne na nazwę nowego obrazu, ale to nie działa:W logach widzę następujący komunikat:Wygląda na to, że zaktualizowane ustawienia wvariables.envnie są uwzględniane. Kompilacja nadal próbuje uruchomić obraztexlive/texlive:latest-full, a nie nowy obraz. Próbowałem ponownie uruchomić system, usunąć kontenery i uruchomić je od nowa, ale problem nadal występuje. Czy są jakieś rozwiązania?
texlive-fullA:latest
texlive-fullB:latest, okaże się, że użytkownicy nie mogą skompilować żadnego projektu.

