JupyterHub¶
JupyterHub is the best way to serve Jupyter notebook for multiple users. It can be used in a classes of students, a corporate data science group or scientific research group. It is a multi-user Hub that spawns, manages, and proxies multiple instances of the single-user Jupyter notebook server.
To make life easier, JupyterHub have distributions. Be sure to take a look at them before continuing with the configuration of the broad original system of JupyterHub. Today, you can find two main cases:
If you need a simple case for a small amount of users (0-100) and single server take a look at The Littlest JupyterHub distribution.
If you need to allow for even more users, a dynamic amount of servers can be used on a cloud, take a look at the Zero to JupyterHub with Kubernetes .
Four subsystems make up JupyterHub:
a Hub (tornado process) that is the heart of JupyterHub
a configurable http proxy (node-http-proxy) that receives the requests from the client’s browser
multiple single-user Jupyter notebook servers (Python/IPython/tornado) that are monitored by Spawners
an authentication class that manages how users can access the system
Besides these central pieces, you can add optional configurations through a config.py
file and manage users kernels on an admin panel. A simplification of the whole system can be seen in the figure below:
JupyterHub performs the following functions:
The Hub launches a proxy
The proxy forwards all requests to the Hub by default
The Hub handles user login and spawns single-user servers on demand
The Hub configures the proxy to forward URL prefixes to the single-user notebook servers
For convenient administration of the Hub, its users, and services, JupyterHub also provides a REST API.
The JupyterHub team and Project Jupyter value our community, and JupyterHub follows the Jupyter Community Guides.
Contents¶
Distributions¶
A JupyterHub distribution is tailored towards a particular set of use cases. These are generally easier to set up than setting up JupyterHub from scratch, assuming they fit your use case.
The two popular ones are:
Zero to JupyterHub on Kubernetes, for running JupyterHub on top of Kubernetes. This can scale to large number of machines & users.
The Littlest JupyterHub, for an easy to set up & run JupyterHub supporting 1-100 users on a single machine.
Installation Guide¶
Getting Started¶
Technical Reference¶
Contributing¶
We want you to contribute to JupyterHub in ways that are most exciting & useful to you. We value documentation, testing, bug reporting & code equally, and are glad to have your contributions in whatever form you wish :)
Our Code of Conduct (reporting guidelines) helps keep our community welcoming to as many people as possible.
Upgrading JupyterHub¶
We try to make upgrades between minor versions as painless as possible.
API Reference¶
Troubleshooting¶
About JupyterHub¶
Indices and tables¶
Questions? Suggestions?¶
Full Table of Contents¶
- Installation Guide
- Getting Started
- Technical Reference
- Technical Overview
- JupyterHub URL scheme
- Security Overview
- Authenticators
- Spawners
- Services
- Writing a custom Proxy implementation
- Running proxy separately from the hub
- Using JupyterHub’s REST API
- The Hub’s Database
- Working with templates and UI
- Configuring user environments
- Configuration examples
- Configure GitHub OAuth
- Using a reverse proxy
- Run JupyterHub without root privileges using
sudo
- The JupyterHub API
- Troubleshooting
- Contributors
- A Gallery of JupyterHub Deployments
- Changelog