19
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[メモ] らずぱい: JupyterHubでマルチユーザ対応

Last updated at Posted at 2016-08-21

概要

  • らずぱいにJupyter notebook のつづき

  • GitHub - jupyterhub/jupyterhub: Multi-user server for Jupyter notebooksをインストールして、マルチユーザ対応。

  • JupyterHub

    With JupyterHub you can create a multi-user Hub which spawns, manages, and proxies multiple instances of the single-user Jupyter notebook (IPython notebook) server.
    JupyterHub provides single-user notebook servers to many users. For example, JupyterHub could serve notebooks to a class of students, a corporate workgroup, or a science research group.
    JupyterHubを使用すると、シングルユーザーJupyterノートブック(IPythonノート)サーバーの複数のインスタンスをスポーン、管理、プロクシするマルチユーザハブを作成することができます。JupyterHubは、多くのユーザーにシングル・ユーザ・ノートブック・サーバを提供します。例えば、JupyterHubは学生のクラス、企業のワークグループ、または科学研究グループに(Jupyter)notebookを提供することができます。

    だそうです. (↑グーグル翻訳改)

  • SSL関係はやらない.

環境

  • Raspberry Pi 3
  • 2016-05-27-raspbian-jessie-lite.img
  • microSD 8GB
  • らずぱいにJupyter notebook のつづきになるので、Jupyterインストール済みの環境

手順

nodejs/npm

  1. sudo apt-get install npm nodejs-legacy
  2. sudo npm install -g configurable-http-proxy

JupyterHub

  1. インストール。管理ユーザjupyterhub追加

JupyterHubとSudoSpawnerのインストール.

sudo pip3 install jupyterhub
sudo pip install git+https://github.com/jupyter/sudospawner

ユーザjupyterhub作成. /etc/shadowにアクセス権を持つファイルのグループに追加.

sudo useradd jupyterhub
sudo usermod -a -G shadow jupyterhub
sudo mkdir /etc/jupyterhub
sudo chown jupyterhub /etc/jupyterhub
cd /etc/jupyterhub
sudo -u jupyterhub jupyterhub --generate-config


2. `sudo -u jupyterhub vi /etc/jupyterhub/jupyterhub_config.py`<br>3箇所変更

    ```py:/etc/jupyterhub/jupyterhub_config.py
...
c.JupyterHub.confirm_no_ssl = True
...
c.JupyterHub.spawner_class = 'sudospawner.SudoSpawner'
...
c.Spawner.notebook_dir = '~/notebooks'
...
  1. sudo visudo

    • JUPYTER_USERSに使用するユーザを入れる。
    以下追加

...

comma-separated whitelist of users that can spawn single-user servers

Runas_Alias JUPYTER_USERS = pi, jns

# the command(s) the Hub can run on behalf of the above users without needing a password# the exact path may differ, depending on how sudospawner was installed

Cmnd_Alias JUPYTER_CMD = /usr/local/bin/sudospawner

# actually give the Hub user permission to run the above command on behalf# of the above users without prompting for a password

jupyterhub ALL=(JUPYTER_USERS) NOPASSWD:JUPYTER_CMD


4. `sudo -u pi mkdir ~/notebooks`<br>使用するユーザのホームフォルダに <font color='red'>**notebooks** フォルダを作成</font>する. 

5. 動作確認
`cd /etc/jupyterhub;  sudo -u jupyterhub /usr/local/bin/jupyterhub`
ブラウザを立ち上げて、`http://<ラズベリーパイのIP>:8000/`へアクセス。
Linuxのログインユーザ・パスワードをいれて、Jupyter NotebookのページへすすめばOK.

    ```bash:実行例
pi@raspberrypi:~ $ cd /etc/jupyterhub;  sudo -u jupyterhub /usr/local/bin/jupyterhub
[I 2016-08-21 06:56:01.839 JupyterHub app:622] Loading cookie_secret from /etc/jupyterhub/jupyterhub_cookie_secret
[W 2016-08-21 06:56:02.009 JupyterHub app:304] 
    Generating CONFIGPROXY_AUTH_TOKEN. Restarting the Hub will require restarting the proxy.
    Set CONFIGPROXY_AUTH_TOKEN env or JupyterHub.proxy_auth_token config to avoid this message.
    
    [W 2016-08-21 06:56:02.030 JupyterHub app:757] No admin users, admin interface will be unavailable.
[W 2016-08-21 06:56:02.030 JupyterHub app:758] Add any administrative users to `c.Authenticator.admin_users` in config.
[I 2016-08-21 06:56:02.031 JupyterHub app:785] Not using whitelist. Any authenticated user will be allowed.
[W 2016-08-21 06:56:03.107 JupyterHub app:883] pi not running.
[W 2016-08-21 06:56:04.205 JupyterHub app:883] jns not running.
[I 2016-08-21 06:56:04.259 JupyterHub app:1231] Hub API listening on http://127.0.0.1:8081/hub/
[W 2016-08-21 06:56:04.276 JupyterHub app:959] Running JupyterHub without SSL. There better be SSL termination happening somewhere else...
[I 2016-08-21 06:56:04.277 JupyterHub app:968] Starting proxy @ http://*:8000/
06:56:05.087 - info: [ConfigProxy] Proxying http://*:8000 to http://127.0.0.1:8081
06:56:05.098 - info: [ConfigProxy] Proxy API at http://127.0.0.1:8001/api/routes
[I 2016-08-21 06:56:05.205 JupyterHub app:1254] JupyterHub is now running at http://127.0.0.1:8000/
...
... >>> ブラウザでアクセス
...
[I 2016-08-21 06:56:17.998 JupyterHub log:100] 302 GET / (@127.0.0.1) 9.73ms
[I 2016-08-21 06:56:18.033 JupyterHub log:100] 302 GET /hub (@127.0.0.1) 1.93ms
[I 2016-08-21 06:56:18.069 JupyterHub log:100] 302 GET /hub/ (@127.0.0.1) 3.30ms
[I 2016-08-21 06:56:18.253 JupyterHub log:100] 200 GET /hub/login (@127.0.0.1) 161.63ms

JupyterHub01.png

systemdで自動起動

  1. sudo vi /lib/systemd/system/jupyterhub.service

    /lib/systemd/system/jupyterhub.service

[Unit]
Description=Jupyterhub

[Service]

User=jupyterhub
ExecStart=/usr/local/bin/jupyterhub
WorkingDirectory=/etc/jupyterhub

[Install]

WantedBy=multi-user.target

2. サービス有効・開始・状態

    ```bash
sudo systemctl enable jupyterhub
sudo systemctl start jupyterhub
sudo systemctl status jupyterhub

その他

  • c.JupyterHub.confirm_no_ssl = True--no-ssl にしてますが、ググるとすぐでてきて、簡単に対応できたと思います。(一度、動作確認してますが、ローカルネットワークならいらないかと...説明が面倒...)
19
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?