diff --git a/MinimalMetaDesktop-noVNC/Dockerfile b/MinimalMetaDesktop-noVNC/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..1691575ed507ccd7cf66df6f844d626372a9ee05
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/Dockerfile
@@ -0,0 +1,112 @@
+FROM ubuntu:18.04
+MAINTAINER Stefano Alberto Russo <stefano.russo@gmail.com>
+
+#----------------------
+# Basics
+#----------------------
+
+# Set non-interactive
+ENV DEBIAN_FRONTEND noninteractive
+
+# Update first of all
+RUN apt-get update
+
+# Utilities
+RUN apt-get install -y nano telnet unzip wget supervisor build-essential python-dev git-core openjdk-8-jre
+
+
+#------------------------
+# "Meta" user
+#------------------------
+
+# Add group. We chose GID 65527 to try avoiding conflicts.
+RUN groupadd -g 65527 metauser
+
+# Add user. We chose UID 65527 to try avoiding conflicts.
+RUN useradd metauser -d /home/metauser -u 65527 -g 65527 -m -s /bin/bash
+
+# Add metuaser user to sudoers
+RUN adduser metauser sudo
+
+# Install suodo
+RUN apt-get install sudo -y
+
+# No pass sudo (for everyone, actually)
+COPY files/sudoers /etc/sudoers
+
+#------------------------
+# Supervisor conf
+#------------------------
+
+# Supervisord conf
+COPY files/supervisord.conf /etc/supervisor/
+
+#------------------------
+# VNC
+#------------------------
+
+# Install xvfb that triggers minimal install of X base packages and xterm as sample application
+RUN apt-get install xvfb xterm  -y
+
+# Install base packages for VNC server and headless desktop (2)
+COPY files/tigervnc-1.8.0.x86_64.tar.gz /opt/tigervnc-1.8.0.x86_64.tar.gz
+RUN cd /opt && tar -zxvf tigervnc-1.8.0.x86_64.tar.gz && mv tigervnc-1.8.0.x86_64 tigervnc
+
+# Supervisord configuration
+COPY files/supervisord_vnc.conf /etc/supervisor/conf.d/
+COPY files/run_vnc.sh /etc/supervisor/conf.d/
+COPY files/run_novnc.sh /etc/supervisor/conf.d/
+RUN chmod 755 /etc/supervisor/conf.d/run_vnc.sh
+RUN chmod 755 /etc/supervisor/conf.d/run_novnc.sh
+
+# Web VNC (noVNC) v0.6.1.
+# NOTE: this is a custom version from Doro Wu (fcwu.tw@gmail.com).
+# TODO: Check differences and maybe move to 0.6.2
+COPY files/noVNC.tar.gz /usr/lib/
+RUN cd /usr/lib/ && tar -zxvf noVNC.tar.gz
+COPY files/index.html /usr/lib/noVNC
+
+RUN apt-get install -y net-tools
+
+# Supervisord configuration
+COPY files/supervisord_novnc.conf /etc/supervisor/conf.d/
+
+# X environment setup/startup
+RUN apt-get install fluxbox -y
+COPY files/xstartup /opt/tigervnc/
+RUN chmod 755 /opt/tigervnc/xstartup
+
+# Prepare for logs
+RUN mkdir /home/metauser/.logs && chown metauser:metauser /home/metauser/.logs
+
+# Rename metauser home folder as a "vanilla" home folder
+RUN mv /home/metauser /metauser_home_vanilla
+
+# Add fluxbox customisations
+COPY files/dot_fluxbox /metauser_home_vanilla/.fluxbox
+RUN chown -R metauser:metauser /metauser_home_vanilla/.fluxbox
+COPY files/background.jpg /usr/share/images/fluxbox/background.jpg
+
+# Give write access to anyone to the home folder so the entrypoint will be able
+# to copy over the /home/matauser_vanilla into /home/metauser (for Singularity)
+RUN chmod 777 /home
+
+
+#----------------------
+# Entrypoint
+#----------------------
+
+# Copy entrypoint
+COPY files/entrypoint.sh /
+
+# Give right permissions
+RUN chmod 755 /entrypoint.sh
+
+# Set entrypoint
+ENTRYPOINT ["/entrypoint.sh"]
+
+# Set user (mainly for Singularity)
+USER metauser
+
+# To access: expose 8590/tcp and 5900/tcp
+ENV CONTAINER_NAME='minimalmetadesktop'
diff --git a/MinimalMetaDesktop-noVNC/build.sh b/MinimalMetaDesktop-noVNC/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..eeca537a0634cbaa3c38011f9b9445d72215b941
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/build.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+docker build  . -t minimalmetadesktop
diff --git a/MinimalMetaDesktop-noVNC/files/background.jpg b/MinimalMetaDesktop-noVNC/files/background.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fe623ec4ddbd6bab4d77dc0f49303d1be040be73
Binary files /dev/null and b/MinimalMetaDesktop-noVNC/files/background.jpg differ
diff --git a/MinimalMetaDesktop-noVNC/files/dot_fluxbox/apps b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/apps
new file mode 100644
index 0000000000000000000000000000000000000000..7b4aeadb98c6d0d73a3958ab08e83b9b65595e30
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/apps
@@ -0,0 +1,4 @@
+[app] (name=fbrun)
+  [Position]	(WINCENTER)	{0 0}
+  [Layer]	{2}
+[end]
diff --git a/MinimalMetaDesktop-noVNC/files/dot_fluxbox/init b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/init
new file mode 100644
index 0000000000000000000000000000000000000000..bf43e669fc8806be374d772f50fe6a1bbc5c1115
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/init
@@ -0,0 +1,76 @@
+session.screen0.tabs.usePixmap:	true
+session.screen0.tabs.maxOver:	false
+session.screen0.tabs.intitlebar:	true
+session.screen0.clientMenu.usePixmap:	true
+session.screen0.iconbar.usePixmap:	true
+session.screen0.iconbar.iconTextPadding:	10
+session.screen0.iconbar.iconWidth:	128
+session.screen0.iconbar.alignment:	Relative
+session.screen0.iconbar.mode:	{static groups} (workspace)
+session.screen0.toolbar.visible:	true
+session.screen0.toolbar.height:	0
+session.screen0.toolbar.onhead:	1
+session.screen0.toolbar.widthPercent:	100
+session.screen0.toolbar.alpha:	255
+session.screen0.toolbar.maxOver:	false
+session.screen0.toolbar.autoHide:	false
+session.screen0.toolbar.layer:	Dock
+session.screen0.toolbar.placement:	BottomCenter
+#session.screen0.toolbar.tools:	prevworkspace, workspacename, nextworkspace, clock, prevwindow, nextwindow, iconbar, systemtray
+session.screen0.toolbar.tools: iconbar, systemtray
+session.screen0.menu.alpha:	255
+session.screen0.tab.placement:	TopLeft
+session.screen0.tab.width:	64
+session.screen0.titlebar.left:	Stick 
+session.screen0.titlebar.right:	Minimize Maximize Close 
+session.screen0.window.focus.alpha:	255
+session.screen0.window.unfocus.alpha:	255
+session.screen0.slit.alpha:	255
+session.screen0.slit.maxOver:	false
+session.screen0.slit.placement:	RightBottom
+session.screen0.slit.autoHide:	false
+session.screen0.slit.acceptKdeDockapps:	true
+session.screen0.slit.onhead:	0
+session.screen0.slit.layer:	Dock
+session.screen0.colPlacementDirection:	TopToBottom
+session.screen0.tabFocusModel:	ClickToTabFocus
+session.screen0.autoRaise:	true
+session.screen0.maxDisableMove:	false
+session.screen0.edgeSnapThreshold:	10
+session.screen0.tooltipDelay:	500
+session.screen0.opaqueMove:	true
+session.screen0.windowPlacement:	RowMinOverlapPlacement
+session.screen0.focusNewWindows:	true
+session.screen0.clickRaises:	true
+session.screen0.maxDisableResize:	false
+session.screen0.windowMenu:	/home/metauser/.fluxbox/windowmenu
+session.screen0.allowRemoteActions:	false
+session.screen0.strftimeFormat:	%d %b, %a %02k:%M:%S
+session.screen0.focusSameHead:	false
+session.screen0.workspacewarping:	true
+session.screen0.fullMaximization:	false
+session.screen0.defaultDeco:	NORMAL
+session.screen0.noFocusWhileTypingDelay:	0
+session.screen0.menuDelay:	200
+session.screen0.workspaceNames:	Workspace 1,Workspace 2,Workspace 3,Workspace 4,
+session.screen0.rowPlacementDirection:	LeftToRight
+session.screen0.focusModel:	ClickFocus
+session.screen0.showwindowposition:	false
+session.screen0.maxIgnoreIncrement:	true
+session.screen0.workspaces:	1
+session.styleOverlay:	/home/metauser/.fluxbox/overlay
+session.keyFile:	~/.fluxbox/keys
+session.cacheMax:	200
+session.tabsAttachArea:	Window
+session.slitlistFile:	/home/metauser/.fluxbox/slitlist
+session.forcePseudoTransparency:	false
+session.tabPadding:	0
+session.colorsPerChannel:	4
+session.styleFile:	/usr/share/fluxbox/styles//ubuntu-light
+session.autoRaiseDelay:	250
+session.cacheLife:	5
+session.appsFile:	/home/metauser/.fluxbox/apps
+session.ignoreBorder:	false
+session.configVersion:	13
+session.doubleClickInterval:	250
+session.menuFile:	~/.fluxbox/menu
diff --git a/MinimalMetaDesktop-noVNC/files/dot_fluxbox/keys b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/keys
new file mode 100644
index 0000000000000000000000000000000000000000..953d08b263a8422903691069977a3aa56472391c
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/keys
@@ -0,0 +1,137 @@
+# click on the desktop to get menus
+OnDesktop Mouse1 :HideMenus
+OnDesktop Mouse2 :WorkspaceMenu
+OnDesktop Mouse3 :RootMenu
+
+# scroll on the desktop to change workspaces
+OnDesktop Mouse4 :PrevWorkspace
+OnDesktop Mouse5 :NextWorkspace
+
+# scroll on the toolbar to change current window
+OnToolbar Mouse4 :PrevWindow {static groups} (iconhidden=no)
+OnToolbar Mouse5 :NextWindow {static groups} (iconhidden=no)
+
+# alt + left/right click to move/resize a window
+OnWindow Mod1 Mouse1 :MacroCmd {Raise} {Focus} {StartMoving}
+OnWindowBorder Move1 :StartMoving
+
+OnWindow Mod1 Mouse3 :MacroCmd {Raise} {Focus} {StartResizing NearestCorner}
+OnLeftGrip Move1 :StartResizing bottomleft
+OnRightGrip Move1 :StartResizing bottomright
+
+# alt + middle click to lower the window
+OnWindow Mod1 Mouse2 :Lower
+
+# control-click a window's titlebar and drag to attach windows
+OnTitlebar Control Mouse1 :StartTabbing
+
+# double click on the titlebar to shade
+OnTitlebar Double Mouse1 :Shade
+
+# left click on the titlebar to move the window
+OnTitlebar Mouse1 :MacroCmd {Raise} {Focus} {ActivateTab}
+OnTitlebar Move1  :StartMoving
+
+# middle click on the titlebar to lower
+OnTitlebar Mouse2 :Lower
+
+# right click on the titlebar for a menu of options
+OnTitlebar Mouse3 :WindowMenu
+
+# alt-tab
+Mod1 Tab :NextWindow {groups} (workspace=[current])
+Mod1 Shift Tab :PrevWindow {groups} (workspace=[current])
+
+# cycle through tabs in the current window
+Mod4 Tab :NextTab
+Mod4 Shift Tab :PrevTab
+
+# go to a specific tab in the current window
+Mod4 1 :Tab 1
+Mod4 2 :Tab 2
+Mod4 3 :Tab 3
+Mod4 4 :Tab 4
+Mod4 5 :Tab 5
+Mod4 6 :Tab 6
+Mod4 7 :Tab 7
+Mod4 8 :Tab 8
+Mod4 9 :Tab 9
+
+# open a terminal
+Mod1 F1 :Exec x-terminal-emulator
+
+# open a dialog to run programs
+Mod1 F2 :Exec fbrun
+
+# volume settings, using common keycodes
+# if these don't work, use xev to find out your real keycodes
+176 :Exec amixer sset Master,0 1+
+174 :Exec amixer sset Master,0 1-
+160 :Exec amixer sset Master,0 toggle
+
+# current window commands
+Mod1 F4 :Close
+Mod1 F5 :Kill
+Mod1 F9 :Minimize
+Mod1 F10 :Maximize
+Mod1 F11 :Fullscreen
+
+# open the window menu
+Mod1 space :WindowMenu
+
+# exit fluxbox
+Control Mod1 Delete :Exit
+
+# change to previous/next workspace
+Control Mod1 Left :PrevWorkspace
+Control Mod1 Right :NextWorkspace
+
+# send the current window to previous/next workspace
+Mod4 Left :SendToPrevWorkspace
+Mod4 Right :SendToNextWorkspace
+
+# send the current window and follow it to previous/next workspace
+Control Mod4 Left :TakeToPrevWorkspace
+Control Mod4 Right :TakeToNextWorkspace
+
+# change to a specific workspace
+Control F1 :Workspace 1
+Control F2 :Workspace 2
+Control F3 :Workspace 3
+Control F4 :Workspace 4
+Control F5 :Workspace 5
+Control F6 :Workspace 6
+Control F7 :Workspace 7
+Control F8 :Workspace 8
+Control F9 :Workspace 9
+Control F10 :Workspace 10
+Control F11 :Workspace 11
+Control F12 :Workspace 12
+
+# send the current window to a specific workspace
+Mod4 F1 :SendToWorkspace 1
+Mod4 F2 :SendToWorkspace 2
+Mod4 F3 :SendToWorkspace 3
+Mod4 F4 :SendToWorkspace 4
+Mod4 F5 :SendToWorkspace 5
+Mod4 F6 :SendToWorkspace 6
+Mod4 F7 :SendToWorkspace 7
+Mod4 F8 :SendToWorkspace 8
+Mod4 F9 :SendToWorkspace 9
+Mod4 F10 :SendToWorkspace 10
+Mod4 F11 :SendToWorkspace 11
+Mod4 F12 :SendToWorkspace 12
+
+# send the current window and change to a specific workspace
+Control Mod4 F1 :TakeToWorkspace 1
+Control Mod4 F2 :TakeToWorkspace 2
+Control Mod4 F3 :TakeToWorkspace 3
+Control Mod4 F4 :TakeToWorkspace 4
+Control Mod4 F5 :TakeToWorkspace 5
+Control Mod4 F6 :TakeToWorkspace 6
+Control Mod4 F7 :TakeToWorkspace 7
+Control Mod4 F8 :TakeToWorkspace 8
+Control Mod4 F9 :TakeToWorkspace 9
+Control Mod4 F10 :TakeToWorkspace 10
+Control Mod4 F11 :TakeToWorkspace 11
+Control Mod4 F12 :TakeToWorkspace 12
diff --git a/MinimalMetaDesktop-noVNC/files/dot_fluxbox/lastwallpaper b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/lastwallpaper
new file mode 100644
index 0000000000000000000000000000000000000000..1d3a812f04583f48292c28f5c7bec1972f75b17e
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/lastwallpaper
@@ -0,0 +1 @@
+$full $full|/usr/share/images/fluxbox/ubuntu-light.png|style|:0.0
diff --git a/MinimalMetaDesktop-noVNC/files/dot_fluxbox/menu b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/menu
new file mode 100644
index 0000000000000000000000000000000000000000..ed1edfbbf100ff08ce6cb48b958a8eb01e0520a6
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/menu
@@ -0,0 +1,3 @@
+[begin] (fluxbox)
+[include] (/etc/X11/fluxbox/fluxbox-menu)
+[end]
diff --git a/MinimalMetaDesktop-noVNC/files/dot_fluxbox/overlay b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/overlay
new file mode 100644
index 0000000000000000000000000000000000000000..4ddc46b04c8c8d4b357a950dc0ff246d7960cbad
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/overlay
@@ -0,0 +1,4 @@
+! The following line will prevent styles from setting the background.
+! background: none
+background: aspect
+background.pixmap: /usr/share/images/fluxbox/background.jpg
diff --git a/MinimalMetaDesktop-noVNC/files/dot_fluxbox/windowmenu b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/windowmenu
new file mode 100644
index 0000000000000000000000000000000000000000..d867b64c2299e4d714323ec3018ce3efe3a4f466
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/dot_fluxbox/windowmenu
@@ -0,0 +1,15 @@
+[begin]
+  [shade]
+  [stick]
+  [maximize]
+  [iconify]
+  [raise]
+  [lower]
+  [settitledialog]
+  [sendto]
+  [layer]
+  [alpha]
+  [extramenus]
+  [separator]
+  [close]
+[end]
diff --git a/MinimalMetaDesktop-noVNC/files/entrypoint.sh b/MinimalMetaDesktop-noVNC/files/entrypoint.sh
new file mode 100644
index 0000000000000000000000000000000000000000..fabb3eb723509c77d0613b28060effdcff607dad
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/entrypoint.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+
+ # Exit on any error. More complex thing could be done in future
+# (see https://stackoverflow.com/questions/4381618/exit-a-script-on-error)
+set -e
+
+
+if [ "x$SAFE_MODE" == "xTrue" ]; then
+    echo ""
+    echo "[INFO] Not executing entrypoint as we are in safe mode, just opening a Bash shell."
+    exec /bin/bash
+else
+	echo ""
+	echo "[INFO] Executing entrypoint..."
+	
+	if [ "x$BASE_PORT" == "x" ]; then
+	    echo "[INFO] No task base port set, will set noVNC port 8590 and VNC port 5900 with desktop id \"0\""  
+	else 
+	    echo "[INFO] Task base port set, will set noVNC port $BASE_PORT and noVNC port $(($BASE_PORT+1)) with desktop id \"$(($BASE_PORT-5900+1))\""
+	fi
+	
+    #---------------------
+    #   Setup home
+    #---------------------
+
+	if [ -f "/home/metauser/.initialized" ]; then
+	    :
+	else
+		echo "[INFO] Setting up home"
+		mkdir -p /home/metauser
+
+        # Copy over vanilla home contents
+		for x in /metauser_home_vanilla/* /metauser_home_vanilla/.[!.]* /metauser_home_vanilla/..?*; do
+            if [ -e "$x" ]; then cp -a "$x" /home/metauser/; fi
+        done
+		
+	# Mark as initialized
+	    touch /home/metauser/.initialized
+	fi
+	
+    # Manually set home (mainly for Singularity)
+	echo "[INFO] Setting up HOME env var"
+	export HOME=/home/metauser
+	cd /home/metauser
+	
+    #---------------------
+    #   Save env
+    #---------------------
+	echo "[INFO] Dumping env"
+	
+    # Save env vars for later usage (e.g. ssh)
+	
+	env | \
+	while read env_var; do
+	  if [[ $env_var == HOME\=* ]]; then
+	      : # Skip HOME var
+	  elif [[ $env_var == PWD\=* ]]; then
+	      : # Skip PWD var
+	  else
+	      echo "export $env_var" >> /tmp/env.sh
+	  fi
+	done
+	
+    #---------------------
+    #   Password
+    #---------------------
+	
+	if [ "x$AUTH_PASS" != "x" ]; then
+	    echo "[INFO] Setting up VNC password..."
+	    mkdir -p /home/metauser/.vnc
+	    /opt/tigervnc/usr/bin/vncpasswd -f <<< $AUTH_PASS > /home/metauser/.vnc/passwd
+	    chmod 600 /home/metauser/.vnc/passwd
+	    export VNC_AUTH=True
+	else
+	    echo "[INFO] Not setting up any VNC password"
+	        
+	fi
+	
+	echo "[INFO] Setting new prompt @$CONTAINER_NAME container"
+	echo 'export PS1="${debian_chroot:+($debian_chroot)}\u@$CONTAINER_NAME@\h:\w\$ "' >> /home/metauser/.bashrc
+	
+	
+	
+    #---------------------
+    #  Entrypoint command
+    #---------------------
+	
+	if [ "$@x" == "x" ]; then
+	    DEFAULT_COMMAND="supervisord -c /etc/supervisor/supervisord.conf"
+	    echo -n "[INFO] Executing default entrypoint command: "
+	    echo $DEFAULT_COMMAND
+	    exec $DEFAULT_COMMAND
+	else
+	    echo -n "[INFO] Executing entrypoint command: "
+	    echo $@
+	    exec $@
+	fi 
+
+fi
+
diff --git a/MinimalMetaDesktop-noVNC/files/index.html b/MinimalMetaDesktop-noVNC/files/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..6a6c57d819e940020afaaef0023fa1a788867147
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/index.html
@@ -0,0 +1,12 @@
+<html>
+<head>
+<script type="text/javascript">
+function redirecter(){
+    window.location = "./vnc.html?autoconnect=true&resize=remote"
+}
+</script>
+</head>
+<body onLoad="redirecter()">
+Access VNC: click <a href="./vnc.html?autoconnect=true&resize=remote">here</a>.
+</body>
+</html>
\ No newline at end of file
diff --git a/MinimalMetaDesktop-noVNC/files/noVNC.tar.gz b/MinimalMetaDesktop-noVNC/files/noVNC.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..a531bed617c54af4826c7afd76192bc2736100ba
Binary files /dev/null and b/MinimalMetaDesktop-noVNC/files/noVNC.tar.gz differ
diff --git a/MinimalMetaDesktop-noVNC/files/run_novnc.sh b/MinimalMetaDesktop-noVNC/files/run_novnc.sh
new file mode 100755
index 0000000000000000000000000000000000000000..53198782b7aea92d8cd8c5181a5fefac7fa91b22
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/run_novnc.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+
+# Exec TigerVNC server 
+
+if [ "x$BASE_PORT" == "x" ]; then
+    /usr/lib/noVNC/utils/launch.sh --listen 8590
+    echo "Running noVNC on port 8590"
+else
+    /usr/lib/noVNC/utils/launch.sh --listen $BASE_PORT --vnc localhost:$(($BASE_PORT+1))
+    echo "Running noVNC on port $BASE_PORT and connecting to VNC on port $(($BASE_PORT+1))"
+
+fi
diff --git a/MinimalMetaDesktop-noVNC/files/run_vnc.sh b/MinimalMetaDesktop-noVNC/files/run_vnc.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ac7daebd51232559545e9bdcf71dbd5e79140cb6
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/run_vnc.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Exec TigerVNC server 
+
+if [ "x$BASE_PORT" == "x" ]; then
+    DESKTOP_NUMBER=0
+else
+    DESKTOP_NUMBER=$(($BASE_PORT-5900+1))
+fi
+
+if [ "x$VNC_AUTH" == "xTrue" ]; then
+    /opt/tigervnc/usr/bin/vncserver :$DESKTOP_NUMBER -SecurityTypes vncauth,tlsvnc -xstartup /opt/tigervnc/xstartup
+else
+    /opt/tigervnc/usr/bin/vncserver :$DESKTOP_NUMBER -SecurityTypes None -xstartup /opt/tigervnc/xstartup
+fi
+
+
+# Check it is running. If it is not, exit
+while true
+do
+
+    PSOUT=$(ps -ef | grep /opt/tigervnc/usr/bin/Xvnc | grep SecurityTypes) 
+
+    if [[ "x$PSOUT" == "x" ]] ; then
+        exit 1
+    fi
+
+	# Sleep other 10 secs before re-checking
+	sleep 10
+
+done
diff --git a/MinimalMetaDesktop-noVNC/files/sudoers b/MinimalMetaDesktop-noVNC/files/sudoers
new file mode 100644
index 0000000000000000000000000000000000000000..47ab37c90fdec1df833409f825d2665fe7d1f899
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/sudoers
@@ -0,0 +1,30 @@
+#
+# This file MUST be edited with the 'visudo' command as root.
+#
+# Please consider adding local content in /etc/sudoers.d/ instead of
+# directly modifying this file.
+#
+# See the man page for details on how to write a sudoers file.
+#
+Defaults        env_reset
+Defaults        mail_badpass
+Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
+
+# Host alias specification
+
+# User alias specification
+
+# Cmnd alias specification
+
+# User privilege specification
+root    ALL=(ALL:ALL) ALL
+
+# Members of the admin group may gain root privileges
+%admin ALL=(ALL) ALL
+
+# Allow members of group sudo to execute any command
+%sudo   ALL=(ALL:ALL) NOPASSWD:ALL
+
+# See sudoers(5) for more information on "#include" directives:
+
+#includedir /etc/sudoers.d
diff --git a/MinimalMetaDesktop-noVNC/files/supervisord.conf b/MinimalMetaDesktop-noVNC/files/supervisord.conf
new file mode 100644
index 0000000000000000000000000000000000000000..16827aa904358c924888618a01e2b3026c9db68b
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/supervisord.conf
@@ -0,0 +1,29 @@
+; supervisor config file (modified for our own purpose)
+
+[unix_http_server]
+file=/home/metauser/.supervisor.sock   ; (the path to the socket file)
+chmod=0700                             ; sockef file mode (default 0700)
+
+[supervisord]
+logfile=/home/metauser/.logs/supervisord.log   ; (main log file;default $CWD/supervisord.log)
+pidfile=/home/metauser/.logs/supervisord.pid   ; (supervisord pidfile;default supervisord.pid)
+childlogdir=/home/metauser/.logs               ; ('AUTO' child log dir, default $TEMP)
+nodaemon=true                                  ; Mandatory to run Supervisor in foreground and avoid Docker to exit!
+
+; The below section must remain in the config file for RPC
+; (supervisorctl/web interface) to work, additional interfaces may be
+; added by defining them in separate rpcinterface: sections
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl=unix:///home/metauser/.supervisor.sock ; use a unix:// URL  for a unix socket
+
+; The [include] section can just contain the "files" setting.  This
+; setting can list multiple files (separated by whitespace or
+; newlines).  It can also contain wildcards.  The filenames are
+; interpreted as relative to this file.  Included files *cannot*
+; include files themselves.
+
+[include]
+files = /etc/supervisor/conf.d/*.conf
diff --git a/MinimalMetaDesktop-noVNC/files/supervisord_novnc.conf b/MinimalMetaDesktop-noVNC/files/supervisord_novnc.conf
new file mode 100644
index 0000000000000000000000000000000000000000..2a4e685fe1aead80d61cd4a5b48b6c981d8348f1
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/supervisord_novnc.conf
@@ -0,0 +1,23 @@
+;=======================================
+; noVNC service
+;=======================================
+ 
+[program:novnc]
+ 
+; General
+directory     = /usr/lib/noVNC/
+command       = /etc/supervisor/conf.d/run_novnc.sh
+numprocs      = 1
+autostart     = true
+autorestart   = true
+startsecs     = 10
+stopwaitsecs  = 30
+process_name  = novnc
+ 
+; Standard out / error
+stdout_logfile          = /home/metauser/.logs/%(program_name)s.log
+stdout_logfile_maxbytes = 5MB
+stdout_logfile_backups  = 10
+stderr_logfile          = /home/metauser/.logs/%(program_name)s.log
+stderr_logfile_maxbytes = 5MB
+stderr_logfile_backups  = 10
diff --git a/MinimalMetaDesktop-noVNC/files/supervisord_vnc.conf b/MinimalMetaDesktop-noVNC/files/supervisord_vnc.conf
new file mode 100644
index 0000000000000000000000000000000000000000..42aa37b339d52d8bddfd8a974c70446e51cfc786
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/supervisord_vnc.conf
@@ -0,0 +1,23 @@
+;=======================================
+; VNC service
+;=======================================
+ 
+[program:vnc]
+ 
+; General
+directory     = /
+command       = /etc/supervisor/conf.d/run_vnc.sh
+numprocs      = 1
+autostart     = true
+autorestart   = true
+startsecs     = 10
+stopwaitsecs  = 30
+process_name  = vnc
+ 
+; Standard out / error
+stdout_logfile          = /home/metauser/.logs/%(program_name)s.log
+stdout_logfile_maxbytes = 5MB
+stdout_logfile_backups  = 10
+stderr_logfile          = /home/metauser/.logs/%(program_name)s.log
+stderr_logfile_maxbytes = 5MB
+stderr_logfile_backups  = 10
diff --git a/MinimalMetaDesktop-noVNC/files/tigervnc-1.8.0.x86_64.tar.gz b/MinimalMetaDesktop-noVNC/files/tigervnc-1.8.0.x86_64.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..c10ec390662aaa9c4fcb38d4bc3ac321dc9a41ee
Binary files /dev/null and b/MinimalMetaDesktop-noVNC/files/tigervnc-1.8.0.x86_64.tar.gz differ
diff --git a/MinimalMetaDesktop-noVNC/files/xstartup b/MinimalMetaDesktop-noVNC/files/xstartup
new file mode 100644
index 0000000000000000000000000000000000000000..0e58b35be8ad2dabf72090f0c66aa55126340acc
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/files/xstartup
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+cd /home/metauser
+
+unset SESSION_MANAGER
+unset DBUS_SESSION_BUS_ADDRESS
+OS=`uname -s`
+if [ $OS = 'Linux' ]; then
+  case "$WINDOWMANAGER" in
+    *gnome*)
+      if [ -e /etc/SuSE-release ]; then
+        PATH=$PATH:/opt/gnome/bin
+        export PATH
+      fi
+      ;;
+  esac
+fi
+if [ -x /etc/X11/xinit/xinitrc ]; then
+  exec /etc/X11/xinit/xinitrc
+fi
+if [ -f /etc/X11/xinit/xinitrc ]; then
+  exec sh /etc/X11/xinit/xinitrc
+fi
+[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
+#xsetroot -solid grey
+xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" /bin/bash &
+
+#twm &
+fluxbox &
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.Xauthority b/MinimalMetaDesktop-noVNC/metauser_home/.Xauthority
new file mode 100644
index 0000000000000000000000000000000000000000..8bed6f6a0900534f1e0e0c4f4a449d6b1dd061fa
Binary files /dev/null and b/MinimalMetaDesktop-noVNC/metauser_home/.Xauthority differ
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.bash_logout b/MinimalMetaDesktop-noVNC/metauser_home/.bash_logout
new file mode 100644
index 0000000000000000000000000000000000000000..de4f5f75d7ccd3a5b62bd2ce683ed678a5cb72c2
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.bash_logout
@@ -0,0 +1,7 @@
+# ~/.bash_logout: executed by bash(1) when login shell exits.
+
+# when leaving the console clear the screen to increase privacy
+
+if [ "$SHLVL" = 1 ]; then
+    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
+fi
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.bashrc b/MinimalMetaDesktop-noVNC/metauser_home/.bashrc
new file mode 100644
index 0000000000000000000000000000000000000000..53576e250ebc970bfa87dc9d342592627649baa1
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.bashrc
@@ -0,0 +1,119 @@
+# ~/.bashrc: executed by bash(1) for non-login shells.
+# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
+# for examples
+
+# If not running interactively, don't do anything
+case $- in
+    *i*) ;;
+      *) return;;
+esac
+
+# don't put duplicate lines or lines starting with space in the history.
+# See bash(1) for more options
+HISTCONTROL=ignoreboth
+
+# append to the history file, don't overwrite it
+shopt -s histappend
+
+# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
+HISTSIZE=1000
+HISTFILESIZE=2000
+
+# check the window size after each command and, if necessary,
+# update the values of LINES and COLUMNS.
+shopt -s checkwinsize
+
+# If set, the pattern "**" used in a pathname expansion context will
+# match all files and zero or more directories and subdirectories.
+#shopt -s globstar
+
+# make less more friendly for non-text input files, see lesspipe(1)
+[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
+
+# set variable identifying the chroot you work in (used in the prompt below)
+if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
+    debian_chroot=$(cat /etc/debian_chroot)
+fi
+
+# set a fancy prompt (non-color, unless we know we "want" color)
+case "$TERM" in
+    xterm-color|*-256color) color_prompt=yes;;
+esac
+
+# uncomment for a colored prompt, if the terminal has the capability; turned
+# off by default to not distract the user: the focus in a terminal window
+# should be on the output of commands, not on the prompt
+#force_color_prompt=yes
+
+if [ -n "$force_color_prompt" ]; then
+    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
+	# We have color support; assume it's compliant with Ecma-48
+	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
+	# a case would tend to support setf rather than setaf.)
+	color_prompt=yes
+    else
+	color_prompt=
+    fi
+fi
+
+if [ "$color_prompt" = yes ]; then
+    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
+else
+    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
+fi
+unset color_prompt force_color_prompt
+
+# If this is an xterm set the title to user@host:dir
+case "$TERM" in
+xterm*|rxvt*)
+    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
+    ;;
+*)
+    ;;
+esac
+
+# enable color support of ls and also add handy aliases
+if [ -x /usr/bin/dircolors ]; then
+    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
+    alias ls='ls --color=auto'
+    #alias dir='dir --color=auto'
+    #alias vdir='vdir --color=auto'
+
+    alias grep='grep --color=auto'
+    alias fgrep='fgrep --color=auto'
+    alias egrep='egrep --color=auto'
+fi
+
+# colored GCC warnings and errors
+#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
+
+# some more ls aliases
+alias ll='ls -alF'
+alias la='ls -A'
+alias l='ls -CF'
+
+# Add an "alert" alias for long running commands.  Use like so:
+#   sleep 10; alert
+alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
+
+# Alias definitions.
+# You may want to put all your additions into a separate file like
+# ~/.bash_aliases, instead of adding them here directly.
+# See /usr/share/doc/bash-doc/examples in the bash-doc package.
+
+if [ -f ~/.bash_aliases ]; then
+    . ~/.bash_aliases
+fi
+
+# enable programmable completion features (you don't need to enable
+# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
+# sources /etc/bash.bashrc).
+if ! shopt -oq posix; then
+  if [ -f /usr/share/bash-completion/bash_completion ]; then
+    . /usr/share/bash-completion/bash_completion
+  elif [ -f /etc/bash_completion ]; then
+    . /etc/bash_completion
+  fi
+fi
+export PS1="${debian_chroot:+($debian_chroot)}\u@$CONTAINER_NAME@\h:\w\$ "
+export PS1="${debian_chroot:+($debian_chroot)}\u@$CONTAINER_NAME@\h:\w\$ "
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fehbg b/MinimalMetaDesktop-noVNC/metauser_home/.fehbg
new file mode 100755
index 0000000000000000000000000000000000000000..19c17c731c587be673abcc13f30f62dff5962770
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fehbg
@@ -0,0 +1,2 @@
+#!/bin/sh
+'feh' '--bg-fill' '/usr/share/images/fluxbox/background.jpg' 
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/apps b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/apps
new file mode 100644
index 0000000000000000000000000000000000000000..7b4aeadb98c6d0d73a3958ab08e83b9b65595e30
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/apps
@@ -0,0 +1,4 @@
+[app] (name=fbrun)
+  [Position]	(WINCENTER)	{0 0}
+  [Layer]	{2}
+[end]
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/init b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/init
new file mode 100644
index 0000000000000000000000000000000000000000..bf43e669fc8806be374d772f50fe6a1bbc5c1115
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/init
@@ -0,0 +1,76 @@
+session.screen0.tabs.usePixmap:	true
+session.screen0.tabs.maxOver:	false
+session.screen0.tabs.intitlebar:	true
+session.screen0.clientMenu.usePixmap:	true
+session.screen0.iconbar.usePixmap:	true
+session.screen0.iconbar.iconTextPadding:	10
+session.screen0.iconbar.iconWidth:	128
+session.screen0.iconbar.alignment:	Relative
+session.screen0.iconbar.mode:	{static groups} (workspace)
+session.screen0.toolbar.visible:	true
+session.screen0.toolbar.height:	0
+session.screen0.toolbar.onhead:	1
+session.screen0.toolbar.widthPercent:	100
+session.screen0.toolbar.alpha:	255
+session.screen0.toolbar.maxOver:	false
+session.screen0.toolbar.autoHide:	false
+session.screen0.toolbar.layer:	Dock
+session.screen0.toolbar.placement:	BottomCenter
+#session.screen0.toolbar.tools:	prevworkspace, workspacename, nextworkspace, clock, prevwindow, nextwindow, iconbar, systemtray
+session.screen0.toolbar.tools: iconbar, systemtray
+session.screen0.menu.alpha:	255
+session.screen0.tab.placement:	TopLeft
+session.screen0.tab.width:	64
+session.screen0.titlebar.left:	Stick 
+session.screen0.titlebar.right:	Minimize Maximize Close 
+session.screen0.window.focus.alpha:	255
+session.screen0.window.unfocus.alpha:	255
+session.screen0.slit.alpha:	255
+session.screen0.slit.maxOver:	false
+session.screen0.slit.placement:	RightBottom
+session.screen0.slit.autoHide:	false
+session.screen0.slit.acceptKdeDockapps:	true
+session.screen0.slit.onhead:	0
+session.screen0.slit.layer:	Dock
+session.screen0.colPlacementDirection:	TopToBottom
+session.screen0.tabFocusModel:	ClickToTabFocus
+session.screen0.autoRaise:	true
+session.screen0.maxDisableMove:	false
+session.screen0.edgeSnapThreshold:	10
+session.screen0.tooltipDelay:	500
+session.screen0.opaqueMove:	true
+session.screen0.windowPlacement:	RowMinOverlapPlacement
+session.screen0.focusNewWindows:	true
+session.screen0.clickRaises:	true
+session.screen0.maxDisableResize:	false
+session.screen0.windowMenu:	/home/metauser/.fluxbox/windowmenu
+session.screen0.allowRemoteActions:	false
+session.screen0.strftimeFormat:	%d %b, %a %02k:%M:%S
+session.screen0.focusSameHead:	false
+session.screen0.workspacewarping:	true
+session.screen0.fullMaximization:	false
+session.screen0.defaultDeco:	NORMAL
+session.screen0.noFocusWhileTypingDelay:	0
+session.screen0.menuDelay:	200
+session.screen0.workspaceNames:	Workspace 1,Workspace 2,Workspace 3,Workspace 4,
+session.screen0.rowPlacementDirection:	LeftToRight
+session.screen0.focusModel:	ClickFocus
+session.screen0.showwindowposition:	false
+session.screen0.maxIgnoreIncrement:	true
+session.screen0.workspaces:	1
+session.styleOverlay:	/home/metauser/.fluxbox/overlay
+session.keyFile:	~/.fluxbox/keys
+session.cacheMax:	200
+session.tabsAttachArea:	Window
+session.slitlistFile:	/home/metauser/.fluxbox/slitlist
+session.forcePseudoTransparency:	false
+session.tabPadding:	0
+session.colorsPerChannel:	4
+session.styleFile:	/usr/share/fluxbox/styles//ubuntu-light
+session.autoRaiseDelay:	250
+session.cacheLife:	5
+session.appsFile:	/home/metauser/.fluxbox/apps
+session.ignoreBorder:	false
+session.configVersion:	13
+session.doubleClickInterval:	250
+session.menuFile:	~/.fluxbox/menu
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/keys b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/keys
new file mode 100644
index 0000000000000000000000000000000000000000..953d08b263a8422903691069977a3aa56472391c
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/keys
@@ -0,0 +1,137 @@
+# click on the desktop to get menus
+OnDesktop Mouse1 :HideMenus
+OnDesktop Mouse2 :WorkspaceMenu
+OnDesktop Mouse3 :RootMenu
+
+# scroll on the desktop to change workspaces
+OnDesktop Mouse4 :PrevWorkspace
+OnDesktop Mouse5 :NextWorkspace
+
+# scroll on the toolbar to change current window
+OnToolbar Mouse4 :PrevWindow {static groups} (iconhidden=no)
+OnToolbar Mouse5 :NextWindow {static groups} (iconhidden=no)
+
+# alt + left/right click to move/resize a window
+OnWindow Mod1 Mouse1 :MacroCmd {Raise} {Focus} {StartMoving}
+OnWindowBorder Move1 :StartMoving
+
+OnWindow Mod1 Mouse3 :MacroCmd {Raise} {Focus} {StartResizing NearestCorner}
+OnLeftGrip Move1 :StartResizing bottomleft
+OnRightGrip Move1 :StartResizing bottomright
+
+# alt + middle click to lower the window
+OnWindow Mod1 Mouse2 :Lower
+
+# control-click a window's titlebar and drag to attach windows
+OnTitlebar Control Mouse1 :StartTabbing
+
+# double click on the titlebar to shade
+OnTitlebar Double Mouse1 :Shade
+
+# left click on the titlebar to move the window
+OnTitlebar Mouse1 :MacroCmd {Raise} {Focus} {ActivateTab}
+OnTitlebar Move1  :StartMoving
+
+# middle click on the titlebar to lower
+OnTitlebar Mouse2 :Lower
+
+# right click on the titlebar for a menu of options
+OnTitlebar Mouse3 :WindowMenu
+
+# alt-tab
+Mod1 Tab :NextWindow {groups} (workspace=[current])
+Mod1 Shift Tab :PrevWindow {groups} (workspace=[current])
+
+# cycle through tabs in the current window
+Mod4 Tab :NextTab
+Mod4 Shift Tab :PrevTab
+
+# go to a specific tab in the current window
+Mod4 1 :Tab 1
+Mod4 2 :Tab 2
+Mod4 3 :Tab 3
+Mod4 4 :Tab 4
+Mod4 5 :Tab 5
+Mod4 6 :Tab 6
+Mod4 7 :Tab 7
+Mod4 8 :Tab 8
+Mod4 9 :Tab 9
+
+# open a terminal
+Mod1 F1 :Exec x-terminal-emulator
+
+# open a dialog to run programs
+Mod1 F2 :Exec fbrun
+
+# volume settings, using common keycodes
+# if these don't work, use xev to find out your real keycodes
+176 :Exec amixer sset Master,0 1+
+174 :Exec amixer sset Master,0 1-
+160 :Exec amixer sset Master,0 toggle
+
+# current window commands
+Mod1 F4 :Close
+Mod1 F5 :Kill
+Mod1 F9 :Minimize
+Mod1 F10 :Maximize
+Mod1 F11 :Fullscreen
+
+# open the window menu
+Mod1 space :WindowMenu
+
+# exit fluxbox
+Control Mod1 Delete :Exit
+
+# change to previous/next workspace
+Control Mod1 Left :PrevWorkspace
+Control Mod1 Right :NextWorkspace
+
+# send the current window to previous/next workspace
+Mod4 Left :SendToPrevWorkspace
+Mod4 Right :SendToNextWorkspace
+
+# send the current window and follow it to previous/next workspace
+Control Mod4 Left :TakeToPrevWorkspace
+Control Mod4 Right :TakeToNextWorkspace
+
+# change to a specific workspace
+Control F1 :Workspace 1
+Control F2 :Workspace 2
+Control F3 :Workspace 3
+Control F4 :Workspace 4
+Control F5 :Workspace 5
+Control F6 :Workspace 6
+Control F7 :Workspace 7
+Control F8 :Workspace 8
+Control F9 :Workspace 9
+Control F10 :Workspace 10
+Control F11 :Workspace 11
+Control F12 :Workspace 12
+
+# send the current window to a specific workspace
+Mod4 F1 :SendToWorkspace 1
+Mod4 F2 :SendToWorkspace 2
+Mod4 F3 :SendToWorkspace 3
+Mod4 F4 :SendToWorkspace 4
+Mod4 F5 :SendToWorkspace 5
+Mod4 F6 :SendToWorkspace 6
+Mod4 F7 :SendToWorkspace 7
+Mod4 F8 :SendToWorkspace 8
+Mod4 F9 :SendToWorkspace 9
+Mod4 F10 :SendToWorkspace 10
+Mod4 F11 :SendToWorkspace 11
+Mod4 F12 :SendToWorkspace 12
+
+# send the current window and change to a specific workspace
+Control Mod4 F1 :TakeToWorkspace 1
+Control Mod4 F2 :TakeToWorkspace 2
+Control Mod4 F3 :TakeToWorkspace 3
+Control Mod4 F4 :TakeToWorkspace 4
+Control Mod4 F5 :TakeToWorkspace 5
+Control Mod4 F6 :TakeToWorkspace 6
+Control Mod4 F7 :TakeToWorkspace 7
+Control Mod4 F8 :TakeToWorkspace 8
+Control Mod4 F9 :TakeToWorkspace 9
+Control Mod4 F10 :TakeToWorkspace 10
+Control Mod4 F11 :TakeToWorkspace 11
+Control Mod4 F12 :TakeToWorkspace 12
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/lastwallpaper b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/lastwallpaper
new file mode 100644
index 0000000000000000000000000000000000000000..a807c16b90a3f6fbcd584b9db4650ca6954215fb
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/lastwallpaper
@@ -0,0 +1 @@
+$aspect $full|/usr/share/images/fluxbox/background.jpg|style|:0.0
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/menu b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/menu
new file mode 100644
index 0000000000000000000000000000000000000000..ed1edfbbf100ff08ce6cb48b958a8eb01e0520a6
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/menu
@@ -0,0 +1,3 @@
+[begin] (fluxbox)
+[include] (/etc/X11/fluxbox/fluxbox-menu)
+[end]
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/overlay b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/overlay
new file mode 100644
index 0000000000000000000000000000000000000000..4ddc46b04c8c8d4b357a950dc0ff246d7960cbad
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/overlay
@@ -0,0 +1,4 @@
+! The following line will prevent styles from setting the background.
+! background: none
+background: aspect
+background.pixmap: /usr/share/images/fluxbox/background.jpg
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/windowmenu b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/windowmenu
new file mode 100644
index 0000000000000000000000000000000000000000..d867b64c2299e4d714323ec3018ce3efe3a4f466
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.fluxbox/windowmenu
@@ -0,0 +1,15 @@
+[begin]
+  [shade]
+  [stick]
+  [maximize]
+  [iconify]
+  [raise]
+  [lower]
+  [settitledialog]
+  [sendto]
+  [layer]
+  [alpha]
+  [extramenus]
+  [separator]
+  [close]
+[end]
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.initialized b/MinimalMetaDesktop-noVNC/metauser_home/.initialized
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.profile b/MinimalMetaDesktop-noVNC/metauser_home/.profile
new file mode 100644
index 0000000000000000000000000000000000000000..d89ea5a6e83a2956d7461b547fa0d7d68103b9c9
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.profile
@@ -0,0 +1,27 @@
+# ~/.profile: executed by the command interpreter for login shells.
+# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
+# exists.
+# see /usr/share/doc/bash/examples/startup-files for examples.
+# the files are located in the bash-doc package.
+
+# the default umask is set in /etc/profile; for setting the umask
+# for ssh logins, install and configure the libpam-umask package.
+#umask 022
+
+# if running bash
+if [ -n "$BASH_VERSION" ]; then
+    # include .bashrc if it exists
+    if [ -f "$HOME/.bashrc" ]; then
+	. "$HOME/.bashrc"
+    fi
+fi
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/bin" ] ; then
+    PATH="$HOME/bin:$PATH"
+fi
+
+# set PATH so it includes user's private bin if it exists
+if [ -d "$HOME/.local/bin" ] ; then
+    PATH="$HOME/.local/bin:$PATH"
+fi
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/.vnc/config b/MinimalMetaDesktop-noVNC/metauser_home/.vnc/config
new file mode 100644
index 0000000000000000000000000000000000000000..d67d45dd976cdb898480b1d6f2448ecef8db108b
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/.vnc/config
@@ -0,0 +1,9 @@
+## Supported server options to pass to vncserver upon invocation can be listed
+## in this file. See the following manpages for more: vncserver(1) Xvnc(1).
+## Several common ones are shown below. Uncomment and modify to your liking.
+##
+# securitytypes=vncauth,tlsvnc
+# desktop=sandbox
+# geometry=2000x1200
+# localhost
+# alwaysshared
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/logs/novnc.log b/MinimalMetaDesktop-noVNC/metauser_home/logs/novnc.log
new file mode 100644
index 0000000000000000000000000000000000000000..5c0c6e6c49982b772841fb7dd14dc85f41d6b13f
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/logs/novnc.log
@@ -0,0 +1,31 @@
+Warning: could not find self.pem
+Using local websockify at /usr/lib/noVNC/utils/websockify/run
+Starting webserver and WebSockets proxy on port 8590
+/usr/lib/noVNC/utils/websockify/websockify/websocket.py:30: UserWarning: no 'numpy' module, HyBi protocol will be slower
+  warnings.warn("no 'numpy' module, HyBi protocol will be slower")
+WebSocket server settings:
+  - Listen on :8590
+  - Web server. Web root: /usr/lib/noVNC
+  - No SSL/TLS support (no cert file)
+  - proxying from :8590 to localhost:5900
+172.17.0.1 - - [14/May/2020 15:23:37] 172.17.0.1: Plain non-SSL (ws://) WebSocket connection
+172.17.0.1 - - [14/May/2020 15:23:37] 172.17.0.1: Path: '/websockify'
+172.17.0.1 - - [14/May/2020 15:23:37] connecting to: localhost:5900
+172.17.0.1: ignoring socket not ready
+172.17.0.1: ignoring socket not ready
+Warning: could not find self.pem
+Using local websockify at /usr/lib/noVNC/utils/websockify/run
+Starting webserver and WebSockets proxy on port 8590
+/usr/lib/noVNC/utils/websockify/websockify/websocket.py:30: UserWarning: no 'numpy' module, HyBi protocol will be slower
+  warnings.warn("no 'numpy' module, HyBi protocol will be slower")
+WebSocket server settings:
+  - Listen on :8590
+  - Web server. Web root: /usr/lib/noVNC
+  - No SSL/TLS support (no cert file)
+  - proxying from :8590 to localhost:5900
+172.17.0.1: ignoring socket not ready
+172.17.0.1 - - [14/May/2020 15:24:09] 172.17.0.1: Plain non-SSL (ws://) WebSocket connection
+172.17.0.1 - - [14/May/2020 15:24:09] 172.17.0.1: Path: '/websockify'
+172.17.0.1 - - [14/May/2020 15:24:09] connecting to: localhost:5900
+172.17.0.1: ignoring socket not ready
+172.17.0.1: ignoring socket not ready
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/logs/supervisord.log b/MinimalMetaDesktop-noVNC/metauser_home/logs/supervisord.log
new file mode 100644
index 0000000000000000000000000000000000000000..5eefce5a8c889cd291eb8631fe6d0a777ec3d950
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/logs/supervisord.log
@@ -0,0 +1,28 @@
+2020-05-14 15:23:25,726 INFO Included extra file "/etc/supervisor/conf.d/supervisord_novnc.conf" during parsing
+2020-05-14 15:23:25,727 INFO Included extra file "/etc/supervisor/conf.d/supervisord_vnc.conf" during parsing
+2020-05-14 15:23:25,743 INFO RPC interface 'supervisor' initialized
+2020-05-14 15:23:25,744 CRIT Server 'unix_http_server' running without any HTTP authentication checking
+2020-05-14 15:23:25,748 INFO supervisord started with pid 1
+2020-05-14 15:23:26,758 INFO spawned: 'novnc' with pid 18
+2020-05-14 15:23:26,768 INFO spawned: 'vnc' with pid 19
+2020-05-14 15:23:29,884 INFO reaped unknown pid 44
+2020-05-14 15:23:36,915 INFO success: novnc entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)
+2020-05-14 15:23:36,917 INFO success: vnc entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)
+2020-05-14 15:23:53,706 WARN received SIGINT indicating exit request
+2020-05-14 15:23:53,712 INFO waiting for novnc, vnc to die
+2020-05-14 15:23:54,721 INFO stopped: vnc (terminated by SIGTERM)
+2020-05-14 15:23:54,723 INFO stopped: novnc (terminated by SIGTERM)
+2020-05-14 15:23:57,760 INFO Included extra file "/etc/supervisor/conf.d/supervisord_novnc.conf" during parsing
+2020-05-14 15:23:57,761 INFO Included extra file "/etc/supervisor/conf.d/supervisord_vnc.conf" during parsing
+2020-05-14 15:23:57,776 INFO RPC interface 'supervisor' initialized
+2020-05-14 15:23:57,777 CRIT Server 'unix_http_server' running without any HTTP authentication checking
+2020-05-14 15:23:57,783 INFO supervisord started with pid 1
+2020-05-14 15:23:58,799 INFO spawned: 'novnc' with pid 11
+2020-05-14 15:23:58,808 INFO spawned: 'vnc' with pid 12
+2020-05-14 15:24:01,917 INFO reaped unknown pid 37
+2020-05-14 15:24:09,051 INFO success: novnc entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)
+2020-05-14 15:24:09,057 INFO success: vnc entered RUNNING state, process has stayed up for > than 10 seconds (startsecs)
+2020-05-14 15:24:17,133 WARN received SIGINT indicating exit request
+2020-05-14 15:24:17,136 INFO waiting for novnc, vnc to die
+2020-05-14 15:24:18,140 INFO stopped: vnc (terminated by SIGTERM)
+2020-05-14 15:24:18,145 INFO stopped: novnc (terminated by SIGTERM)
diff --git a/MinimalMetaDesktop-noVNC/metauser_home/logs/vnc.log b/MinimalMetaDesktop-noVNC/metauser_home/logs/vnc.log
new file mode 100644
index 0000000000000000000000000000000000000000..f7f02bebf021867c4fa4089c403107bc5f843f03
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/metauser_home/logs/vnc.log
@@ -0,0 +1,14 @@
+xauth:  file /home/metauser/.Xauthority does not exist
+
+New '8424db806320:0 ()' desktop is 8424db806320:0
+
+Creating default config /home/metauser/.vnc/config
+Starting applications specified in /opt/tigervnc/xstartup
+Log file is /home/metauser/.vnc/8424db806320:0.log
+
+
+New 'f4fd1f7a7af8:0 ()' desktop is f4fd1f7a7af8:0
+
+Starting applications specified in /opt/tigervnc/xstartup
+Log file is /home/metauser/.vnc/f4fd1f7a7af8:0.log
+
diff --git a/MinimalMetaDesktop-noVNC/push.sh b/MinimalMetaDesktop-noVNC/push.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d683726e14e7e0ef1d0d0299dbd2624981d0746d
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/push.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+docker tag minimalmetadesktop sarusso/minimalmetadesktop
+dind push sarusso/minimalmetadesktop
diff --git a/MinimalMetaDesktop-noVNC/run.sh b/MinimalMetaDesktop-noVNC/run.sh
new file mode 100755
index 0000000000000000000000000000000000000000..5ec2cd93a2fc8abd5b307c970127ea6296332ac3
--- /dev/null
+++ b/MinimalMetaDesktop-noVNC/run.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+docker run -v$PWD/:/data -p5900:5900 -p8590:8590 -it minimalmetadesktop