Skip to content

qnib/jupyterport

Repository files navigation

jupyterport

GOLANG version of JupyterHub.

Do not use this in production, it is for prototyping purposes

Scope

This project aims to provide:

TODO

Features

  • Login (no password used for now)
  • session handling, so that a user can authenticate
  • handle notebook startup
    • DockerDesktop
    • DockerEE
  • provide admin overview

Proxy

  • Proxy http request to jupyterhub
  • Proxy websocket from notebook to kernel (use NotebookApp.websocket_url : Unicode to leverage service?)

Example Stack

JupyterPort has a pluggable backend system to spawn the notebooks.

  • docker uses /var/run/docker.sock to fire up plain containers (no docker service or kubernetes pod)
  • kubernetes uses a kubernetes service account to create a deployment and a service for each notebook

Try it yourself

The Kubernetes.md file has a how-to going to the steps to set up the kubernetes stack.

General

Some pieces are missing, including

  • Create a random token and show it in the notebook list
  • use a reverse proxy, so that the notebook does not need to expose a port, but is access through the JupyterPort webserver
    • Static route so that user-mynotebook is proxied
    • make this dynamic when a notebook is created
  • the port selection should be randomized, so that one does not know in advance which ports are unused

Docker

Kubernetes

In addition to the general TODOs, the kubernetes spawner has more..

  • Direct URL is not showing correctly