まえおき
PyCon 2015で、いろんな人が、iPython(Jupyter) Notebookは欠かせない!って言うてたので、とりあえずインストールしてみようと思ったのですが、DockerでJupyter鯖たててみたっていう日本語情報がわりとすくなかったので、作業した記録を共有してみます。
dockerのインストール
Debian 8 (Jassie)が母艦なので、
$ sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
# Debian Jessie
deb https://apt.dockerproject.org/repo debian-jessie main
$ sudo apt-get update
$ sudo apt-get install docker-engine
$ sudo usermod -a -G docker yi01
※ yi01 は私のユーザ名です。適宜よみかえてください。
JupyterHubのDockerイメージの作成
ここには若干罠があります。
まず、Docker Hubに上がっている
は、認証まわりの実装がなく、jupyterhub_config.py
を作って dockerの-v
オプションなどをつかって認証方法などを定義する必要があります。
が、1からいろいろつくるのは面倒なので、jupyterが用意してくれてるGitHubのOAuthを使うexampleを使います。
$ git clone https://github.com/jupyter/oauthenticator.git
$ cd oauthenticator
で、READMEにしたがい、userlistを編集します。
diff --git a/example/addusers.sh b/example/addusers.sh
index eb2d86b..cedd272 100644
--- a/example/addusers.sh
+++ b/example/addusers.sh
@@ -7,6 +7,6 @@ for line in `cat userlist`; do
user=`echo $line | cut -f 1 -d' '`
echo "adding user $user"
useradd -m -s /bin/bash $user
- cp -r /srv/ipython/examples /home/$user/examples
- chown -R $user /home/$user/examples
+# cp -r /srv/ipython/examples /home/$user/examples
+# chown -R $user /home/$user/examples
done
diff --git a/example/userlist b/example/userlist
index e69de29..d8f3556 100644
--- a/example/userlist
+++ b/example/userlist
@@ -0,0 +1 @@
+YusukeIwaki admin
注意点としては、userlistを編集するだけだと、docker build
で
cp: cannot stat ‘/srv/ipython/examples’: No such file or directory
chown: cannot access ‘/home/YusukeIwaki/examples’: No such file or directory
こんな感じのエラーがでてコケちゃうので、シェルスクリプトもちょっとだけ編集します。
編集を終えたら、
$ cd example
$ docker build -t jupyter/oauthenticator .
で、Succeedっぽいログが出たら、
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
jupyter/oauthenticator latest 209358b449b6 24 seconds ago 934.9 MB
jupyter/jupyterhub latest fd5445f17a96 5 days ago 934.8 MB
GitHubのOAuth設定
こんな感じで設定します。
コールバックのホスト名やポート番号は、適宜よみかえてやってください。
GitHubサイト側でOAuthの認証情報の登録がおわったら、そこで得られたClientIDとシークレットを
diff --git a/example/env b/example/env
index 9f32b5c..7a921da 100644
--- a/example/env
+++ b/example/env
@@ -1,5 +1,5 @@
# add your github oauth config to this file,
# and run the container with `docker run -it -p 9000:8000 --env-file=env jupyter/oauthenticator`
-GITHUB_CLIENT_ID=
-GITHUB_CLIENT_SECRET=
-OAUTH_CALLBACK_URL=
+GITHUB_CLIENT_ID=21d***********e7a3
+GITHUB_CLIENT_SECRET=2ea1f***********************e9da7
+OAUTH_CALLBACK_URL=http://localhost:8001/hub/oauth_callback
こんなかんじで設定します。
起動
$ docker run -it -p 8001:8000 --env-file=env jupyter/oauthenticator
で、ブラウザからアクセスすると・・・
キタ━━━━(゚∀゚)━━━━!! となります。