Commit df22203d authored by Stefano Alberto Russo's avatar Stefano Alberto Russo
Browse files

Added back noVNC-based desktop.

parent 31465d2a
Loading
Loading
Loading
Loading
+112 −0
Original line number Diff line number Diff line
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'
+3 −0
Original line number Diff line number Diff line
#!/bin/bash

docker build  . -t minimalmetadesktop
+9.96 KiB
Loading image diff...
+4 −0
Original line number Diff line number Diff line
[app] (name=fbrun)
  [Position]	(WINCENTER)	{0 0}
  [Layer]	{2}
[end]
+76 −0
Original line number Diff line number Diff line
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
Loading