| 
 | 1 | +# Architecture of the container #  | 
 | 2 | + | 
 | 3 | +Components  | 
 | 4 | +============  | 
 | 5 | + | 
 | 6 | +The container contains the following components :  | 
 | 7 | +- An Ubuntu base system  | 
 | 8 | +- The tini + supervisord startup and daemon control system  | 
 | 9 | +- Nginx Web server  | 
 | 10 | +- A backend ("novnc2") Python Web app providing an API (written with  | 
 | 11 | + Flask) on port 6079  | 
 | 12 | +- A frontend VueJS Web app displayed to the user, which will wrap noVNC  | 
 | 13 | +- noVNC + WebSockify providing the Web VNC client in an HTML5 canvas  | 
 | 14 | +- Xvfb running the X11 server in memory  | 
 | 15 | +- x11vnc exporting the X11 display through VNC  | 
 | 16 | +- and all regular X applications, like the LXDE desktop and apps  | 
 | 17 | + | 
 | 18 | +Wiring them all  | 
 | 19 | +------------------  | 
 | 20 | + | 
 | 21 | +Internally, Xvfb will be started in DISPLAY :1, then x11vnc will  | 
 | 22 | +provide access to it on the default VNC port (5900).  | 
 | 23 | + | 
 | 24 | +noVNC will be started listening to HTTP requests on port 6081.  | 
 | 25 | +It is possible to connect directly to port 6081 of the container, to  | 
 | 26 | +only use the regular noVNC Web interface (provided it is exported by  | 
 | 27 | +the container).  | 
 | 28 | + | 
 | 29 | +Above noVNC stands the VueJS frontend Web app provided by nginx, which  | 
 | 30 | +will proxy the noVNC canvas, and will add some useful features over  | 
 | 31 | +noVNC.  | 
 | 32 | + | 
 | 33 | +User-oriented features  | 
 | 34 | +==========================  | 
 | 35 | + | 
 | 36 | +The Web frontend adds the following features :  | 
 | 37 | +- upon display of the Web page, the app will detect the size of the  | 
 | 38 | + Web browser's window, and will invoke the backend API so as to make  | 
 | 39 | + sure the noVNC rendering ajusts to that size  | 
 | 40 | +- provide a flash video rendering transporting the sound (???)  | 
 | 41 | + | 
0 commit comments