セキュリティの向上
多くの LaTeX ドキュメントは PDF コンパイル処理の一部として任意のシェルコマンドを実行する必要がある(または実行できる)ため、Ayakaleaf Pro では Sandboxed Compiles の使用が推奨されます。Sandboxed Compiles を使用すると、各コンパイルは機能が制限された個別の Docker コンテナで実行されます。このコンテナは他のユーザーやプロジェクトと共有されず、ホストネットワークなどの外部リソースにもアクセスできません。パッケージ管理の簡素化
パッケージを手動でインストールする手間を避けるため、Sandboxed Compiles を有効にすることをお勧めします。これは Server Pro 内の設定項目で、オンプレミス環境内でありながら、overleaf.com と同じ TeX Live 環境をユーザーに提供します。Sandboxed Compiles で使用される TeX Live イメージには、ギャラリーのテンプレートでテスト済みの人気のパッケージとフォントが含まれており、オンプレミスのプロジェクトとの最大限の互換性を確保します。 Sandboxed Compiles を有効にすると、ユーザーがプロジェクト内で選択できる TeX Live のバージョンを設定できるほか、新規プロジェクト用のデフォルトの TeX Live イメージのバージョンも設定できます。Sandboxed Compiles なしで Ayakaleaf Pro を実行しようとすると、インスタンスはデフォルトで TeX Live の basic scheme 版を使用してコンパイルします。この basic 版は軽量で、ごく限られた LaTeX パッケージしか含まれていないため、特にユーザーが既製のテンプレートを使おうとした場合に、パッケージ不足のエラーが発生する可能性が高くなります。
Sandboxed Compiles では、
sharelatex コンテナがこれらの兄弟コンパイルコンテナを管理できるように、(バインドマウントを介して)ホストマシン上の Docker ソケットにアクセスできる必要があります。仕組み
Sandboxed Compiles を有効にすると、ホストマシンの Docker ソケットがsharelatex コンテナにマウントされ、コンテナ内のコンパイラーサービスがホスト上に新しい Docker コンテナを作成できるようになります。その後、各プロジェクトでコンパイラーが実行されるたびに、LaTeX コンパイラーサービス(CLSI)は次の処理を行います。
- プロジェクトファイルを
OVERLEAF_DATA_PATH内の場所に書き出す。 - マウントされた Docker ソケットを使用して、コンパイル実行用の新しい
texliveコンテナを作成する。 texliveコンテナにOVERLEAF_DATA_PATH配下の場所からプロジェクトデータを読み込ませる。texliveコンテナ内でプロジェクトをコンパイルする。
Sandboxed Compiles の有効化
Toolkit ユーザーの場合
Sandboxed Compiles(兄弟コンテナとも呼ばれます)を有効にするには、overleaf-toolkit/config/overleaf.rc で次の設定オプションを指定します。
config/overleaf.rc
Docker Compose ユーザーの場合
Overleaf CE/Server Pro
5.0.3 以降、環境変数は SHARELATEX_* から OVERLEAF_* にリブランディングされました。4.x バージョン(またはそれ以前)を使用している場合は、変数に適切な接頭辞が付いていることを確認してください(例: OVERLEAF_MONGO_URL ではなく SHARELATEX_MONGO_URL)。
TeX Live イメージのセットアップ
中国本土のユーザーは、ダウンロードを高速化するために
ghcr.io を ghcr.nju.edu.cn に置き換えることができます。ただし、Toolkit の環境設定で ghcr.nju.edu.cn を直接使用しないでください。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 を使用している場合、これらのイメージがダウンロードまたは更新されます。ダウンロードをスキップするには、config/overleaf.rcでSIBLING_CONTAINERS_PULL=falseを設定します。
bin/up コマンドで Ayakaleaf Pro インスタンスを起動すると、Toolkit は ALL_TEX_LIVE_DOCKER_IMAGES に記載されているすべてのイメージを自動的に pull します。
以下は、新規プロジェクトのデフォルトを TeX Live 2026 にし、既存のプロジェクト用に 2025 も引き続き使用する例です。
- 最小インストール
- フルインストール
次の設定では、2025 年から 2026 年までのすべてのフル TeX Live Docker イメージをインストールします。この設定を使用する前に、少なくとも 64 GB の空きストレージを用意することをお勧めします。
config/variables.env
少なくとも 2 つの texlive-full イメージを設定することを強く推奨します。詳しい理由は #known-issues を参照してください。
利用可能な TeX Live イメージ
以下は Overleaf 向けに特別に最適化された一連の TeX Live イメージで、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 コミュニティで実際にあった事例です。技術的な制約により、6.0.1-ext-v3.3を使用しており、variables.envに次の設定をしています。これはtexlive/texlive:latest-fullでは問題なく動作します。しかし、別の texlive イメージdanteev/texlive:2025-10-15を pull し、両方の変数を新しいイメージ名に変更したところ、動作しません。ログには次のように表示されます。variables.envの更新された設定が反映されていないようです。コンパイルは新しいイメージではなく、依然としてtexlive/texlive:latest-fullイメージを実行しようとします。 再起動したり、コンテナを削除して再実行したりしましたが、同じ問題が発生します。 何か解決策はありますか?
texlive-fullA:latest のように Docker TeX Live イメージを 1 つだけ設定している場合、
texlive-fullB:latest に変更したくなるかもしれません。すると、ユーザーがすべてのプロジェクトをコンパイルできなくなることがわかります。

