gear-codeサンドボックス化されたコンパイル

Overleaf Pro は、エンタープライズ向けのセキュリティのためにコンパイルを隔離されたサンドボックス環境で実行するオプションを提供します。これは、各プロジェクトをそれぞれ独立したセキュアな Docker 環境で実行することによって実現されます。

セキュリティの向上

多くの LaTeX 文書は PDF コンパイルの過程で任意のシェルコマンドを実行する必要がある、またはその能力を持っているため、Sandboxed Compiles は Server Pro に推奨されるアプローチです。Sandboxed Compiles を使用すると、各コンパイルは他のユーザーやプロジェクトと共有されない機能が制限された別々の Docker コンテナで実行され、ホストネットワークなどの外部リソースへのアクセスはありません。

circle-exclamation

パッケージ管理が容易に

パッケージを手動でインストールするのを避けるために、Sandboxed Compiles を有効にすることをお勧めします。これは Server Pro の設定可能なオプションで、ユーザーに overleaf.com と同じ TeX Live 環境へのアクセスを、オンプレミスのインストール内で提供します。Sandboxed Compiles で使用される TeX Live イメージには、ギャラリーテンプレートでテストされた最も人気のあるパッケージやフォントが含まれており、オンプレミスプロジェクトとの互換性を最大限に確保します。

Sandboxed Compiles を有効にすると、ユーザーがプロジェクト内で選択できる TeX Live バージョンや、新しいプロジェクトのデフォルト TeX Live イメージバージョンを設定することができます。

circle-info

Sandboxed Compiles を使わずに Overleaf Pro を実行しようとすると、インスタンスはコンパイルに対して基本的なスキームの TeX Live バージョンを使用することになります。この基本バージョンは軽量で、非常に限られたサブセットの LaTeX パッケージしか含まれておらず、特に事前構築されたテンプレートを使用しようとする際にユーザーにパッケージ不足のエラーを引き起こす可能性が高いです。

Overleaf Pro はオフラインで動作するように設計されているため、overleaf.com のギャラリーテンプレートをオンプレミスインストールに自動的に統合する方法はありません。ただし、テンプレートごとに手動で行うことは可能です。これがどのように機能するかの詳細については、overleaf.com からテンプレートを移行するガイドをご参照ください: overleaf.comからのテンプレートの転送.

circle-info

Sandboxed Compiles を有効にするには、 sharelatex コンテナがホストマシン上の Docker ソケットにアクセスできる(バインドマウント経由)必要があり、これによりこれらの兄弟コンパイルコンテナを管理できます。

仕組み

Sandboxed Compiles が有効になると、Docker ソケットはホストマシンから sharelatex コンテナにマウントされ、コンテナ内のコンパイラサービスがホスト上に新しい Docker コンテナを作成できるようになります。各プロジェクトでコンパイラを実行するたびに、LaTeX コンパイラサービス(CLSI)は次のことを行います:

  • プロジェクトファイルを OVERLEAF_DATA_PATH.

  • の内部の場所に書き出します。 マウントされた Docker ソケットを使用して新しい texlive

  • コンテナをコンパイル実行のために作成します。 マウントされた Docker ソケットを使用して新しい その OVERLEAF_DATA_PATH.

  • コンテナに、プロジェクトデータを マウントされた Docker ソケットを使用して新しい 下の場所から読み込ませます。

コンテナ内でプロジェクトをコンパイルします。

Sandboxed Compiles を有効にする

Toolkit ユーザー向け Sandboxed Compiles(Sibling containers とも呼ばれる)を有効にするには、次の設定オプションを:

SERVER_PRO=true

triangle-exclamation

から OVERLEAF_* にリブランドされました。 もし 4.x バージョン(またはそれ以前)を使用している場合は、変数がそれに応じたプレフィックスになっていることを確認してください(例:).

environment:

circle-info

DOCKER_RUNNER: "true" SANDBOXED_COMPILES: "true" SANDBOXED_COMPILES_HOST_DIR: "/data/overleaf_data/data/compiles"

TexLive イメージの変更

  • 中国本土のユーザーは、ダウンロードを高速化するために ghcr.nju.edu.cn を使用できます。 Overleaf Pro は、Sandboxed Compiles に使用する TeX Live イメージを決定するために 3 つの環境変数を使用します:.

  • TEX_LIVE_DOCKER_IMAGE ghcr.nju.edu.cn (必須)、

  • Overleaf Pro は、Sandboxed Compiles に使用する TeX Live イメージを決定するために 3 つの環境変数を使用します: ghcr.nju.edu.cn 新しいプロジェクトのコンパイルに使用されるデフォルトの TeX Live イメージ。このイメージは ALL_TEX_LIVE_DOCKER_IMAGES および overleaf-toolkit/config/overleaf.rc.

ALL_TEX_LIVE_DOCKER_IMAGE_NAMES に含まれていなければなりません。 イメージのフレンドリ名のカンマ区切りリストで、フロントエンドのオプションに使用されます。 Overleaf Pro は、Sandboxed Compiles に使用する TeX Live イメージを決定するために 3 つの環境変数を使用します:.

使用する TeX Live イメージのカンマ区切りリスト。Overleaf Toolkit がデプロイに使用される場合、これらのイメージはダウンロードまたは更新されます。ダウンロードをスキップするには、

triangle-exclamation

ここでは新しいプロジェクトに対して TeX Live 2025 をデフォルトにし、既存プロジェクトには 2024 を維持する例を示します。

config/variables.env 中国本土のユーザーは、ダウンロードを高速化するために ALL_TEX_LIVE_DOCKER_IMAGES=ghcr.io/ayaka-notes/texlive-full:2025.1, ghcr.io/ayaka-notes/texlive-full:2024.1 Overleaf Pro は、Sandboxed Compiles に使用する TeX Live イメージを決定するために 3 つの環境変数を使用します::

  • ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=Texlive 2025, Texlive 2024 TEX_LIVE_DOCKER_IMAGE=ghcr.io/ayaka-notes/texlive-full:2025.1 少なくとも 2 つの texlive-full イメージを設定することを強く推奨します。 詳細な理由については、

  • 利用可能な TeX Live イメージ

  • を参照してください。

  • これらは Overleaf 用に特別に最適化された一連の TeX Live イメージで、

  • および

  • に追加することもできます。

circle-exclamation

ghcr.io/ayaka-notes/texlive-full:2024.1

ghcr.io/ayaka-notes/texlive-full:2023.1 ghcr.io/ayaka-notes/texlive-full:2022.1 ghcr.io/ayaka-notes/texlive-full:2021.1

ghcr.io/ayaka-notes/texlive-full:2020.1 イメージのタグ付けには厳密なスキーマがあり、.

次のように

他のイメージレジストリを使用できますか? 一部の人は、ghcr.io

  • を別のミラーサイトに置き換えたり、texlive を Docker Hub の別のイメージに切り替えたりできるか疑問に思うかもしれません。

  • いいえ、それはお勧めしません。設定が比較的複雑になるためです。ミラーサイトからダウンロードしている場合は、イメージ名を

ghcr.io/ayaka-notes/texlive-full

imageDesc: parseTextExtensions(process.env.ALL_TEX_LIVE_DOCKER_IMAGE_NAMES)[index]

|| texImage.split(':')[1], // In the end, imageName will be put together with imageRoot to form the full image path// The full name will be like: ghcr.io/ayaka-notes/texlive-2023:latest // Set default image name if not provided:

// Export currentImageName to Settings // This is the new created projects' image nameSettings.currentImageName = process.env.TEX_LIVE_DOCKER_IMAGE 既知の問題 使用しているのは

variables.env

TEX_LIVE_DOCKER_IMAGE=texlive/texlive:latest-full // Set default image name if not provided ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texlive:latest-full // This is the new created projects' image name これは

texlive/texlive:latest-full

では正常に動作します。しかし別の texlive イメージ

danteev/texlive:2025-10-15 をプルし、これらの変数を新しいイメージ名に変更しましたが、うまく動作しません:

{"name":"clsi","level":50,"err":{"message":"(HTTP code 404) no such container - No such image: texlive/texlive:latest-full ","name":"Error","stack":"Error: (HTTP code 404) no such container - No such image: texlive/texlive:latest-full ... どうやら、の設定の更新が反映されていないようです。コンパイルは新しいイメージではなく、依然として

イメージの実行を試みています。 再起動やコンテナの削除と再実行を試みましたが、同じ問題が続きました。.

何か解決策はありますか?

技術的な制約により、もし単一の Docker TeXLive イメージ(例えば texlive-fullA:latest )だけを設定した場合、

ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texliveA:latest-full

ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=TeXLiveA

最終更新

役に立ちましたか?