From 94cff507b74b12911ce35a40b9944fa6719f533d Mon Sep 17 00:00:00 2001 From: DCsunset Date: Sat, 1 Feb 2020 21:20:10 -0800 Subject: [PATCH] feat: add ubuntu-vnc --- Dockerfile | 17 ++++++++ README.md | 65 ++++++++++++++++++++++++++++++ config/chromium-WebBrowser.desktop | 10 +++++ config/helpers.rc | 2 + start.sh | 14 +++++++ 5 files changed, 108 insertions(+) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 config/chromium-WebBrowser.desktop create mode 100644 config/helpers.rc create mode 100755 start.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..199029d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +ARG VERSION + +FROM ubuntu:${VERSION:-latest} +LABEL MAINTAINER="DCsunset" + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -yq xfce4 xfce4-goodies \ + tigervnc-standalone-server \ + chromium-browser vim + +COPY ./config/helpers.rc /root/.config/xfce4/ +COPY ./config/chromium-WebBrowser.desktop /root/.local/share/xfce4/helpers/ +COPY ./start.sh / + +EXPOSE 5900 80 + +CMD [ "/start.sh" ] diff --git a/README.md b/README.md new file mode 100644 index 0000000..0535f4f --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# docker-ubuntu-vnc + +An Ubuntu docker image to provide VNC access to +Xfce desktop environment. + +## Usage + +``` +docker run -d -p 5900:5900 -e VNC_PASSWD=password dcsunset/ubuntu-vnc +``` + +If `VNC_PASSWD` is not set, +then the security type of vncserver is set to None, +it is **insecure** when exposing the container on the Internet. + +## Exposed ports + +* 5900: Used for VNC interface + +## Installed applications + +To make the image lightweight, +only the following applications are installed by default: + +* Xfce desktop +* TigerVNC server +* Vim +* Chromium browser + +## Fonts + +If non-latin characters are not displayed well, +install the font packs based on your needs. + +To install the Indian font pack: + +``` +sudo apt-get install fonts-indic +``` + +To install the CJK font pack: + +``` +sudo apt-get install fonts-noto-cjk +``` + +To install the international font pack: + +``` +sudo apt-get install fonts-noto +``` + +## Build + +To use the latest Ubuntu image: + +``` +docker build -t ubuntu-vnc . +``` + +Or specify a version: + +``` +docker build --build-arg VERSION=18.04 -t ubuntu-vnc . +``` diff --git a/config/chromium-WebBrowser.desktop b/config/chromium-WebBrowser.desktop new file mode 100644 index 0000000..db095b9 --- /dev/null +++ b/config/chromium-WebBrowser.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +NoDisplay=true +Version=1.0 +Encoding=UTF-8 +Type=X-XFCE-Helper +X-XFCE-Category=WebBrowser +X-XFCE-CommandsWithParameter=chromium-browser --no-sandbox "%s" +Icon=chromium-browser +Name=chromium-browser +X-XFCE-Commands=chromium-browser --no-sandbox diff --git a/config/helpers.rc b/config/helpers.rc new file mode 100644 index 0000000..3c3af3e --- /dev/null +++ b/config/helpers.rc @@ -0,0 +1,2 @@ +TerminalEmulator=xfce4-terminal +WebBrowser=chromium-WebBrowser diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..99a007e --- /dev/null +++ b/start.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +umask 0077 # use safe default permissions +mkdir -p "$HOME/.vnc" # create config directory +chmod go-rwx "$HOME/.vnc" # enforce safe permissions + +if [ ! -z $VNC_PASSWD ]; then + vncpasswd -f <<< "$VNC_PASSWD" > "$HOME/.vnc/passwd" + vncserver -fg -localhost no :0 +else + vncpasswd -f <<< "" > "$HOME/.vnc/passwd" + vncserver -fg --I-KNOW-THIS-IS-INSECURE -SecurityTypes None -localhost no :0 +fi +