selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Zero to JupyterHub with Kubernetes logo

Self-host Zero to JupyterHub with Kubernetes

4.4.4

Helm chart for deploying JupyterHub on Kubernetes

ReleaseOpen SourceOther
Updatedlast week
LanguagePython
Setup difficultyAdvanced
Stars
1 725
Storage
1Gi
Requires
Helm, Kubernetes, SQLite (via PVC)
Docker
quay.io/jupyterhub/k8s-hub

What is Zero to JupyterHub with Kubernetes?

Zero to JupyterHub with Kubernetes is a Helm chart and guide that lets you run JupyterHub on your own Kubernetes cluster. It gives organizations a way to provide shared, reproducible Jupyter notebook environments to many users — students, researchers, or data teams — with persistent storage and configurable authentication. The chart bundles JupyterHub itself plus a configurable HTTP proxy, the KubeSpawner for launching user pods, and support for PVC-backed home directories. It works on any Kubernetes 1.28+ cluster (cloud or on-prem) with Helm 3.5+. Container images come from the quay.io/jupyterhub registry for the hub, proxy, single-user servers, and helper components. The project is community-maintained with backing from UC Berkeley, Cal Poly, Simula Research Institute, and 2i2c.

Should you self-host Zero to JupyterHub with Kubernetes?

Zero to JupyterHub with Kubernetes scores 64/100 on selfhost.directory (how scoring works) and ranks #4 of 11 in Container Orchestration. It has 1 725 GitHub stars.

It shipped 9 stable releases in the past year. The latest, 4.4.4, came out on 20 October 2026. New versions land roughly every 5 weeks.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is Other-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is Docker Engine (80/100, 72 220 stars). It scores higher overall, so compare the two before you pick. See Zero to JupyterHub with Kubernetes vs Docker Engine side by side.

Features

  • Auto HTTPS with Let's Encrypt
  • Configurable authentication
  • Custom user images
  • High availability considerationsFull HA requires additional JupyterHub work; sqlite-pvc backend limits parallel hub pods.
  • Multi-user JupyterHub
  • Network Policies
  • Persistent user storage
  • Prometheus Metrics
  • Resource limits and guarantees

Zero to JupyterHub with Kubernetes README

Zero to JupyterHub with Kubernetes releases & version history

FAQ

Does the chart support high availability?

Full HA is limited because JupyterHub isn't designed to run in parallel; sqlite-pvc backend requires Recreate deployment strategy which prevents multiple hub pods.

Can I use a static PVC for user storage?

Yes, the chart supports both dynamic and static PVC provisioning for user home directories.

How do I enable Prometheus metrics scraping?

Set hub.networkPolicy.interNamespaceAccessLabels to 'accept' and configure Prometheus pod labels, or add explicit ingress rules for the Prometheus/vmagent pod.

What version of JupyterHub is installed in the Helm Chart?

Each Helm chart release packages a specific JupyterHub version. Check the Helm chart repository release notes for the exact versions.

How does billing for this work?

JupyterHub itself doesn't handle billing; costs are managed through your cloud provider. See the cost projection guide for considerations.

I thought I had deleted my cloud resources, but they still show up. Why?

You probably deleted the specific nodes but not the Kubernetes cluster controlling them. Kubernetes will recreate nodes to maintain the desired resource state.

More in Kubernetes

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…