【JupyterNotebook】外部からリモートで接続する

 

JupyterNotebookはローカルで動かすこともできますが、Ubuntuなどのサーバで動かしておくといつでもブラウザでアクセスしてPythonコードを実行できるので便利です。

 

UbuntuでAnacondaをインストールすると、Jupyter Notebookが一緒に入ってきます。

 

そのままではリモートアクセス出来ないのでその設定方法や、screenを使ってUbuntuでjupyternotebookを常時稼動させる方法をご紹介します。

 

 

リモートアクセスの設定

 

設定ファイルを作成します。

 

$ jupyter notebook --generate-config

 

jupyter_notebook_config.pyと言う設定ファイルが作成されるので、それを編集します。

 

$ vim .jupyter/jupyter_notebook_config.py

 

以下のIPアドレスに関する設定項目がありますのでそれを検索します。vimだと”/検索ワード”と打つと検索できます。次のワードに行くときには”n”でいけます。

 

## The IP address the notebook server will listen on.
## c.NotebookApp.ip = 'localhost'

 

以下のように書き換えます。

 

## The IP address the notebook server will listen on.
c.NotebookApp.ip = '0.0.0.0'

 

以下のコマンドでサーバを起動します。

 

$ jupyter notebook 

Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://nuc5i5ryh:8888/?token=db7bf45f24d27f83503481449e5a5ae5fb608103c568dab3&token=db7bf45f24d27f83503481449e5a5ae5fb608103c568dab3

 

tokenはパスワードを設定するときに必要なので覚えておいてください。このtokenはサーバを起動するたびに変わります。token=と言うのが2回続いていますが同じ文字列なので片方のみで良いです。

 

ブラウザで「http://サーバのIP:8888」と入力すると以下のページが表示されます。

 

 

Setup a PasswordでTokenを入れて、新しいパスワードを設定するとサーバにログインできるようになります。

 

screenでサーバを常時稼働させる

 

macのコンソールやWindowsのTeratermでssh接続してjupyter notebookサーバを動かしていると、コンソールを閉じたときにjupyterも止まってしまいます。

 

そうならないようにscreenを使って、セッションを作成して管理しましょう。

 

セッションの作成

$ screen

 

セッションから離れる

# Ctrlを押しながらa、その後Ctrlを離してd
Ctrl-a d

 

セッションの一覧を確認

$ screen -ls
There is a screen on:
	32377.pts-0.nuc5i5ryh	(11/17/2018 06:03:47 AM)	(Detached)

 

32377と言うのはpidです。セッションが複数あるときはこれを指定してセッションを再開します。

 

セッションの再開

$ screen -r <pid>
# もし、セッションが1つしかないなら以下でもok
$ screen -r

 

セッションを再開したら、以下のコマンドでjupyterのサーバを動かしておきましょう。

 

$ jupyter notebook

 

これで、sshが切れてもサーバは稼働し続けます。

 

以上です。お疲れ様でした。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog