How to run a Linux Desktop on JupyterHub

Jupyter Remote Desktop Proxy is designed to run a singleuser VNC Linux desktop in an isolated container, so typically you’d use it with something like KubeSpawner or DockerSpawner. Since each user has their own container isolation is guaranteed.

Since it’s a full Linux desktop you can run anything you want, such as JupyterLab accessed via a browser in the desktop. However users can still bypass Jupyter Remote Desktop Proxy and just use the standard JupyterLab/notebook interface to access files.

If you want to guard against that too you’re into the realm of Secure/Trusted Research Environments (there’s probably 10+ different names for the same concept) where you’re also blocking network access (since it’s trivial to copy a file out). There’s some mention of those in Run Linux Desktop Apps in mybinder.org / your JupyterHub, and it should be doable, but you’ll need to invest a lot of time yourself to customise it, and to ensure there are no loopholes. Even after all that, it’s impossible to prevent a determined user from copying files out, at some point you need to rely on contractual/legal agreements with your user.

1 Like