ubuntu-desktop-novnc is a Docker image to provide web VNC interface to access Ubuntu LXDE desktop environment, alone
side with a browser-based file management UI for quickly access the file system.
- When you want to quickly spawn an emperial Linux desktop, to test some software. Just throw away the entire environment when the work is finished
- When you want to create a containerized Ubuntu desktop environment to reproduce certain GUI workflows
Run the docker container and access with port 6080
docker run -p 6080:80 wenoptics/ubuntu-desktop-novncNavigate to http://127.0.0.1:6080/, you have a Ubuntu OS on your browser. You may also transfer files to the containerized system, by drag-n-drop them through the Web browser.
- VNC Viewer
- HTTP Base Authentication
- SSL
- Screen Resolution
- Default Desktop User
- Deploy to a subdirectory (relative url root)
- Sound (Preview version and Linux only)
- Troubleshooting and FAQ
- License
Forward VNC service port 5900 to host by
docker run -p 6080:80 -p 5900:5900 -v /dev/shm:/dev/shm wenoptics/ubuntu-desktop-novncNow, open the vnc viewer and connect to port 5900. If you would like to protect vnc service by password, set environment variable VNC_PASSWORD, for example
docker run -p 6080:80 -p 5900:5900 -e VNC_PASSWORD=mypassword -v /dev/shm:/dev/shm wenoptics/ubuntu-desktop-novncA prompt will ask password either in the browser or vnc viewer.
This image provides base access authentication of HTTP via HTTP_PASSWORD
docker run -p 6080:80 -e HTTP_PASSWORD=mypassword -v /dev/shm:/dev/shm wenoptics/ubuntu-desktop-novncTo connect with SSL, generate self signed SSL certificate first if you don't have it
mkdir -p ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl/nginx.key -out ssl/nginx.crtSpecify SSL port by SSL_PORT, certificate path to /etc/nginx/ssl, and forward it to 6081
docker run -p 6081:443 -e SSL_PORT=443 -v ${PWD}/ssl:/etc/nginx/ssl -v /dev/shm:/dev/shm wenoptics/ubuntu-desktop-novncThe Resolution of virtual desktop adapts browser window size when first connecting the server. You may choose a fixed resolution by passing RESOLUTION environment variable, for example
docker run -p 6080:80 -e RESOLUTION=1920x1080 -v /dev/shm:/dev/shm wenoptics/ubuntu-desktop-novncThe default user is root. You may change the user and password respectively by USER and PASSWORD environment variable, for example,
docker run -p 6080:80 -e USER=doro -e PASSWORD=password -v /dev/shm:/dev/shm wenoptics/ubuntu-desktop-novncYou may deploy this application to a subdirectory, for example /some-prefix/. You then can access application by http://127.0.0.1:6080/some-prefix/. This can be specified using the RELATIVE_URL_ROOT configuration option like this
docker run -p 6080:80 -e RELATIVE_URL_ROOT=some-prefix wenoptics/ubuntu-desktop-novncNOTE: this variable should not have any leading and trailing splash (/)
It only works in Linux.
First of all, insert kernel module snd-aloop and specify 2 as the index of sound loop device
sudo modprobe snd-aloop index=2Start the container
docker run -it --rm -p 6080:80 --device /dev/snd -e ALSADEV=hw:2,0 wenoptics/ubuntu-desktop-novncwhere --device /dev/snd -e ALSADEV=hw:2,0 means to grant sound device to container and set basic ASLA config to use card 2.
Launch a browser with URL http://127.0.0.1:6080/#/?video, where video means to start with video mode. Now you can start Chromium in start menu (Internet -> Chromium Web Browser Sound) and try to play some video.
Following is the screen capture of these operations. Turn on your sound at the end of video!
- boot2docker connection issue, fcwu#2
- Multi-language supports, fcwu#80
- Autostart, fcwu#85 (comment)
- x11vnc arguments(multiptr), fcwu#101
- firefox/chrome crash (/dev/shm), fcwu#112
- resize display size without destroying container, fcwu#115 (comment)
See the LICENSE file for details.

