Jupyter Notebookを使う〜【メモ1】Vultrのubuntu18.04サーバに構築(just installed...)
最近気になってチェックをしたいことが増え、どこにいてもアクセスして使えるJupyter Notebook環境をVultrのVPSサーバ(ubuntu18.04)に作る。今回はrootでインストールしJupyterにアクセスできたところまでのメモ。
なお、既にあるdockerイメージを使えばもっと手軽に構築できそうだが、今回はanacondaとその利用に必要なパッケージを順に入れて作ってみる。
◆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: skipTo 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ユーザを作成しそのユーザで起動する、など、リモートで使う環境としてブラッシュアップする予定。
参考)