实验环境
Ubuntu / Debian
Python3.5+

 

JupyterHub 简介

安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理_jupyterhub
JupyterHub是为多个用户提供Jupyter notebook / Jupyterlab的最佳方法。它可以用于一类学生,公司数据科学小组或科学研究小组。它是一个多用户集线器,可以生成,管理和代理单用户Jupyter notebook / Jupyterlab服务器的多个实例。

tips:JupyterHub是为多个用户提供 notebook / jupyterlab 的最佳方法,所以请确保notebook和jupyterhub是否安装成功。

Jupyter Notebook and JupyterLab

JupyterHub是管理Notebook / JupyterLab的工具,在了解JupyterHub之前,我们有必要去了解一下Notebook 和 JupyterLab的功能。

Jupyter Notebook 简介

Jupyter Notebook是一个开源Web应用程序,允许您创建和共享包含实时代码,方程式,可视化效果和叙述文本的文档。用途包括:数据清理和转换,数值模拟,统计建模,数据可视化,机器学习等。

JupyterLab 简介

JupyterLab是用于Jupyter notebooks,代码和数据的基于Web的交互式开发环境。JupyterLab非常灵活:配置和安排用户界面以支持数据科学,科学计算和机器学习中的各种工作流程。JupyterLab是可扩展的且模块化的:编写可添加新组件并与现有组件集成的插件。

Jupyter Notebook / JupyterLab 作为功能服务,JupyterHub则帮助多个用户使用这个功能服务

安装 JupyterHub

更新 pip 版本

python3 -m pip install --upgrade pip

安装 npm 和 nodejs

apt-get update
# 更新
sudo apt-get install npm
# 安装npm
sudo npm install n -g
# 安装n模块
sudo n lts
# 安装最新长期支持版 node。不要低于版本12

安装 Jupyter Notebook

pip install notebook

安装 JupyterLab

pip install jupyterlab

tips:根据自己的要求安装对应的功能服务 (jupyter notebook / jupyterlab)

安装 JupyterHub

sudo npm install -g configurable-http-proxy

sudo python3 -m pip install jupyterhub

启动 JupyterHub

检查 /etc/hosts 文件内是否有关于 hostname 的域名解析

vi /etc/hosts

127.0.0.1	【HOSTNAME】
# 将【HOSTNAME】替换为对应的值

生成 jupyterhub_config.py

jupyterhub --generate-config -f 【PATH】
# 将【PATH】替换为对应的文件位置。若不指定PATH,则默认为当前文件夹

配置 jupyterhub_config.py

#c.Spawner.default_url = '/lab'
# /lab对应jupyterlab 默认为notebook
c.JupyterHub.port = 80
# 指定暴露端口
c.PAMAuthenticator.encoding = 'utf8'
c.Authenticator.whitelist = {'root','admin', 'jupyter', 'aiker'}
# 指定可使用用户
c.LocalAuthenticator.create_system_users = True
c.Authenticator.admin_users = {'root', 'admin'}
# 指定admin用户
c.JupyterHub.statsd_prefix = 'jupyterhub'
c.Spawner.notebook_dir = '/volume1/study/' 
#jupyterhub自定义目录
c.Spawner.cmd=['jupyterhub-singleuser']

默认情况下,要真正的实现分配用户账号,需要满足以下两点要求:

  1. c.Authenticator.whitelist 指定了用户名
  2. 在系统中创建了该用户(adduser / useradd)

tips: 默认情况下,密码为系统中该用户对应的密码

在存放jupyterhub_config.py的文件夹下执行jupyterhub启动服务
安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理_ubuntu_02

配置 jupyterhub_config.py 小结

在原有基础上配置HTTPS服务

c.JupyterHub.port = 443
# 更换端口为443

c.JupyterHub.ssl_cert = '【对应的 fullchain.pem 位置】'
c.JupyterHub.ssl_key = '【对应的 privkey.pem 位置】'

重新启动即可实现 https 的配置
安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理_服务器_03

配置GitHub登入

官方文档
1. 首先,需要创建一个GitHub OAuth应用程序
创建GitHub OAuth应用程序
安装 JupyterHub 踩坑指南 —— 如何通过 JupyterHub 实现多用户管理_ubuntu_04
2. 配置jupyterhub_config.py
根据创建OAuth应用时的信息,添加以下配置信息即可

from oauthenticator.github import GitHubOAuthenticator
c.JupyterHub.authenticator_class = GitHubOAuthenticator
import os
os.environ['GITHUB_CLIENT_ID'] = '【对应的CLIENT ID值】'
os.environ['GITHUB_CLIENT_SECRET'] = '【对应的CLIENT SECRET值】'
os.environ['OAUTH_CALLBACK_URL'] = 'http://【URL PATH】/hub/oauth_callback'

更新 ing