JupyterHub is a multi-user server that manages and proxies multiple instances of the single-user IPython Jupyter notebook server.
Three actors:
multi-user Hub (tornado process)
configurable http proxy (node-http-proxy)
multiple single-user IPython notebook servers (Python/IPython/tornado)
Basic principles:
Hub spawns proxy
Proxy forwards ~all requests to hub by default
Hub handles login, and spawns single-user servers on demand
Hub configures proxy to forward url prefixes to single-user servers
|