This framework uses dynamic reverse proxy (using Traefik) to expose containerized Jupyter notebook servers in response to custom REST endpoints. This helps to build Binder-like abilities for a custom notebook repository or REST endpoints. This can lead to simplified deployments then using Jupyter Hub in certain use cases.
As an example: nbapp integrated with a scientific content management system, RAMADDA, lets its users interact with the published Jupyter notebooks with a click: Any Jupyter notebook on http://weather.rsmas.miami.edu/repository or https://unidata.github.io/drilsdown/examples.html can be made online with a click.
A python-flask app (nbapp), defines routes to spawn dockerized Jupyter notebook servers with labels that lets traefik to reverse proxy dynamically to the notebook server.
Although traefik and flask can run natively on linux servers, entire deployment is packaged in containers for ease of deployment using docker-compose. Read section below for deployment.
Directory deploy contains example deployments.
-
Directory traefik contains docker compose files (with commentary for modifications) for some use cases. In simplest case it amounts to
docker-compose up -d
for deployment. -
For Virtual Machine based deployments, a Vagrantfile sample is provided in deploy. This is based on virtual box as a provider but it can be adapted to other Vagrant providers.
-
If nginx or apache are used as webserver, sample configurations are provided (with SSL termination) in deploy directory using mylabserver.com as an example host.
Please raise an issue about your deployment needs or questions. We might be able to provide support.