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の設定では他にも色々設定できそうなので、おいおい、それらの設定についても調べてみたいと思います。