はじめに
リモートサーバー上でjupyter labを使おうとしても環境構築がめんどくさい、むずかしい
このような方に、手元のPCでサーバー上のjupyter labをサクッと使う方法をご紹介いたします!特に研究室配属された学生など初心者の方の助けになれば幸いです!
リモートサーバー上にDockerがインストールされていることを前提に説明しますよくわからない方はとりあえずそのまま設定してみてください
↓ 今回やることのイメージ(この記事では説明のためにそれぞれ異なるPort番号に設定していますが、実際に使うときはすべて8080番にするなど揃えたほうがいろいろと便利だと思います)
1. リモートサーバーへポートフォワーディング
ローカルのポート8000とリモートサーバーの9000にポートフォワーディングしています。(ポート番号は自由に設定してください。)
ここではremoteというサーバーに接続しています
ssh -L 8000:localhost:9000 remote # オプションで -L Port(local):localhost:Port(remote)を追加している
プロキシジャンプする方法がわからない方のために、最後の補足に~/.ssh/configの設定例を書いているので、参考にしてください
2. Dockerfileの作成
以下にjupyter labが使えるようになるDockerfileを示します!PoetryというPythonのパッケージマネージャー併用していますが、知らない方はとりあえず以下のDockerfileと同じディレクトリに以下のpyproject.tomlというファイルを配置してください(この場合特にサーバー上にPoetryをインストールする必要はありません。)
[tool.poetry]
name = "lab-env"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"
[tool.poetry.dependencies]
python = ">=3.10,<3.13"
jupyterlab = "^4.0.7"
pandas = "^2.1.1"
numpy = "^1.26.1"
pandarallel = "^1.6.5"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
FROM python:3.10.13-bookworm
WORKDIR /app
ENV PATH /root/.local/bin:$PATH
RUN apt-get update && apt-get install --no-install-recommends -y \
git \
wget \
curl \
nano \
less \
screen \
tmux
RUN curl -sSL https://install.python-poetry.org | python3 -
RUN pip3 install --upgrade pip
RUN mkdir -p /app/src/DATA
COPY . /app
RUN pip3 install --upgrade pip \
&& pip3 install poetry \
&& poetry config virtualenvs.create false
RUN poetry install
CMD [ "bash" ]
Poetry便利なのでおすすめしたいのですが、不要な場合Dockerfileのpoetry関連の箇所を消すと上手くいくと思います
新たにパッケージを追加する場合はjupyter lab上で以下のように入力するとインストールできます(例:scikit-learnを追加したい場合)
!poetry add scikit-learn
!poetry install
3. Dockerfileをビルド & コンテナの起動
以下のコマンドでdockerイメージを作成します!
docker image build -t lab/env:1 .
次に以下のコマンドでdockerコンテナに入ります(remoteのポート番号をコンテナ内のポート番号に接続している)
docker run -it -v ${PWD}:/app -p 9000:9999 --name lab-env lab/env:1
Dockerfile、pyproject.tomlが配置されたディレクトリでコマンドを入力してください。
また、上記のコマンドでカレントディレクトリをdockerコンテナの/appに繋いでいます。そのため加工したいデータがある場合、カレントディレクトリに配置してください。
4. jupyter labを起動
コンテナ内でjupyter labを起動しましょう!以下のコマンドで起動できます。
root@hoge:/app# jupyter lab --allow-root --ip=* --port 9999
起動後ターミナル上で以下のようなURLが表示されるので、?token=以降をコピーしときます。
http://localhost:9999/lab?token=e61d3f****************
最後に手元のPCでhttp://localhost:8000/lab にアクセスしましょう。ポート番号にご注意を!tokenが求められたら、先程コピーしたtokenを打ち込みましょう。
これで手元のPCでリモート上のjupyter labを利用できるはずです。お疲れ様でした
ポート番号を揃えておくと、ターミナル上に表示されたURLにアクセスするとそのままjupyter labを起動できるメリットがあります
5. まとめ
今回はサーバー上のjuptyer labを手元で利用する方法をご紹介いたしました!Dockerを使うことで簡単に環境構築できるところが便利ですね
どなたかの助けになれば幸いです
補足. ~/.ssh/config設定
プロキシジャンプしてサーバーに接続できるようにします。以下は一例です。stepが踏み台サーバー、remoteが計算用のサーバーです。
Host step
HostName 100.100.1.1 (踏み台のIPアドレス or *.jpなどの名前)
User hoge (ユーザーの名前)
Port 100 (ポート指定がある場合)
IdentityFile ~/.ssh/hoge.key (鍵へのPATH)
ForwardAgent yes
IdentitiesOnly yes
PasswordAuthentication no
AddKeysToAgent yes
Host remote
HostName 100.100.1.2 (jupyter使うサーバーのIPアドレス or *.jpなどの名前)
User hoge (ユーザーの名前)
ProxyCommand ssh -W %h:%p step (踏み台サーバー設定)
IdentityFile ~/.ssh/hoge.key (鍵へのPATH)
ServerAliveInterval 60
AddKeysToAgent yes