Skip to main content
JupyterHub is an easy way to interact with a computing environment through a webpage. This tutorial guides you through deploying JupyterHub on Qovery using the official Helm chart.

Prerequisites

  • Existing Qovery cluster
  • Dedicated project and environment ready

Installation

1

Add JupyterHub Helm Repository

  1. Navigate to your environment in Qovery Console
  2. Add a new Helm repository:
    • Repository name: JupyterHub
    • Kind: HTTPS
    • URL: https://hub.jupyter.org/helm-chart/
2

Create JupyterHub Service

Create a new Helm service with the following configuration:Basic Settings:
  • Application name: JupyterHub
  • Chart name: jupyterhub
  • Version: 3.3.7
  • Allow cluster-wide resources: Enabled
YAML Override:
The type: ClusterIP configuration is necessary for JupyterHub to work properly within the Qovery cluster.
3

Add Network Configuration

Configure the service port:
  • Service name: jupyterhub-proxy-public
  • Service port: 80 (HTTP)
  • External port: 443
  • Port name: jupyterhub-proxy-public-p80
This configuration exposes JupyterHub’s proxy service externally through HTTPS.
4

Deploy Chart

Click the Play button to deploy JupyterHub:
Deploy JupyterHub
Wait for the deployment to complete. This may take several minutes as JupyterHub pulls images and initializes.
5

Access JupyterHub

Once deployed, access JupyterHub via the Link button in the Qovery interface:
Access JupyterHub link
You’ll be directed to the JupyterHub login page.

Basic Configuration

Default Authentication

By default, JupyterHub uses a dummy authenticator that accepts any username/password. For production use, configure proper authentication.

Customize Your Deployment

This is a basic setup. For advanced configurations, consult:

Common Customizations

Use GitHub OAuth for authentication:
Add YOUR_CLIENT_SECRET as a secret variable in Qovery.
Set resource limits for user notebooks:
HTTPS is automatically handled by Qovery. Just ensure your port configuration is correct.
Use a custom notebook image:
Enable persistent storage for user notebooks:

Accessing User Notebooks

Default Spawner

Users can spawn notebooks with different configurations:
  • Minimal environment
  • Data science stack (pandas, numpy, scipy)
  • TensorFlow/PyTorch for machine learning

Custom Profiles

Define multiple profiles for users:

Troubleshooting

  • Check pod logs in Qovery Console
  • Verify cluster has sufficient resources
  • Ensure cluster-wide resources are enabled
  • Check for image pull errors
  • Verify the service port configuration
  • Check that the port name matches
  • Ensure HTTPS is properly configured
  • Check ingress logs for errors
  • Check resource quotas on the cluster
  • Verify storage provisioner is working
  • Review user pod logs
  • Check for image pull errors
  • Ensure persistent storage is configured
  • Verify PVC (PersistentVolumeClaim) is created
  • Check storage class is available
  • Review volume mount configuration

Scaling JupyterHub

Horizontal Scaling

Scale the hub component:

Resource Allocation

Adjust hub resources:

Helm Services

Learn about deploying with Helm

Advanced Settings

Configure service advanced settings

Environment Variables

Manage secrets and variables

Storage Configuration

Configure persistent storage