JupyterHub Configuration Guide

Documentation


How to setup runtime/values.yaml

PrePuller settings

Example:

prePuller:
  extraImages:
    aup-cpu-notebook:
      name: ghcr.io/amdresearch/aup-cpu-notebook
      tag: v1.0
    ...

    #for frontpage
    aup-jupyterhub-hub:
      name: ghcr.io/amdresearch/aup-jupyterhub-hub
      tag: v1.3.5-multilogin

It is recommended to include as many images as you plan to deploy. This section ensures that all images are pre-downloaded on each node, preventing delays during container startup due to image downloads.

Network settings

Two access methods are supported:

  1. NodePort access via <ip>:<port> (port > 30000)

  2. Domain access (Default) <Your.domain>

Example NodePort setup. With this configuration, ingress should be disabled.

proxy:
  service:
    type: NodePort
    nodePorts:
      http: 30890
  chp:
    networkPolicy:
      enabled: false
ingress:
  enabled: false
  # Explicitly set the ingress class to traefik
  ingressClassName: traefik
  hosts:
  tls:
    - hosts:
      # Let K3s/Traefik auto-generate certificates with Let's Encrypt
      secretName: 

Example Domain setup. Note that you should obtain the domain from your IT department.

proxy:
  service:
    type: ClusterIP
# Add Ingress configuration specifically for K3s
ingress:
  enabled: true
  # Explicitly set the ingress class to traefik
  ingressClassName: traefik
  hosts:
    - <Your.domain>
  tls:
    - hosts:
        - <Your.domain>
      # Let K3s/Traefik auto-generate certificates with Let's Encrypt
      secretName: jupyter-tls-cert

Hub image setup

Update this section with your built Docker image.

  image:
    name: ghcr.io/amdresearch/aup-jupyterhub-hub
    tag: v1.3.5-multilogin
    pullPolicy: IfNotPresent
    pullSecrets:
      - github-registry-secret

Update Announcement on login page

Edit the stringData section with HTML content to display announcements on the login page.

  extraFiles:
    announcement.txt:
      mountPath: /usr/local/share/jupyterhub/static/announcement.txt
      stringData: |
          <div class="announcement-box" style="padding: 1em; border: 1px solid #ccc; border-radius: 6px; background-color: #f8f8f8;">
          <h3>Welcome to AUP Remote Lab!</h3>
          <p>This is a <strong>dynamic announcement</strong>.</p>
          <p>My location is on <code>runtime/values.yaml</code></p>
          <p>You can edit this via <strong>ConfigMap</strong> without rebuilding the image.</p>
          </div>

Provide Github OAuth Credentials

Refer to this article for information on setting up GitHub OAuth with GitHub Organizations.

Fill in this section with credentials from your organization’s OAuth app. Please note that the oauth_callback_url should match your actual deployment. For a simple GitHub OAuth-only solution, use https://<Your.domain>/hub/oauth_callback. Since we are using MultiAuth, we need github to identify that we are using GitHubOAuth.

    GitHubOAuthenticator:
      oauth_callback_url: "https://<Your.domain>/hub/github/oauth_callback"
      client_id: "AAAA"
      client_secret: "BBB"
      allowed_organizations:
        - <YOUR-ORG-NAME>
      scope:
        - read:user
        - read:org

NFS Storage setting

Refer to Cluster-NFS-Setting.

  storage:
    dynamic:
      storageClass: nfs-client

After

You should run helm upgrade to apply the changes.