Triad sou.

Docker DesktopでローカルにOverleaf環境を構築した時のメモ

Docker Desktopのインストールが簡単にできるようになったという記事を拝見したため、Overleaf Community Editionを設定してみたメモを作りました。

Docker Desktopをインストールします

以下から最新版をダウンロードしてインストーラーを実行しました。
インストール後にWindowsからのサインアウトが必要でした。

つまづいたときは以下の記事を参考にすると良いと思います。

docker-compose.ymlをダウンロード

OverleafのGitHubにおいてあるやつをダウンロードし、適当なディレクトリに置いておきます。

Windows PowerShellで設定をしていく

Windows PowerShellを起動して、docker-compose.ymlを配置したディレクトリに移動し、`docker-compose up -d`を実行します。

cd [docker-compose.ymlを配置したディレクトリ]
docker-compose up -d

必要なものが自動で`docker pull`され、コンテナを起動してくれます。
ファイヤーウォールの許可が必要と出たので許可しました。

コンテナの設定

以下の記事の通りにやります、大変参考になりました。

ほとんど同じなのですが、若干使ったコマンドが違うため、以下に自分がやったものをメモします。
`docker ps`で起動中のコンテナの確認をします。

docker ps

起動中のコンテナが表示されます。

CONTAINER ID   IMAGE                   COMMAND                  CREATED              STATUS                        PORTS                NAMES
ec9906335c40   sharelatex/sharelatex   "/sbin/my_init"          About a minute ago   Up About a minute             0.0.0.0:80->80/tcp   sharelatex
b9902eb5b9cf   mongo:4.0               "docker-entrypoint.s…"   About a minute ago   Up About a minute (healthy)   27017/tcp            mongo
1e6d413b422b   redis:5                 "docker-entrypoint.s…"   About a minute ago   Up About a minute             6379/tcp             redis

sharelatexのコンテナID(上ではec9906335c40)を確認し、コンテナ内の`bash`を起動します。

docker exec -it ec9906335c40 bash

起動すると以下のようになるはずです。

root@ec9906335c40:/# 

TeX環境が最小構成で組まれているそうなので、全部入れます(かなり時間がかかります、自分の環境では2時間かかりました)。
タイミングが良ければ以下で出来ます。

tlmgr update --self
tlmgr install scheme-full

が、TeX Liveのバージョン関係でエラーが出る場合があります。

tlmgr: Local TeX Live (2020) is older than remote repository (2021).
Cross release updates are only supported with
  update-tlmgr-latest(.sh/.exe) --update
See https://tug.org/texlive/upgrade.html for details.

となる場合は、`update-tlmgr-latest.sh`を持ってくる必要がありました。以下にある最新のやつを取ってきた方が良いでしょう。

wget http://mirror.ctan.org/systems/texlive/tlnet/update-tlmgr-latest.sh
chmod u+x update-tlmgr-latest.sh
./update-tlmgr-latest.sh -- --upgrade
tlmgr install scheme-full


TeXがインストールできたら、コンテナから出ます。

exit

そしてTeXが全部入ったコンテナを保存します。

docker commit -m "installing all latex packages" ec9906335c40 sharelatex/sharelatex:v1

コンテナの適用

これも以下の記事の通りにやります、大変参考になりました。

Docker Desktopからコンテナを一度停止します。
f:id:triadsou:20210408001916p:plain
そして、最初に配置した`docker-compose.yml`の中身を編集します。

version: '2.2'
services:
    sharelatex:
        restart: always
        # Server Pro users:
        # image: quay.io/sharelatex/sharelatex-pro
        image: sharelatex/sharelatex:v1         # ここを保存したコンテナに変更

日本語化したらちょっと見た目に違和感があったので、私はやりませんでした。

adminの作成

これも以下の記事の通りにやります、大変参考になりました。

Docker Desktopからコンテナを再起動して(これ以降はローカルのOverleaf不使用時はDocker Desktopから停止しておくことができます)、
f:id:triadsou:20210408022246p:plain
以下を実行し、表示されたアドレスに飛んでパスワードを設定します。

docker exec sharelatex /bin/bash -c "cd /var/www/sharelatex; grunt user:create-admin --email=[your e-mail address]"

あとは設定したメールアドレスとパスワードでログインできます。
f:id:triadsou:20210408022701p:plain


以上で完成です。
f:id:triadsou:20210410080121p:plain

\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx]{jsarticle}

\title{サンプル文書}
\date{\today}
\author{著者}

\begin{document}
\maketitle

\begin{abstract}
日本語もテストしてみます。
\end{abstract}

\section{はじめに}
ローカルからテスト。

\[
\frac{1}{\sqrt{2\pi\sigma^2}}
\exp\left\{-\frac{(x-\mu)^2}{2\sigma^2}\right\}
\]

\end{document}

追記:ファイルの保存場所と機能について

Windowsの場合は多分 "C:\Users\ユーザ名\sharelatex_data\data\compiles" 以下にプロジェクトごとのディレクトリが配置されるようです。
残念ながらOverleaf Community EditionにGitHub連携機能はついていないよう・・・
機能の比較は以下のサイトに掲載されています(Community EditionはOverleafのLaTeX editorとProject管理機能がついているだけのもののようです)。