Appendix — Jupyter server proxy applications
`jupyter-server-proxy is a general purpose application for Jupyter classic notebooks and JupyterLab that can be used to launch and proxy arbitrary web applications running in the same context as the Jupyter server.
Applications can be launched from the Jupyter notebook homepage New menu or the JupyterLab launcher. The path to the application can be given as a “nice” application name on the Jupyter notebook application server path.
The jupyter-server-proxy
idea is useful in several respects:
- a container running a Jupyter server and jupyter-server-proxy only needs to expose only a single http port (the one that the notebook / JupyterLab is accessed via). All other applications can be proxied along the same path using the same port;
- many simple web applications applications do not have any authentication; proxying an application behind a Jupyter server means you can make use of the notebook server authenticator to provide a challenge before providing access to the application;
- the
jupyter-server-proxy
will start an application when it is first requested, so applications do not need to be started when the environment is started; applciations are only started when requested. If a repeated request is made for an application that has already been started, the user will be taken directly to it.
Multiple applications can be installed and accessed using custom jupyter-server-proxy
templated extensions.
14.2 OpenRefine
jupyterserverproxy-openrefine
is a jupyter-server-proxy extension for running OpenRefine, a Java based web app for cleaning tabiularo datasets.
14.3 pgweb
jupyter-pgweb-proxy
is a jupyter-serverproxy extension for running pgweb
, a browser based management UI for PostrSQL databases.
14.4 nb_tensorspace_server_proxy
The nb_tensorspace_server_proxy
extension wraps a locally running version of the Tensorspace.js playground behind a proxied simple web server.
The application can be launched from the classic Jupyter notebook homepage New menu, or the JupyterLab launcher.
The TensorSpace.js* playground provides an interactive web application that will attempt to recognise a user entered handwritten digit and visualise the activation of a simple pre-trained tensorflow network:
14.5 Tensorflow Playground
The nb_tensorflow_playground_serverproxy
jupyter-server-proxy extension wraps a locally running version of the Google Tensorflow Playground
behind a proxied simple web server.
14.6 serverproxy_convnet_mnist
The serverproxy_convnet_mnist
jupyter-server-proxy extension wraps a locally running version of the original ConvNetJS web demo behind a proxied simple web server.
14.7 serverproxy_tfjs_demos
The serverproxy_tfjs_demos
jupyter-server-proxy extension wraps a locally running version of the Visualizing training with tfjs-vis
scrollytelling article behind a proxied simple web server.
14.8 Handwritten Digit Prediction
Handwritten Digit Prediction is a jupyter-server-proxy extension that proxies this original simple web demo or using tensorflow.js to recognise handwritten digits running via a simple http web server.
14.9 RStudio / Shiny Applications
jupyter-rsession-proxy
is a proxy for the popular RStudio IDE.
A separate jupyter-shiny-proxy
can be used to proxy R/Shiny applications.
May, 2021: the MyBinder demo for the extension seems to be broken at the moment but this is a generally a well tested extension and should be fixable; it is installed by default in many Jupyter/R Docker images.