Open3

Overleafローカルで開発する方法

junjun

Overleafのコンテナを起動できないときのエラーハンドリング

状況

Overleafのコンテナを起動できない
jun@jun-desktop:~/src/overleaf-toolkit$ bin/up
Initiating Mongo replica set...
Cannot connect to the Docker daemon at unix:///home/jun/.docker/desktop/docker.sock. Is the docker daemon running?

Dockerは動いているのに

jun@jun-desktop:~/src/overleaf-toolkit$ sudo systemctl status docker
[sudo] jun のパスワード:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset>
Active: active (running) since Sun 2024-11-17 19:16:21 JST; 2h 35min ago

原因

Dockerのコンテキストが desktop-linux に設定されており、これが非標準のソケット (/home/jun/.docker/desktop/docker.sock) に接続しようとしている
→これをデフォルトのコンテキスト (default) に切り替えることで直った

1. 現在のコンテキストを確認

まず、現在使用しているDockerコンテキストを確認します。

docker context show

出力が desktop-linux となっていることを確認します。

2. デフォルトコンテキストに切り替え

デフォルトのコンテキスト (default) に切り替えます。

docker context use default

成功すると、以下のようなメッセージが表示されます。

default

3. コンテキストの確認

再度、現在のコンテキストを確認して default に変更されたことを確認します。

docker context show

出力が default になっていることを確認してください。

4. Dockerコマンドの動作確認

コンテキストを切り替えた後、Dockerが正しく動作するか確認します。

docker ps
  • 期待される結果: 実行中のコンテナの一覧が表示されるか、エラーなしで空のリストが返されます。
  • エラーが表示される場合: まだ問題が解決していない可能性があります。以下の追加手順を試してください。

5. bin/up スクリプトの再実行

コンテキストを切り替えた後、再度 bin/up コマンドを実行してみてください。

bin/up

これで正常に動作するはずです。

junjun

Overleafのオープンソース版をUbuntu上でローカルに構築する手順

1. 必要なソフトウェアのインストール

まず、以下のソフトウェアをインストールします。

sudo apt update
sudo apt install -y git docker.io docker-compose

dockerdocker-composeのバージョンを確認して、正しくインストールされていることを確認してください。

docker --version
docker-compose --version

2. Overleaf Toolkitのクローン

Overleafの公式ツールキットをクローンします。

git clone https://github.com/overleaf/toolkit.git ./overleaf-toolkit
cd overleaf-toolkit

3. 初期設定

初期設定を行います。

bin/init

このコマンドにより、configディレクトリ内に以下のファイルが生成されます。

  • overleaf.rc
  • variables.env
  • version

4. ポート番号の設定

デフォルトでは、Overleafはポート80を使用しますが、他のサービスと競合する可能性があるため、ポート番号を変更します。config/overleaf.rcファイルを編集し、OVERLEAF_PORTの値を適切なポート番号(例: 8000)に変更します。

OVERLEAF_PORT=8000

5. データディレクトリの作成

必要なデータディレクトリを作成します。

mkdir -p data/overleaf data/mongo data/redis data/git-bridge

6. コンテナの起動

Overleafのコンテナを起動します。

bin/up

初回の起動には時間がかかる場合があります。起動後、ブラウザでhttp://localhost:8000/launchpadにアクセスし、管理者アカウントを作成します。

7. 日本語対応のための設定

日本語の文書を扱うために、TeX Liveのフルインストールを行います。

まず、起動中のsharelatexコンテナに入ります。

docker exec -it sharelatex bash

コンテナ内で以下のコマンドを実行し、TeX Liveをフルインストールします。

tlmgr update --self
tlmgr install scheme-full

インストールには時間がかかる場合があります。完了後、コンテナから退出します。

exit

8. 新しいイメージの作成

変更を反映させるため、新しいDockerイメージを作成します。

docker commit sharelatex sharelatex/sharelatex:with-texlive-full

9. 設定ファイルの更新

config/docker-compose.override.ymlファイルを作成し、以下の内容を追加します。

version: '2.2'
services:
  sharelatex:
    image: sharelatex/sharelatex:with-texlive-full

10. コンテナの再起動

コンテナを再起動します。

bin/stop
bin/up

これで、日本語対応が完了し、ローカル環境でOverleafを利用できるようになります。

参考資料

junjun

nginx や Apache などのウェブサーバーがポート 80 を使用している場合、ポートがかぶるから停止するかconfigを変更する