はじめに

リモートサーバー上でjupyter labを使おうとしても環境構築がめんどくさい、むずかしい
このような方に、手元のPCでサーバー上のjupyter labをサクッと使う方法をご紹介いたします!特に研究室配属された学生など初心者の方の助けになれば幸いです!

リモートサーバー上にDockerがインストールされていることを前提に説明しますよくわからない方はとりあえずそのまま設定してみてください

image.png

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
广告
将在 10 秒后关闭
bannerAds