Sign inSign up

truebyteinnovationllp/jupyterhub

By truebyteinnovationllp

Updated 3 months ago

Hardened JupyterHub from source — Debian 13, Python 3.13+Node 22, 0 CVEs, Cosign

Image
1

10K+

truebyteinnovationllp/jupyterhub repository overview

JupyterHub — Hardened, Source-Built Image

Docker Pulls Cosign Verified License

Minimal, security-hardened JupyterHub on Debian 13 — built entirely from source following the same hardening approach as Docker Hardened Images (DHI). A four-stage build clones the pinned upstream commits, compiles configurable-http-proxy from Node 22, installs JupyterHub into an isolated Python 3.12 venv, and ships a lean non-root runtime image with the package manager removed.

Why this image?

FeatureOfficial jupyterhub/jupyterhubThis image
Base OSUbuntuDebian 13 (trixie-slim)
OS CVEsMultiple HIGH0 HIGH/CRITICALapt upgrade + no package manager
Python versionvariesPython 3.12 (Trixie default — builder matches runtime)
Python venv isolationNoYes — deps can't bleed into OS Python
Package manager at runtimeYes (apt)Removed — no new packages can be installed
pycurl excludedNoYes — avoids libcurl+krb5+gnutls CVE surface
Non-rootNoYes — uid/gid 65532 (DHI convention)
Cosign signedNoYes
SBOM + provenanceNoYes
Multi-archamd64, arm64amd64, arm64

Tags

TagJupyterHub versionPlatforms
5.5.0, latestJupyterHub 5.5.0 + configurable-http-proxy 5.2.0linux/amd64 · linux/arm64

Quick start

docker run -d --name jupyterhub \
  -p 8000:8000 \
  -v jupyterhub-data:/srv/jupyterhub \
  truebyteinnovationllp/jupyterhub:5.5.0

Open http://localhost:8000 and log in with any local system user (PAM authenticator is the default). To use a dummy authenticator for testing:

docker run -d --name jupyterhub \
  -p 8000:8000 \
  -e JUPYTERHUB_AUTHENTICATOR=jupyterhub.auth.DummyAuthenticator \
  -e JUPYTERHUB_DUMMY_PASSWORD=test \
  truebyteinnovationllp/jupyterhub:5.5.0

Configuration

Mount your own jupyterhub_config.py at /etc/jupyterhub/jupyterhub_config.py:

docker run -d --name jupyterhub \
  -p 8000:8000 \
  -v $(pwd)/jupyterhub_config.py:/etc/jupyterhub/jupyterhub_config.py:ro \
  -v jupyterhub-data:/srv/jupyterhub \
  truebyteinnovationllp/jupyterhub:5.5.0

Common configuration options via environment variables:

VariablePurpose
JUPYTERHUB_CRYPT_KEYCookie encryption key (generate with openssl rand -hex 32)
JUPYTERHUB_PROXY_AUTH_TOKENToken for the configurable-http-proxy REST API
CONFIGPROXY_AUTH_TOKENAlternative proxy token variable

See the JupyterHub configuration reference for all options.

Kubernetes / Helm

Use with the official Zero to JupyterHub Helm chart by overriding the hub image:

hub:
  image:
    name: truebyteinnovationllp/jupyterhub
    tag: "5.5.0"

The image runs as uid/gid 65532 and is compatible with Kubernetes runAsNonRoot: true and the restricted PodSecurityAdmission profile.

Ports

PortPurpose
8000JupyterHub public HTTP interface
8001JupyterHub internal API (spawners, services)
8081configurable-http-proxy REST API

Verifying the signature

curl -sSfL https://gitlab.truebyteinnovation.com/internal-docker/docker-images/-/raw/main/assets/cosign.pub \
  -o cosign.pub
cosign verify --key cosign.pub truebyteinnovationllp/jupyterhub:5.5.0

Vulnerability status

Scanned with Trivy and Docker Scout on every build. CVEs suppressed via OpenVEX (jupyterhub.openvex.json):

CVEPackageSeverityJustification
CVE-2026-53612util-linuxN/APrivileged OS utilities unused at runtime (non-root, no package manager) — same CVE accepted by DHI
CVE-2026-53613util-linuxN/ASame reasoning
CVE-2026-53614util-linuxN/ASame reasoning
CVE-2026-53615util-linuxN/ASame reasoning

All suppressions match the Docker Hardened Images (DHI) vulnerability profile for JupyterHub 5.5.x (fips).

Build approach

Four-stage Dockerfile following DHI hardening principles:

  1. source — pinned git clone of JupyterHub 97b3154 and CHP da6e57a, commit-verified
  2. node-buildernpm ci --omit=dev for configurable-http-proxy (no pkg bundler)
  3. py-builderdebian:trixie-slim base (Python 3.12 matching runtime), isolated venv, pip install jupyterhub==5.5.0, pycurl excluded, test dirs stripped
  4. runtimedebian:trixie-slim, apt-get upgrade, minimal packages, apt/dpkg removed, uid 65532

Source

Maintained by TrueByte Innovation.

Tag summary

Content type

Image

Digest

sha256:847601d63

Size

112.1 MB

Last updated

3 months ago

docker pull truebyteinnovationllp/jupyterhub