jupyterhub / jupyter-remote-desktop-proxy

Run a Linux Desktop on a JupyterHub
BSD 3-Clause "New" or "Revised" License
105 stars 101 forks source link

Document a high level technical overview on how this project work #100

Open consideRatio opened 3 months ago

consideRatio commented 3 months ago

I think all projects benefit greatly from a technical overview as that allows anyone to better onboard and for example debug issues or contribute to maintenance in various ways.

Here are some notes that I've distilled from learning how this project works in order to help me debug and maintain things in this project. They should absolutely be refined further, but this is similar to the level of overview I think we should provide in the README, for example under a "How it works" heading like for jupyterhub-idle-culler.

jupyter_server_proxy server entrypoints

bundled file

jupyter_server extension

manics commented 3 months ago

websockify also intercepts the VNCserver's TCP socket bind request (e.g. to 5901), transparently changes the internal library call so that the VNCserver binds to <random-port>, and websockify listens on the original specified port (5901) instead. See the Wrap a Program section of https://pypi.org/project/websockify/#description

consideRatio commented 3 months ago

Ah, but we can't make use of that right? We need to specify it so that jsp proxies to what websockify exposes right? I errored without #99 in turbovnc listening to a random TCP port

ashwaqrehman commented 3 months ago

Hi @consideRatio, I am seeking clarification regarding the usage and capabilities of the Jupyter Remote Desktop Proxy, as I found the README lacking in providing an overview of its use cases and functionalities. Our current setup involves a JupyterHub server and five Jupyter Notebook servers. The JupyterHub server serves as a proxy, directing users to their respective Jupyter Notebook servers based on their user group. Now, we have a specific requirement: we want users to access every notebook session through a VNC session to ensure the security of our files and prevent unauthorized downloading and copying of contents.

Here are the questions I need clarification on:

  1. Can we utilize the Jupyter Remote Desktop Proxy to proxy our JupyterHub in a way that enables opening a notebook session within a VNC desktop session?
  2. If such proxying is possible, I'd like to understand whether the VNC sessions opened will be dynamic or static. For instance, if user A logs into the JupyterHub and user B also logs in, will they each receive separate VNC desktop sessions? It's crucial that each user has their own isolated desktop session, ensuring changes made in one user's Jupyter Notebook do not reflect in another user's desktop session.