Skip to content

Jupyter extensions for running an RStudio rsession proxy

License

BSD-3-Clause, BSD-3-Clause licenses found

Licenses found

BSD-3-Clause
LICENSE
BSD-3-Clause
LICENSE.txt
Notifications You must be signed in to change notification settings

jupyterhub/jupyter-rsession-proxy

jupyter-rsession-proxy

TravisCI build status

jupyter-rsession-proxy provides Jupyter server and notebook extensions to proxy RStudio.

Screenshot

If you have a JupyterHub deployment, jupyter-rsession-proxy can take advantage of JupyterHub's existing authenticator and spawner to launch RStudio in users' Jupyter environments. You can also run this from within Jupyter. Note that RStudio Server Pro has more featureful authentication and spawning than the standard version, in the event that you do not want to use Jupyter's.

This extension used to proxy Shiny server as well, however that functionality has been separated.

Installation

Pre-reqs

Install rstudio

Use conda conda install rstudio or download the corresponding package for your platform

Note that rstudio server is needed to work with this extension.

Install jupyter-rsession-proxy

Install the library via pip:

pip install jupyter-rsession-proxy

Or via conda:

conda install -c conda-forge jupyter-rsession-proxy

Example

rocker/binder contains an example installation which you can run on binder.

Launch binder

Multiuser Considerations

This extension launches an rstudio server process from the jupyter notebook server. This is fine in JupyterHub deployments where user servers are containerized since other users cannot connect to the rstudio server port. In non-containerized JupyterHub deployments, for example on multiuser systems running LocalSpawner or BatchSpawner, this not secure. Any user may connect to rstudio server and run arbitrary code.

Configuration with Environment Variables

The following behavior can be configured with environment variables

| Environment Variable | Effect | Default Value | Notes | JUPYTER_RSESSION_PROXY_WWW_FRAME_ORIGIN | The value of the www-frame-origin flag to rserver | same | | | RSERVER_TIMEOUT | Idle timeout flag to rserver in minutes | 15 | must be numeric and positive | | RSESSION_TIMEOUT | Idle timeout flag to rsession in minutes | 15 | must be numeric and positive | | NB_USER | Fallback name of the Notebook user, if password database lookup fails | getuser.getpass() ||