JupyterHub logo

JupyterHub

Scalable multi-user hub for Jupyter notebooks

JupyterHub lets institutions launch a shared Jupyter notebook service, handling authentication, spawning, and proxying for many users via configurable authenticators and spawners, with Docker and Kubernetes support.

JupyterHub banner

Overview

Overview

JupyterHub provides a central hub that launches, proxies, and manages individual Jupyter notebook servers for many users. It is designed for classrooms, research collaborations, and enterprise data‑science teams that need a shared, secure notebook environment.

Core capabilities

The hub uses a Tornado process together with a configurable‑http‑proxy to route traffic. Authentication is pluggable – PAM, OAuth, LDAP, and Kerberos are supported out of the box. Multiple spawners let you run notebooks as local processes, Docker containers, Kubernetes pods, or through batch schedulers, giving full control over resource isolation. An extensive REST API enables programmatic user and server administration.

Getting started and deployment

Install via conda or pip, then start the service with jupyterhub. For quick testing, the official Docker image runs the hub alone; you add a custom image with a jupyterhub_config.py to define authenticators and spawners. Secure the deployment with TLS certificates and configure the proxy as needed. Comprehensive documentation, tutorials, and an active community help you tailor the platform to any scale.

Highlights

Central Hub with Tornado server and configurable HTTP proxy
Pluggable authenticators (PAM, OAuth, LDAP, Kerberos)
Multiple spawners: local, Docker, Kubernetes, batch systems
REST API for programmatic user and server management

Pros

  • Scales from small classrooms to large HPC clusters
  • Extensible via community‑maintained authenticators and spawners
  • Official Docker image simplifies testing and quick start
  • Strong documentation and active community support

Considerations

  • Default PAM authentication requires privileged setup
  • Initial configuration can be complex for secure deployments
  • SSL certificate and domain configuration are manual steps
  • Performance depends on chosen spawner and underlying infrastructure

Managed products teams compare with

When teams consider JupyterHub, these hosted platforms usually appear on the same shortlist.

COC

CoCalc

Collaborative cloud notebooks (Jupyter, LaTeX, SageMath) with real-time editing

Databricks Notebooks logo

Databricks Notebooks

Real-time collaborative notebooks for data & AI on Databricks

Deepnote logo

Deepnote

Collaborative data notebook for Python & SQL with real-time teamwork

Looking for a hosted option? These are the services engineering teams benchmark against before choosing open source.

Fit guide

Great for

  • Universities delivering notebook environments to entire courses
  • Research groups needing shared compute resources with custom auth
  • Companies providing internal data‑science platforms
  • Teams using container orchestration (Docker/Kubernetes) for isolated notebooks

Not ideal when

  • Small personal projects where a single‑user JupyterLab suffices
  • Environments lacking Linux/Unix or Python 3.8+
  • Scenarios requiring zero‑maintenance, fully managed SaaS solutions
  • Users needing out‑of‑the‑box HTTPS without configuring SSL

How teams use it

Classroom notebook server

Students log in with university credentials and receive isolated notebook instances for assignments.

Corporate data-science workbench

Data analysts authenticate via OAuth and launch Docker-based notebooks with pre-installed libraries.

Research HPC cluster

Jobs are spawned through batchspawner, integrating with the cluster scheduler to allocate compute nodes.

Kubernetes-backed analytics platform

JupyterHub runs on a K8s cluster, scaling notebook pods automatically per user demand.

Tech snapshot

Python90%
JavaScript7%
HTML2%
SCSS1%
CSS1%
Shell1%

Tags

ipythonmulti-userpythonjupyter-notebookjupyterhub

Frequently asked questions

How do I secure JupyterHub with HTTPS?

Provide an SSL certificate and key via the `--ssl-key` and `--ssl-cert` options or configure a reverse proxy with TLS termination.

Can I run JupyterHub without root privileges?

Yes, by configuring a non‑privileged user and setting up the proxy and spawner accordingly, as described in the documentation.

Which spawner should I choose for containerized notebooks?

`dockerspawner` is suitable for Docker environments, while `kubespawner` works with Kubernetes clusters; both isolate notebooks in containers.

How is user authentication handled?

JupyterHub supports multiple authenticators such as PAM, OAuth (OAuthenticator), LDAP, and Kerberos, selectable in the configuration file.

Is there an API for automating user management?

Yes, JupyterHub provides a REST API for creating, deleting, and managing users and their notebook servers.

Project at a glance

Active
Stars
8,219
Watchers
8,219
Forks
2,100
LicenseBSD-3-Clause
Repo age11 years old
Last commit5 days ago
Primary languagePython

Last synced 12 hours ago