Relevant Projects

Basics

In this documentation, we will research and likely leverage (most if not all of) the following open-source projects. We will eventually address each in depth within this documentation and will update this section with relevant links as necessary. For now, we provide a brief overview and summary of what we are looking into.

Widgets

If you have ever tried developing a graphical user interface (GUI) for your code, you’ll know how cumbersome it can be. Thankfully, the Widgets package from Project Jupyter greatly simplifies linking your code to a large library of existing “widgets,” which do everything from giving you sliders to fully-interactive maps.

I highly encourage you to see what is possible to embed in your notebooks (and webpages) by scrolling through their examples.

Jupyter nbviewer

Paste a link to a notebook into this form and this website will render the notebook for your reading pleasure.

Docker

Github

Anaconda


BinderHub

BinderHub

taken from the repository description:

BinderHub allows you to BUILD and REGISTER a Docker image using a GitHub repository, then CONNECT with JupyterHub, allowing you to create a public IP address that allows users to interact with the code and environment within a live JupyterHub instance. You can select a specific branch name, commit, or tag to serve.

Repo2Docker

repo2docker

As the title suggest, this package turns a github repository into a docker image that can be built.

taken from the repository description:

repo2docker fetches a git repository and builds a container image based on the configuration files found in the repository.

Binder leverages this to then serve the contents of the image in conjuction with JupyterHub.

Kubernetes

Google is a provider. Links/info should go here to a couple other platforms, some basic information.


JupyterHub

JupyterHub

taken from the repository description:

With JupyterHub you can create a multi-user Hub which spawns, manages, and proxies multiple instances of the single-user Jupyter notebook server.

Project Jupyter created JupyterHub to support many users. The Hub can offer notebook servers to a class of students, a corporate data science workgroup, a scientific research project, or a high performance computing group.

Technical overview

Three main actors make up JupyterHub:

  • multi-user Hub (tornado process)
  • configurable http proxy (node-http-proxy)
  • multiple single-user Jupyter notebook servers (Python/Jupyter/tornado)

Basic principles for operation are:

  • Hub launches a proxy.
  • Proxy forwards all requests to Hub by default.
  • Hub handles login, and spawns single-user servers on demand.
  • Hub configures proxy to forward url prefixes to the single-user notebook servers.

JupyterHub also provides a REST API for administration of the Hub and its users.

I personally run Jupyterhub on a remote server so that I always have access to a secure and familiar environment if I ever need to test out some code and find myself without my laptop. By default, it accepts the login information of just the user who is running it, but we will see later how it can be configured for its intended use as a multi-user authentication hub.