読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Herokuの無料枠を使ってJupyterサーバを立てる方法

Learning Jupyter

Learning Jupyter

目次

はじめに

先日、Jupyter Notebookが

非常に便利という記事を書きました。

myenigma.hatenablog.com

myenigma.hatenablog.com

 

多くの人はJupyter Notebookを

ローカル環境で実行していると思います。

また、前述の記事で説明したように、

複数の環境でNotebookを共有したい場合は、

Dropboxなどでファイルを同期する方法もあります。

 

しかし、Pythonがインストールできない環境や、

ちょっとMarkdownのメモや

Pythonで計算したい時などは、

どこかのサーバ上のJupyterにブラウザでアクセスして

使いたくなります。

 

今回、PasSの一つである

Herokuの無料枠を使って、

myenigma.hatenablog.com

Jupyterサーバを作ってみたので、

その方法を紹介したいと思います。

 

Heroku上でJupyterサーバを立てる方法

今回紹介する方法では、

下記のコードを利用します。

github.com

 

まず初めに上記のリポジトリをフォークし、

READMEにあるdeploy to herokuボタンを押します。

(deploy to herokuボタンに関しては下記参照

)

 

あとは、Herokuのページに移動するので、

ログインして、Webサーバの設定をすれば、

簡単に無料dynoで、

Jupyterサーバを立ち上げることができます。

 

ちなみにREADMEにも書かれていますが、

Jupyterサーバを立ち上げるためには、

Herokuの環境変数に

JUPYTER_NOTEBOOK_PASSWORD

という値を設定する必要があります。

これはJupyterサーバにアクセスするための

パスワードになります。

Herokuの環境変数の設定方法は下記の記事を参照下さい。

myenigma.hatenablog.com

 

このソフトの素晴らしい所は、

下記の記事で非常に便利だとおすすめした

myenigma.hatenablog.com

nbextensionがデフォルトでインストールされることです。

github.com

これを使うことで画像ファイルの

ドラッグアンドドロップも簡単にできるようになります。

 

HerokuのWebアプリのURLを知られてしまうと、

個人用のJupyterサーバにアクセスされてしまうので、

パスワード認証に対応しているのもいいですね。

(ただ通常のパスワード認証では簡単に解除されてしまうこともあるので、

URLはあまりオープンにしないほうがいいと思います)

 

Heroku Postgresの無料枠をノートブックのストレージにする

heroku-jupyterのREADMEに書かれている通り、

PostgresのRDBがある場合、

ノートブックなどのデータを

そのデータベースに格納することができます。

 

Herokuのデプロイサーバのデータは、

dynoがスリープすると消えてしまうことがあるので、

データはDBに格納するようにした方が良いと思います。

 

自分の場合、Herokuのアドオンである

Heroku Postgresを使って、

Jupyterのデータストレージにしてみました。

アドオンの設定は、

Herokuのコマンドラインツールや、

HerokuのWeb管理画面から追加することができます。

 

あとはHerokuの環境変数として、

DATABASE_URL

という名前の環境変数に、DBのURLを追加すればOKです。

 

このシステムの問題点

上記の手法で、

簡単にJupyterサーバを立ち上げることが出来ましたが、

いくつか改善したい所もあります。

1. DBからノートブックを抽出したり、ディレクトリを移動させる方法がわからない。

PostgresのDBの中に、

ノートブックファイルが保存されているみたいですが、

そのデータをダウンロードしたり、

データを別のディレクトリに移動させる方法がまだわかりません。。。

 

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

Learning Jupyter

Learning Jupyter