Python
Jupyter
JupyterHub

JupyterHubのnotebookディレクトリ設定の癖がすごい

はじめに

  • 社内に JupyterHub環境 を導入した際、各ユーザーのnotebookディレクトリを ~ から変更しようとした
  • 設定の仕方がわかりにくく、小一時間はまった

やりたいこと

  • 以下のようなディレクトリが掘ってある
  • 各ユーザーがサーバー起動した時には /srv/jupyterhub/notebooks/{username} を表示したい
  • 各ユーザーは、別のユーザーのディレクトリにもアクセスできるようにしたい 
/srv/jupyterhub/notebooks
 |
 +- user1
 +- user2
 +- ...

やりかた

  • jupyterhub_config.py に以下2行を追加
c.Spawner.notebook_dir = "/srv/jupyterhub/notebooks"
c.Spawner.default_url = "/tree/{username}"

解説

  • c.Spawner.notebook_dir

    • jupyterのWebUIから見えるファイル構造のルート
    • jupyterのWebUIでホームボタンおした時に飛ぶ先
    • ここで指定したディレクトリには、jupyterのWebUIからアクセスできるようになる
  • c.Spawner.default_url

    • WebUIからアクセスしたときに、最初に表示するURL
    • {username} はログインユーザーのユーザー名に読み替えられる
    • c.Spawner.notebook_dir で指定したルートディレクトリは、URLでは /tree に対応する

参考

ハマりポイント

  • default_url/treenotebook_dir に相当するということに気がつくまでに、時間がかかった

ちなみに、上記ドキュメントのサンプルだと、以下のようにかいてある。

c.Spawner.notebook_dir = "/"
c.Spawner.default_url = "/tree/home/{username}"

この場合、設定としては以下のようになる

  • サーバー内のディレクトリにWebUIからフルアクセスできる
  • 各ユーザーがサーバーを開いときは /home/{username} からはじまる