Jupyter Labにリモートからアクセスする

目次

概要

現在、Jupyter Labというツールを使って統計処理や機械学習を行なっています。

Jupyter Labはサーバとして起動した後に、ブラウザからアクセスして使うツールですが、デフォルトでは、localhostからのアクセスしか受け付けません。

今回は、Jupyter Labでlocalhost以外のリモートからのアクセスを受け付けるようにします。

環境

  • Ubuntu 19.04

Jupyter Notebookでも動作する

今回紹介する設定は、Jupyter Labだけでなく、Jupyter Notebookでも動作します。

そのため、Jupyter Notebookでも、同じように設定して大丈夫です。

設定

まず、デフォルトとなる設定ファイルを次のコマンドで作成します。

jupyter lab --generate-config

もし、Jupyter Notebookの場合はlabではなくnotebookと書きます。

設定ファイルは~/.jupyter/jupyter_notebook_config.pyに作成されます。 設定ファイルの内容を次のように書き換えてください。

c.NotebookApp.ip = '0.0.0.0'

c.NotebookApp.open_browser = False

c.NotebookApp.ip = '0.0.0.0'は、localhost以外からのアクセスを受け付けるために書いています。 c.NotebookApp.open_browser = Falseは、リモートからアクセスする場合には、localhostのブラウザを起動する意味はないので、Jupyter Labの起動時に、ブラウザを起動しないために書いています。

使い方

このような設定をした場合、使い方としては、SSH等でリモートのマシンにアクセスしJupyter Labを起動し、起動時に表示されるトークンをもとに、アクセスするというような形になります。

また、SSH等で起動した場合、そのプロセスが終了すると、それに紐づいたプロセスも終了することがあります。 そこで、ずっと起動させる場合は次のようにして、SSHが終了しても起動し続けるようにしましょう。

$ nohup jupyter lab > nohup.out &

実行時の出力はnohup.outというファイルへ書き込むようにしており、nohup.outには、アクセスの際のトークンが書き込まれているので、その内容を見てアクセスします。

終了する場合は、次のコマンドを実行します。

$ killall jupyter-lab

基本的にこのような使い方になります。

セキュリティについて

サーバとして機能しているのであれば、リモートからアクセスして使いたいとなります。 ただ、通信は暗号化されていないので通信を見られる可能性があります、そのため、信用できるネットワークからアクセスするようにしましょう。 もしくは、localhostにプロキシサーバを用意し、そのプロキシサーバと通信を暗号化するようにして、通信を暗号化するという方法もあります。

詳しい話はここではしませんが、信用できるネットワークからのアクセス以外では対策をしたほうがいいでしょう。

さいごに

設定は簡単できました。

Jupyter Labの設定では他にも色々設定できそうなので、おいおい、それらの設定についても調べてみたいと思います。