Use JupyterLab by default

By default JupyterHub uses the classic Notebook frontend. Several alternative UIs are supported, one of which is JupyterLab. This provides a more featured UI, with a whole ecosystem of extensions. It looks like this (borrowed from the JupyterLab documentation):

JupyterLab's modern UI.

Installation

To enable, first install jupyterlab in the notebook environment not the JupyterHub environment.

# Install using conda
$ conda install -c conda-forge jupyterlab

# Or install with pip
$ pip install jupyterlab

Next, optionally install the JupyterLab Hub extension into the notebook (not the JupyterHub) environment. This isn’t strictly necessary, but adds a JupyterHub control panel to the JupyterLab UI allowing easier login/logout.

$ jupyter labextension install @jupyterlab/hub-extension

Finally, configure JupyterHub to start start JupyterLab instead of Jupyter Notebook by default on startup.

# Start users in JupyterLab by default
c.YarnSpawner.default_url = '/lab'

# Start JupyterLab with the hub extension (only required if you
# installed the JupyterLab Hub extension above)
c.YarnSpawner.cmd = ['python -m yarnspawner.jupyter_labhub']

For more information see the JupyterLab on JupyterHub and JupyterLab Hub Extension documentation.

Useful Extensions

JupyterLab has a whole ecsystem of useful extensions. As above, extensions must be installed in the notebook environment to properly work. Below we list a few that may be useful.