1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

爆速でリモートサーバー上のjupyter lab環境を構築したい!

Last updated at Posted at 2023-11-10

はじめに

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

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

↓ 今回やることのイメージ(この記事では説明のためにそれぞれ異なるPort番号に設定していますが、実際に使うときはすべて8080番にするなど揃えたほうがいろいろと便利だと思います:point_up:
image.png

1. リモートサーバーへポートフォワーディング

ローカルのポート8000とリモートサーバーの9000にポートフォワーディングしています。(ポート番号は自由に設定してください。)
ここではremoteというサーバーに接続しています

ssh -L 8000:localhost:9000 remote # オプションで -L Port(local):localhost:Port(remote)を追加している

プロキシジャンプする方法がわからない方のために、最後の補足に~/.ssh/configの設定例を書いているので、参考にしてください:point_up:

2. Dockerfileの作成

以下にjupyter labが使えるようになるDockerfileを示します!PoetryというPythonのパッケージマネージャー併用していますが、知らない方はとりあえず以下のDockerfileと同じディレクトリに以下のpyproject.tomlというファイルを配置してください:pray:(この場合特にサーバー上にPoetryをインストールする必要はありません。)

pyproject.toml
[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"
Dockerfile
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関連の箇所を消すと上手くいくと思います:point_up:

新たにパッケージを追加する場合は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を利用できるはずです。お疲れ様でした:raised_hands:

ポート番号を揃えておくと、ターミナル上に表示されたURLにアクセスするとそのままjupyter labを起動できるメリットがあります

5. まとめ

今回はサーバー上のjuptyer labを手元で利用する方法をご紹介いたしました!Dockerを使うことで簡単に環境構築できるところが便利ですね
どなたかの助けになれば幸いです:punch:

補足. ~/.ssh/config設定

プロキシジャンプしてサーバーに接続できるようにします。以下は一例です。stepが踏み台サーバー、remoteが計算用のサーバーです。

~/.ssh/config
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
1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?