From a4c6b2b9aa342accadf79968e005771f0735f3f7 Mon Sep 17 00:00:00 2001 From: Olivier Berger Date: Thu, 4 Apr 2019 13:57:11 +0200 Subject: [PATCH] Initial description of the architecture --- ARCHITECTURE.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 ARCHITECTURE.md diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md new file mode 100644 index 0000000..3afc2ff --- /dev/null +++ b/ARCHITECTURE.md @@ -0,0 +1,41 @@ +# Architecture of the container # + +Components +============ + +The container contains the following components : +- An Ubuntu base system +- The tini + supervisord startup and daemon control system +- Nginx Web server +- A backend ("novnc2") Python Web app providing an API (written with + Flask) on port 6079 +- A frontend VueJS Web app displayed to the user, which will wrap noVNC +- noVNC + WebSockify providing the Web VNC client in an HTML5 canvas +- Xvfb running the X11 server in memory +- x11vnc exporting the X11 display through VNC +- and all regular X applications, like the LXDE desktop and apps + +Wiring them all +------------------ + +Internally, Xvfb will be started in DISPLAY :1, then x11vnc will +provide access to it on the default VNC port (5900). + +noVNC will be started listening to HTTP requests on port 6081. +It is possible to connect directly to port 6081 of the container, to +only use the regular noVNC Web interface (provided it is exported by +the container). + +Above noVNC stands the VueJS frontend Web app provided by nginx, which +will proxy the noVNC canvas, and will add some useful features over +noVNC. + +User-oriented features +========================== + +The Web frontend adds the following features : +- upon display of the Web page, the app will detect the size of the + Web browser's window, and will invoke the backend API so as to make + sure the noVNC rendering ajusts to that size +- provide a flash video rendering transporting the sound (???) +