JupyterHub allows users to
interact with a computing environment through a webpage. As most devices
have access to a web browser, JupyterHub makes it is easy to provide and
standardize the computing environment for a group of people (e.g., for a
class of students or an analytics team).
This project will help you set up your own JupyterHub on a cloud/on-prem
k8s environment and leverage its scalable nature to support a large
group of users. Thanks to Kubernetes,
we are not tied to a specific cloud provider.
This project is under active development so information and tools may
change. You can be a part of this change! If you see anything that is
incorrect or have any questions, feel free to post on the community
Discourse forum or reach out in the
Gitter chat or create an
issue at the issues
you have tips or deployments that you would like to share, see the
Community Resources section.
This documentation is for Helm chart version 0.11.1 that deploys
JupyterHub version 1.3.0 and other other components versioned
in hub/images/requirements.txt. The Helm chart requires Kubernetes version >=1.14.0
and Helm >=2.16.
Helm 2 is deprecated since of November 2019, and will receive bugfixes
until August 13,
the Helm references in this documentation are Helm v3.
This guide will help you deploy and customize your own JupyterHub on a
cloud. While doing this, you will gain valuable experience with:
A cloud provider such as Google Cloud, Microsoft Azure, Amazon
EC2, IBM Cloud…
Kubernetes to manage resources on the cloud
Helm v3 to configure and control the packaged JupyterHub
JupyterHub to give users access to a Jupyter computing
A terminal interface on some operating system
It’s also possible you end up getting some experience with:
Docker to build customized image for the users
Domain registration to make the hub available at
For a more elaborate introduction to the tools and services that
JupyterHub depends upon, see our page about that.
This section describes a how to setup a Kubernetes cluster on a
selection of cloud providers and environments, as well as initialize
Helm, a Kubernetes package manager, to work with it.
This tutorial starts from Step Zero: Your Kubernetes cluster and
describes the steps needed for you to create a complete initial
JupyterHub deployment. Please ensure you have a working installation of
Kubernetes and Helm before proceeding with this section.
JupyterHub can be configured and customized to fit a variety of
deployment requirements. If you would like to expand JupyterHub,
customize its setup, increase the computational resources available for
users, or change authentication services, this guide will walk you
through the steps. See the Configuration Reference for a
list of frequently used configurable helm chart fields.
This section provides information on managing and maintaining a staging
or production deployment of JupyterHub. It has considerations for
managing cloud-based deployments and tips for maintaining your
This section holds all the references and resources that helped make
this project what it is today.
This section gives the community a space to provide information on
setting up, managing, and maintaining JupyterHub.
We recognize that Kubernetes has many deployment options. As a project
team with limited resources to provide end user support, we rely on
community members to share their collective Kubernetes knowledge and
If you would like to help improve this guide or Helm chart, please see the issues
well as the contributor
We hope that you will use this section to share deployments with on a
variety of infrastructure and for different use cases. There is also a
community maintained list of users of this Guide and the JupyterHub Helm Chart.
This guide and the associated helm chart would not be possible without
the amazing institutional support from the following organizations (and
the organizations that support them!)
UC Berkeley Data Science Division
Berkeley Institute for Data Science
Cal Poly, San Luis Obispo
Simula Research Institute