chill2me

出来事、レビュー、気になったこと、など。音楽とICTが多め。

Jupyter Notebookを使う〜【メモ1】Vultrのubuntu18.04サーバに構築(just installed...)

最近気になってチェックをしたいことが増え、どこにいてもアクセスして使えるJupyter Notebook環境をVultrVPSサーバ(ubuntu18.04)に作る。今回はrootでインストールしJupyterにアクセスできたところまでのメモ。

なお、既にあるdockerイメージを使えばもっと手軽に構築できそうだが、今回はanacondaとその利用に必要なパッケージを順に入れて作ってみる。

 

www.vultr.com

 

◆step01:サーバを作成する(ubuntu18.04)

VutrのコンパネでDeploy New Serverする。

 Location:Tokyo
 OS:ubuntu 18.04x64
 Server Size:25GB SSD(月額$5USドル)
 Additional Features:なし

 

◆step02:作成したサーバにsshログインし最新パッケージにする

ログインする。
 ssh -i <設定したSSHプラウベートキー>  root@<付与されたIP> 

 

パッケージを最新にする。
 apt update
 apt list --upgradable
 apt install -y
 apt upgrade -y

 

◆step03:anacondaをインストールする

anacondaのLinuxインストーラーをダウンロードする。
*2018/10/20時点のpython3.7の最新版
 curl -O https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh
 

関連ライブラリをインストールする。

 apt-get -y install python3-pip
 apt-get -y install default-jre
 apt-get install python3-dev

 

ダウンロードしたインストーラーを実行する。
 bash Anaconda3-5.3.0-Linux-x86_64.sh

 

VSCodeは入れない。「no」で回答する

Visual Studio Code License: https://code.visualstudio.com/license

Do you wish to proceed with the installation of Microsoft VSCode? [yes|no]
>>> no 

Jupyter Nootebookをアップグレードする。

pip3 install --upgrade notebook

 

◆step04:ファイアウォールで最低限のポートのみアクセスを許可する

iptablesをいつも使うが、ufwはまだ使ったことがなかった。良い機会なので今回ufwを使う。実際触ったり調べてみて、細かな設定を必要としない場合に手軽に扱えることがわかった。

 

状態を確認する。
 ufw status

 

デフォルトは全て許可されていてフルオープンだった。下記ポリシーでアクセスを限定し最低限のセキュリティを担保する。なお、8888番ポートはJupyter Notebookにて利用するポート。

  • サーバへのアクセスを許可するポートは22(ssh),80(http),443(443),8888
  • ただし、sshについてはlimitポリシーとし、同IPアドレスからの接続は30秒間に6回までに制限する。

 

ufwを使って上のポリシーを設定する
 ufw enable
 ufw allow ssh
 ufw limit ssh
 ufw allow 8888/tcp

 

上で許可した設定が追加されたことを確認する。
 ufw status verbose

 

出力例)

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To  Action  From
-- ------ ----
22/tcp  LIMIT IN  Anywhere
8888/tcp  ALLOW IN  Anywhere
22/tcp (v6)  LIMIT IN  Anywhere (v6)
8888/tcp (v6)  ALLOW IN  Anywhere (v6)

 

◆step05:Jupyter Notebookを起動する

Jupyter Notebookを起動する。
 jupyter notebook --allow-root --ip=0.0.0.0 --no-browser

 

出力例)

[I 07:53:32.242 NotebookApp] JupyterLab extension loaded from /home/covanew/anaconda3/lib/python3.7/site-packages/jupyterlab
[I 07:53:32.243 NotebookApp] JupyterLab application directory is /home/covanew/anaconda3/share/jupyter/lab
[I 07:53:32.248 NotebookApp] Serving notebooks from local directory: /home/covanew
[I 07:53:32.249 NotebookApp] The Jupyter Notebook is running at:
[I 07:53:32.249 NotebookApp] http://(ホスト名 or 127.0.0.1):8888/?token=<トークン文字列>
[I 07:53:32.249 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 07:53:32.250 NotebookApp]

Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://(ホスト名 or 127.0.0.1):8888/?token=<トークン文字列>

 

◆step06:Jupyter Notebookにブラウザを使ってアクセスする

ブラウザでアクセスする。

 「http://<サーバのIPアドレス>:8888」を開く

step5で出力された<トークン文字列>をブラウザ上に入力する。

 

 

以上。今回はrootユーザで起動して試すところまで。
次回、jupyterユーザを作成しそのユーザで起動する、など、リモートで使う環境としてブラッシュアップする予定。

 

参考)