🦑

Apple siliconのMacでローカルのOverleaf環境を構築する

2024/02/08に公開

はじめに

Apple siliconのMacでローカルのOverleaf環境を構築する。
Overleafは代表的なオンラインLaTeXエディタであるが、ローカルに環境構築することもできる。
本記事では、前提として必要なDockerの環境構築と、Overleafの環境構築、日本語に対応させる方法を説明する。

Docker環境構築

Dockerの公式ページから、Apple siliconのMac用のDeocer Desktop for Macをインストールする。
Dockerアプリを起動して、Dockerのアカウントでログインする。

Overleaf環境構築

ターミナルで以下の手順でコマンドを実行する。

  1. Dockerデーモンが起動していることを確認する。
    以下のコマンドがエラーなしで実行されれば良い。
docker ps

エラーが出た場合は、Dockerデーモンが起動していないので、Dockアプリを起動する。

  1. Dockerのデフォルトプラットフォームを設定する。
    Dockerコマンドが実行される際のデフォルトプラットフォームをlinux/arm64/v8に設定する
export DOCKER_DEFAULT_PLATFORM=linux/arm64/v8
  1. ローカルのOverleafのファイルを配置するディレクトリを作成して、移動する。
    ローカルのOverleaf用のディレクトリを作成した方が、失敗した時に削除しやすい。
    ディレクトリ名は何でも良い。
mkdir overleaf_local
cd overleaf_local
  1. Overleafの2つのgithubレポジトリをcloneする。
git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit
git clone https://github.com/overleaf/overleaf; cd overleaf
  1. Dockerイメージをビルドする。
cd server-ce
make build-base
make build-community
  1. 初期設定とタグ付けをする。
cd ../../overleaf-toolkit
bin/init
docker tag sharelatex/sharelatex sharelatex/sharelatex:$(cat config/version)
  1. データを格納するディレクトリを作成する。
mkdir data/redis data/nginx data/sharelatex data/mongo data/git-bridge
  1. Dockerコンテナを起動する。
bin/up

起動するとログが表示される。

  1. ブラウザからhttp://localhost/launchpadにアクセスし、Admin accountを作成する。

  2. ターミナルに表示されるログを止める。
    bin/upの実行後、ログが表示され続けるので、Ctrl + Cで停止する。

Overleafの起動と停止

  • 起動
    以下のコマンドで、既に設定したが停止しているOverleafサービスを起動する。
    ローカルのOverleafのファイルを配置するディレクトリによって、~/overleaf_localを変更する。
~/overleaf_local/overleaf-toolkit/bin/start

ブラウザからhttp://localhostにアクセスすれば、ローカルのOverleafを使える。

  • 停止
~/overleaf_local/overleaf-toolkit/bin/stop

日本語に対応させる方法

日本語の文章を作成するために、LuaLaTeXや、pLaTeX、upLaTeXを使用する場合は追加で設定する必要がある。
公式の解説日本語の解説が詳しく説明している。

  1. コンテナのTeX Live環境を更新する。
    コンテナの起動中に、コンテナの中に入る。
docker exec -it sharelatex bash

コンテナ内で、TeX Liveを更新する。

tlmgr update --self
tlmgr install scheme-full
exit
  1. pLaTeXやupLaTeXを使うために、シンボリックリンクを貼る。

コンテナの内部に入る。

overleaf-toolkit/bin/shell

platexやuplatexのシンボリックリンクを貼る。

ln -s /usr/local/texlive/2023/bin/aarch64-linux/uplatex /usr/local/bin/uplatex
ln -s /usr/local/texlive/2023/bin/aarch64-linux/upbibtex /usr/local/bin/upbibtex
ln -s /usr/local/texlive/2023/bin/aarch64-linux/platex /usr/local/bin/platex
ln -s /usr/local/texlive/2023/bin/aarch64-linux/pbibtex /usr/local/bin/pbibtex
ln -s /usr/local/texlive/2023/bin/aarch64-linux/mendex   /usr/local/bin/mendex

2023aarch64-linuxは環境によって異なるので、確認して適宜変更する。

# texliveのversionを確認する
ls /usr/local/texlive/
# プラットフォームを確認する
ls /usr/local/texlive/2023/bin/
  1. 変更を保存する。
    コンテナに加えた変更を新しいイメージとしてコミットする。
docker commit sharelatex sharelatex/sharelatex:[tag-name]

[tag-name]は任意の文字列を設定する。公式の解説ではwith-texlive-fullとしている。

overleaf-toolkit/configの配下にdocker-compose.override.ymlを作成し、以下を記述する。

---
version: '2.2'
services:
    sharelatex:
        image: sharelatex/sharelatex:[tag-name]

versionoverleaf-toolkit/lib/docker-compose.base.ymlなどのtoolkitの記述と同じにする必要がある。デフォルトではversion2.2とすれば良い。

  1. コンテナを再起動して変更を反映させる。
bin/stop && bin/docker-compose rm -f sharelatex && bin/up

参考

  1. https://github.com/overleaf/toolkit/blob/master/doc/quick-start-guide.md#create-the-first-admin-account
  2. https://github.com/overleaf/toolkit/blob/master/doc/ce-upgrading-texlive.md
  3. https://github.com/overleaf/toolkit/issues/127
  4. https://qiita.com/hrn/items/eb7114933dfb4155e106
  5. https://qiita.com/lyulu/items/e9c8b3da6cbc731f169d

Discussion