Files
debian-vnc-xfce-g3/docker/xfce-chromium/README-dockerhub.md
2023-03-06 18:29:12 +01:00

9.8 KiB

Headless Debian/Xfce container with VNC/noVNC and Chromium Browser

accetto/debian-vnc-xfce-chromium-g3

Docker Hub - Git Hub - Dockerfile - Full Readme - Changelog - Project Readme

badge-docker-pulls badge-docker-stars badge-github-release badge-github-release-date



Introduction

This repository contains resources for building Docker images based on Debian 11 with Xfce desktop environment and VNC/noVNC servers for headless use and the current Chromium web browser.

There is also a similar sibling image accetto/ubuntu-vnc-xfce-chromium-g3 based on Ubuntu 22.04 LTS and 20.04 LTS.

This is the short README version for the Docker Hub. There is also the full-length README on the GitHub.

TL;DR

Installing packages

I try to keep the images slim. Consequently you can encounter missing dependencies while adding more applications yourself. You can track the missing libraries on the Debian Packages Search page and install them subsequently.

You can also try to fix it by executing the following (the default sudo password is headless):

### apt cache needs to be updated only once
sudo apt-get update

sudo apt --fix-broken install

Shared memory size

Note that some applications require larger shared memory than the default 64MB. Using 256MB usually solves crashes or strange behavior.

You can check the current shared memory size by executing the following command inside the container:

df -h /dev/shm

The older sibling Wiki page Firefox multi-process describes several ways, how to increase the shared memory size.

Extending images

The provided example file Dockerfile.extend shows how to use the images as the base for your own images.

Your concrete Dockerfile may need more statements, but the concept should be clear.

The compose file example.yml shows how to switch to another non-root user and how to set the VNC password and resolution.

Building images

The fastest way to build the images:

### PWD = project root
### prepare and source the 'secrets.rc' file first (see 'example-secrets.rc')

### examples of building and publishing the individual images 
./builder.sh latest-chromium all

### just building an image, skipping the publishing and the version sticker update
./builder.sh latest-chromium build

### examples of building and publishing the images as a group
./ci-builder.sh all group latest-chromium

### or also
./ci-builder.sh all family latest-chromium

You can still execute the individual hook scripts as before (see the folder /docker/hooks/). However, the provided utilities builder.sh and ci-builder.sh are more convenient. Before pushing the images to the Docker Hub you have to prepare and source the file secrets.rc (see example-secrets.rc). The script builder.sh builds the individual images. The script ci-builder.sh can build various groups of images or all of them at once. Check the builder-utility-readme, local-building-example and sibling Wiki for more information.

Note that selected features that are enabled by default can be explicitly disabled via environment variables. This allows to build even smaller images by excluding, for example, noVNC. See the local-building-example for more information.

Sharing devices

Sharing the audio device for video with sound works only with Chromium and only on Linux:

docker run -it -P --rm \
  --device /dev/snd:/dev/snd:rw \
  --group-add audio \
accetto/debian-vnc-xfce-chromium-g3:latest

Sharing the display with the host works only on Linux:

xhost +local:$(whoami)

docker run -it -P --rm \
    -e DISPLAY=${DISPLAY} \
    --device /dev/dri/card0 \
    -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
    accetto/debian-vnc-xfce-chromium-g3:latest --skip-vnc

xhost -local:$(whoami)

Sharing the X11 socket with the host works only on Linux:

xhost +local:$(whoami)

docker run -it -P --rm \
    --device /dev/dri/card0 \
    -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
    accetto/debian-vnc-xfce-chromium-g3:latest

xhost -local:$(whoami)

Description

Attention: The Chromium Browser in these images runs in the --no-sandbox mode. You should be aware of the implications. The image is intended for testing and development.

This is the third generation (G3) of my headless images. The second generation (G2) contains the GitHub repository accetto/xubuntu-vnc-novnc. The first generation (G1) contains the GitHub repository accetto/ubuntu-vnc-xfce.

The main features and components of the images in the default configuration are:

  • utilities ping, wget, sudo (Debian distribution)
  • current version of JSON processor jq
  • light-weight Xfce desktop environment (Debian distribution)
  • current version of high-performance TigerVNC server and client
  • current version of noVNC HTML5 clients (full and lite) (TCP port 6901)
  • popular text editor nano (Debian distribution)
  • lite but advanced graphical editor mousepad (Debian distribution)
  • current version of tini as the entry-point initial process (PID 1)
  • support for overriding both the container user and the group
  • support of version sticker (see the full-length README on the GitHub)
  • current version of Chromium Browser open-source web browser (Debian distribution)

The history of notable changes is documented in the CHANGELOG.

container-screenshot

Image tags

The following image tags are regularly built and published on the Docker Hub:

  • latest based on Debian 11

    ![badge_latest_created][badge_latest_created] [![badge_latest_version-sticker][badge_latest_version-sticker]][link_latest_version-sticker-verbose]

Clicking on the version sticker badge reveals more information about the actual configuration of the image.

More information

More information about these images can be found in the full-length README file on the GitHub.