JupyterHub のセットアップ

2018年12月13日

はじめに

複数人利用可能な Jupyter Notebook サーバーである JupyterHub のセットアップについて。

環境

  • CentOS 7.5
  • Anaconda3 5.3.1

JupyterHub のセットアップ

Anaconda はインストール済みとする。JupyterHub のインストール方法は conda と pip があるが、pip だと別途 Node.js を入れる必要があってめんどくさいので、以下では conda を使う。

conda で JupyterHub をインストール。

$ conda install -c conda-forge jupyterhub

試しに実行。

$ jupyterhub --no-ssl

"http://127.0.0.1:8000/" にアクセスして Jupyter のログイン画面が出てきたら OK。

IP やポートを指定する場合は、以下のように起動する。

$ jupyterhub --ip 127.0.0.1 --port 123456

外からつなぐ場合は、ファイアーウォールの設定で公開ポートを追加しておく。

次のようにすると、コンフィグファイルを作成できる。

$ mkdir jupyterhub
$ cd jupyterhub
$ jupyterhub --generate-config

カレントディレクトリに jupyterhub_config.py ができる。このファイルで様々な設定が可能。

認証について

認証方式についていくつか選べるようだが、ここではサーバーマシンのユーザーアカウントでログインする PAM を用いる (デフォルト)。ログイン画面でサーバーマシンのアカウントでログインできれば OK。

ログイン→ログアウト後、再度ログインしようとすると認証に失敗することがあるようである。コンフィグファイルで以下の設定をすると、問題は解決した。

c.PAMAuthenticator.open_sessions = False

ルートディレクトリの指定

コンフィグファイルで以下のように設定するとルートディレクトリを指定できる。

c.Spawner.notebook_dir = '~/work'

自動起動

サーバー起動時に JupyterHub が自動起動するようにするに、サービス化する。

/etc/systemd/system/jupyterhub.service

[Unit]
Description = JupyterHub

[Service]
Environment="PATH=/usr/bin:/home/xxxx/anaconda3/bin"
ExecStart=/home/xxxx/anaconda3/bin/jupyterhub --ip 127.0.0.1 --port 123456
WorkingDirectory=/home/xxxx/jupyterhub

[Install]
WantedBy = multi-user.target

ここではユーザー xxxx のホームディレクトリに Anaconda がインストールされているものとしている。Environment でパスを設定している。Environment の代わりに EnvironmentFile で設定ファイルを指定することもできる。

サーバーを実行。

# systemctl daemon-reload
# systemctl start jupyterhub
# systemctl enable jupyterhub