skillfed

jupyterhub

JupyterHub: A multi-user server for Jupyter notebooks

jupyterhub v5.5.1 375.0K downloads/30d#7,143 on PyPI8,328
Permissive license BSD-3-Clause Active released

What it is and what it does

JupyterHub is a production-grade multi-user server for Jupyter notebooks. It consists of a central Hub (a tornado process), a configurable HTTP proxy, and multiple single-user notebook servers. The Hub handles user login, spawns notebook servers on demand, and configures the proxy to route traffic to each user's server. It is designed to serve notebook instances to classrooms, research teams, data science workgroups, or HPC clusters.

The package depends on 18 runtime libraries including tornado for the web server, SQLAlchemy for user/group management, Pydantic for configuration, and OAuth/PAM libraries for authentication. It ships with a built-in PAM authenticator and LocalProcessSpawner, but supports pluggable authenticators (LDAP, Kerberos, OAuth) and spawners (Docker, Kubernetes, batch schedulers) via separate packages. Configuration is file-based, and the Hub exposes a REST API for administration.

Use it for:

  • Run a shared Jupyter environment for a classroom where each student gets their own isolated notebook server.
  • Deploy a data science workgroup hub where team members access notebooks on a shared server with centralized user management.
  • Set up a research cluster where HPC batch jobs spawn notebook servers for interactive analysis on compute nodes.
  • Provide a Docker-based notebook service where each user's server runs in an isolated container with custom environments.
  • Integrate with enterprise authentication (LDAP, Kerberos, OAuth) to manage notebook access across an organization.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

JupyterHub is a multi-user server that spawns, manages, and proxies multiple single-user Jupyter notebook instances, allowing many users to access notebook servers through a shared Hub.

Yes. JupyterHub is actively maintained, production-stable, has no known vulnerabilities, and low install friction. Install it if you need to serve Jupyter notebooks to multiple users with centralized management. The main gotcha is that you must install and configure the nodejs proxy separately, and running as a non-root user requires additional system setup—but both are documented. Not needed for single-user notebook access.

Install

jupyterhub on PyPI

pip

pip install jupyterhub

uv

uv add jupyterhub

poetry

poetry add jupyterhub

Installing jupyterhub

Before you install

Installation is low-friction as a pure Python package, though the Hub requires nodejs/npm for the proxy component and PAM or another authenticator on the host system. The project is actively maintained with a recent release and 8328 repository stars.

License in practice

BSD-3-Clause is a permissive license; you can use, modify, and distribute JupyterHub with minimal restrictions, provided you include the license notice.

Quickstart

npm install -g configurable-http-proxy
pip install jupyterhub
jupyterhub --generate-config
jupyterhub

Requires nodejs/npm for the proxy, Python 3.8 or greater, a Linux/Unix system, and either PAM or a configured authenticator (e.g., OAuthenticator) for multi-user access.

Verify before relying

  • Whether the default PAM authenticator works out-of-the-box on all Linux distributions without additional system configuration.
  • Performance characteristics when scaling to hundreds or thousands of concurrent users.
  • Whether running as a non-root user requires specific sudoers or systemd configuration beyond what the docs describe.

Package facts

License BSD-3-Clause (permissive)
Python support supports the current Python release (>=3.8)
Install friction low — pure-Python wheel
Runtime dependencies 18 — alembic, async_generator, certipy, idna, importlib_metadata, jinja2, jupyter_events, oauthlib, packaging, pamela, prometheus_client, psutil, pydantic, python-dateutil, requests, SQLAlchemy, tornado, traitlets
Maintenance actively maintained — 4 days since the last release
Last repo commit
First released
Downloads 374,964/month — #7,143 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: jupyterhub-5.5.1-py3-none-any.whl

Keywords: Interactive, Interpreter, Shell, Web, Jupyter

Development Status :: 5 - Production/StableFramework :: JupyterIntended Audience :: DevelopersIntended Audience :: Science/ResearchIntended Audience :: System AdministratorsLicense :: OSI Approved :: BSD LicenseOperating System :: POSIXProgramming Language :: PythonProgramming Language :: Python :: 3

Tags

multi-user jupyter serverjupyter notebook hubshared jupyter environmentjupyter spawner proxyclassroom jupyter setupteam jupyter notebooksjupyterhub deployment
multi-user-serverjupyter-ecosystemauthentication-proxy

More Dynamic Content packages