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
taken from the repository description:
BinderHub allows you to
BUILDandREGISTERa 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
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
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.