From e2a2555d16fa20e0b26a3e7f771d316cf8e25458 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 9 Oct 2022 22:13:11 -0400 Subject: [PATCH 001/161] Added changelog for version 22.10.1. --- appdefs.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 2e68149..093524b 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -119,6 +119,18 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 22.10.1 + date: 2022-10-09 + changes: + - 'Versioning scheme changed to `YY.MM.SEQUENCE`.' + - 'Updated Firefox to version 101.0.1-r0.' + - 'Added support for kiosk mode.' + - 'Added support for URL opening at launch.' + - 'Update of the baseimage to version 4.0.1 brings the following nbew features:' + - '2:Multi-arch image support.' + - '2:Support for dark mode.' + - '2:Support for remote window resize.' + - '2:Updated the web UI with a new, simplified and less intrusive look.' - version: 1.18.0 date: 2021-12-30 changes: From cb05ee9dfdb086a8813438d3dcc01bf3a5c039e6 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 9 Oct 2022 22:39:48 -0400 Subject: [PATCH 002/161] Fixed inspect of image. --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index ba18e81..0baf367 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -127,7 +127,7 @@ jobs: - name: Inspect if: ${{ steps.prep.outputs.is_release == 'yes' }} run: | - docker buildx imagetools inspect ${{ env.DOCKER_IMAGE_NAME }}:${VERSION} + docker buildx imagetools inspect ${{ env.DOCKER_IMAGE_NAME }}:${{ steps.prep.outputs.version }} post-build: name: Post-build From 74e1036af74dd7f313ea224b62c6767ded8971ba Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 9 Oct 2022 22:50:08 -0400 Subject: [PATCH 003/161] Fixed push of docker hub description. --- .github/workflows/build-image.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 0baf367..2424989 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -129,11 +129,6 @@ jobs: run: | docker buildx imagetools inspect ${{ env.DOCKER_IMAGE_NAME }}:${{ steps.prep.outputs.version }} - post-build: - name: Post-build - needs: [ build ] - runs-on: ubuntu-20.04 - steps: - name: Dockerhub description if: ${{ steps.prep.outputs.release_type == 'standard' }} uses: peter-evans/dockerhub-description@v3 @@ -145,7 +140,7 @@ jobs: notification: name: Notification - needs: [ build, post-build ] + needs: [ build ] runs-on: ubuntu-20.04 if: ${{ always() }} From d2615c3028d7b7e2a17561d41fe5a50db467f7e8 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 9 Oct 2022 22:57:59 -0400 Subject: [PATCH 004/161] Updated Docker hub description. --- DOCKERHUB.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DOCKERHUB.md b/DOCKERHUB.md index fb2c4b1..86f0591 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -8,7 +8,7 @@ installation or configuration needed on the client side) or via any VNC client. --- -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=200)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://dummyimage.com/400x110/ffffff/575757&text=Firefox)](https://www.mozilla.org/en-US/firefox/) +[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=200)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=Georgia,sans-serif&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. From d52d8e95bf2e3777dbb914dd8c13fd41ffcd6844 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 9 Oct 2022 23:56:48 -0400 Subject: [PATCH 005/161] No need to take ownership of the config directory: this is done by the baseimage. --- rootfs/etc/cont-init.d/55-firefox.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-firefox.sh index 8f4c73d..1f89ef1 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-firefox.sh @@ -68,7 +68,4 @@ do touch "$LOG_FILE" done -# Take ownership of the config directory content. -find /config -mindepth 1 -exec chown $USER_ID:$GROUP_ID {} \; - # vim: set ft=sh : From 2b14dd6a9b02aa2be46276517404f9ee3818eb87 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 10 Oct 2022 13:49:35 -0400 Subject: [PATCH 006/161] Fixed handling of supplementary groups for sound device. --- rootfs/etc/cont-init.d/55-check-snd.sh | 4 ---- rootfs/etc/services.d/app/sgid | 28 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) create mode 100755 rootfs/etc/services.d/app/sgid diff --git a/rootfs/etc/cont-init.d/55-check-snd.sh b/rootfs/etc/cont-init.d/55-check-snd.sh index 1e917f3..58b805c 100755 --- a/rootfs/etc/cont-init.d/55-check-snd.sh +++ b/rootfs/etc/cont-init.d/55-check-snd.sh @@ -13,9 +13,5 @@ fi # Save the associated group. SND_GRP="$(find "$SND_DEV" -maxdepth 1 -not -type d -exec stat -c "%g" {} \; | sort -u | tail -n1)" echo "sound device group $SND_GRP." -if [ -f /var/run/s6/container_environment/SUP_GROUP_IDS ]; then - echo -n "," >> /var/run/s6/container_environment/SUP_GROUP_IDS -fi -echo -n "$SND_GRP" >> /var/run/s6/container_environment/SUP_GROUP_IDS # vim: set ft=sh : diff --git a/rootfs/etc/services.d/app/sgid b/rootfs/etc/services.d/app/sgid new file mode 100755 index 0000000..48f972d --- /dev/null +++ b/rootfs/etc/services.d/app/sgid @@ -0,0 +1,28 @@ +#!/bin/sh +# +# Get the supplementary group ID(s) needed to access sound device. These are +# added to the ones provided by $SUP_GROUP_IDS. +# + +set -e # Exit immediately if a command exits with a non-zero status. +set -u # Treat unset variables as an error. + +SND_DEV="/dev/snd" + +SUP_GROUP_IDS="${SUP_GROUP_IDS:-}" + +# Add group associated to the sound device. +if [ -d "$SND_DEV" ]; then + # Save the associated group. + SND_GRP="$(find "$SND_DEV" -maxdepth 1 -not -type d -exec stat -c "%g" {} \; | sort -u | tail -n1)" + + if [ -n "$SUP_GROUP_IDS" ]; then + SUP_GROUP_IDS="$SUP_GROUP_IDS,$SND_GRP" + else + SUP_GROUP_IDS="$SND_GRP" + fi +fi + +echo "$SUP_GROUP_IDS" | tr ',' '\n' + +# vim:ft=sh:ts=4:sw=4:et:sts=4 From 9e03c947780767ee9387094de586949bcde268e9 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 10 Oct 2022 17:55:19 -0400 Subject: [PATCH 007/161] Updated baseimage to version 4.0.2. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9a1f2d5..edf980e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.16-v4.0.1 +FROM jlesage/baseimage-gui:alpine-3.16-v4.0.2 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From ddc77a277f525ebf8a98e4c0ec6d0b93c1181972 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 10 Oct 2022 18:08:55 -0400 Subject: [PATCH 008/161] Added changelog for version 22.10.2. --- appdefs.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 093524b..385cfb3 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -119,6 +119,12 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 22.10.2 + date: 2022-10-10 + changes: + - 'Fixed an issue where taking ownership of `/config` would fail if a subfolder is mapped to a network share.' + - 'Fixed handling of exposed sound device.' + - 'Fixed handling of the VNC password.' - version: 22.10.1 date: 2022-10-09 changes: From e3322f7d93772f98791516ecb0d795e01247362e Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 10 Oct 2022 18:13:41 -0400 Subject: [PATCH 009/161] Removed leftover files from old CI. --- .travis.yml | 14 -------------- hooks/post_push | 39 --------------------------------------- hooks/pre_build | 38 -------------------------------------- 3 files changed, 91 deletions(-) delete mode 100644 .travis.yml delete mode 100755 hooks/post_push delete mode 100755 hooks/pre_build diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 197c633..0000000 --- a/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -# -# Travis CI recipe to build docker image. -# - -sudo: required - -language: generic - -services: - - docker - -script: - - echo "Starting build of Docker image..." - - docker build --no-cache --pull -t $TRAVIS_REPO_SLUG:$TRAVIS_JOB_ID . diff --git a/hooks/post_push b/hooks/post_push deleted file mode 100755 index b5b7eee..0000000 --- a/hooks/post_push +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# -# Post push hook for Docker Automated Build. -# -# This hook adds the 'latest' tag to the image. -# - -set -e # Exit immediately if a command exits with a non-zero status. -set -u # Treat unset variables as an error. - -source custom_hook_env - -echo "Environment variables: - IMAGE_NAME=$IMAGE_NAME - DOCKER_REPO=$DOCKER_REPO - DOCKER_TAG=$DOCKER_TAG - SOURCE_BRANCH=$SOURCE_BRANCH - IMAGE_VERSION=$IMAGE_VERSION -" - -if [[ "$DOCKER_TAG" =~ v[0-9]+\.[0-9]+\.[0-9]+-alpha[0-9]+$ ]]; then - DOCKER_NEWTAG="$(echo "$DOCKER_TAG" | sed 's/-alpha[0-9]\+$/-alpha/')" -elif [[ "$DOCKER_TAG" =~ v[0-9]+\.[0-9]+\.[0-9]+-beta[0-9]+$ ]]; then - DOCKER_NEWTAG="$(echo "$DOCKER_TAG" | sed 's/-beta[0-9]\+$/-beta/')" -elif [[ "$DOCKER_TAG" =~ v[0-9]+\.[0-9]+\.[0-9]+-rc[0-9]+$ ]]; then - DOCKER_NEWTAG="$(echo "$DOCKER_TAG" | sed 's/-rc[0-9]\+$/-rc/')" -elif [[ "$DOCKER_TAG" =~ v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - DOCKER_NEWTAG="latest" -else - echo "ERROR: Invalid docker tag." - exit 1 -fi - -echo "Adding tag '$DOCKER_NEWTAG' to image..." -docker tag $IMAGE_NAME ${DOCKER_REPO}:$DOCKER_NEWTAG -echo "Pushing image..." -docker push ${DOCKER_REPO}:$DOCKER_NEWTAG - -echo "post_push hook terminated successfully." diff --git a/hooks/pre_build b/hooks/pre_build deleted file mode 100755 index 0553203..0000000 --- a/hooks/pre_build +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# -# Pre build hook for Docker Automated Build. -# -# This hooks modifies the Dockerfile by inserting the image version in the -# related label. -# - -set -e # Exit immediately if a command exits with a non-zero status. -set -u # Treat unset variables as an error. - -# Make sure the DOCKER_TAG has a supported format like: -# v1.0.0 -# v0.1.0-beta1 -# v2.0.0-rc2 -if [[ ! "$DOCKER_TAG" =~ ^v[0-9\.]+(-(alpha|beta|rc)[0-9]+)?$ ]]; then - echo "Unsupported DOCKER_TAG: $DOCKER_TAG" - exit 1 -fi - -# The version to use is the same has the DOCKER_TAG, minus the initial 'v'. -IMAGE_VERSION="${DOCKER_TAG:1}" - -# Export our custom variables. -echo "IMAGE_VERSION=\"$IMAGE_VERSION\"" >> custom_hook_env - -echo "Environment variables: - IMAGE_NAME=$IMAGE_NAME - DOCKER_REPO=$DOCKER_REPO - DOCKER_TAG=$DOCKER_TAG - SOURCE_BRANCH=$SOURCE_BRANCH - IMAGE_VERSION=$IMAGE_VERSION -" - -echo "Inserting image version in Dockerfile..." -sed -i "s/org.label-schema.version=\"unknown\"/org.label-schema.version=\"$IMAGE_VERSION\"/" Dockerfile - -echo "pre_build hook terminated successfully." From a7b22a39aa478981159e5cb0dd81f69729e14869 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 10 Oct 2022 18:51:37 -0400 Subject: [PATCH 010/161] No need to expose `/config` (already done by the baseimage). --- Dockerfile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index edf980e..f7ca87f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -124,9 +124,6 @@ ENV \ FF_OPEN_URL= \ FF_KIOSK=0 -# Define mountable directories. -VOLUME ["/config"] - # Metadata. LABEL \ org.label-schema.name="firefox" \ From 011a7eb0214face8809a1b93f1ee629333fde961 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 12 Oct 2022 20:37:36 -0400 Subject: [PATCH 011/161] Cosmetic change. --- appdefs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index 385cfb3..7a7dcba 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -6,7 +6,7 @@ # This file is used as data source to generate README.md and unRAID template files # from Jinja2 templates. # -# + app: id: 14 name: firefox From 38fecc4d86e0b15e1e12c77cb3bd1d469c8319c6 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 12 Oct 2022 20:38:14 -0400 Subject: [PATCH 012/161] Replaced usage of the depricated `set-output` function. --- .github/workflows/build-image.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 2424989..3547417 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -88,12 +88,12 @@ jobs: echo "Docker container tag(s): $TAGS" echo "::endgroup::" # Export outputs. - echo ::set-output name=is_release::${IS_RELEASE} - echo ::set-output name=release_type::${RELEASE_TYPE} - echo ::set-output name=version::${VERSION} - echo ::set-output name=label_version::${LABEL_VERSION} - echo ::set-output name=tags::${TAGS} - #echo ::set-output name=build_date::$(date -u +'%Y-%m-%dT%H:%M:%SZ') + echo "is_release=${IS_RELEASE}" >> $GITHUB_OUTPUT + echo "release_type=${RELEASE_TYPE}" >> $GITHUB_OUTPUT + echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "label_version=${LABEL_VERSION}" >> $GITHUB_OUTPUT + echo "tags=${TAGS}" >> $GITHUB_OUTPUT + #echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - name: Checkout uses: actions/checkout@v3 From ec2e47776c2f3cfb08c973d156e235e8819e4b66 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 13 Oct 2022 16:59:26 -0400 Subject: [PATCH 013/161] Added concurrency on workflow. --- .github/workflows/build-image.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 3547417..8372a98 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -1,5 +1,9 @@ name: Docker image CI/CD +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + env: DOCKER_IMAGE_NAME: jlesage/firefox PLATFORMS: linux/amd64,linux/386,linux/arm/v7,linux/arm64/v8 From 33638503579b08a03274dfa94bb187a2ee4383e5 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 14 Oct 2022 12:32:19 -0400 Subject: [PATCH 014/161] Updated baseimage to version 4.0.4. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f7ca87f..e91b32e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.16-v4.0.2 +FROM jlesage/baseimage-gui:alpine-3.16-v4.0.4 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 908c78c9646441833d9d54420829491228d88edc Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 14 Oct 2022 16:20:36 -0400 Subject: [PATCH 015/161] Added changelog for version 22.10.3. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 7a7dcba..26afd54 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -119,6 +119,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 22.10.3 + date: 2022-10-14 + changes: + - 'Fixed scenario where a reverse proxy with routing based un URL path is used.' - version: 22.10.2 date: 2022-10-10 changes: From 7b3b62c036beacc1a9a279857611cae6acf7c820 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 24 Oct 2022 10:45:02 -0400 Subject: [PATCH 016/161] Updated baseimage to version 4.1.1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e91b32e..94da87d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.16-v4.0.4 +FROM jlesage/baseimage-gui:alpine-3.16-v4.1.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From b1e95e7f592b3d62a0f90e873a4dc6a1d331ad08 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 24 Oct 2022 17:19:38 -0400 Subject: [PATCH 017/161] Added changelog for version 22.10.4. --- appdefs.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 26afd54..e848ad2 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -119,6 +119,16 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 22.10.4 + date: 2022-10-24 + changes: + - 'Update of the baseimage to version 4.1.1 brings the following changes:' + - '2:Collapse the setting section of the control panel by default on touch devices to accommodate the size taken by the on-screen keyboard.' + - '2:Include the Docker image platform in informational box printed during container startup.' + - '2:Fixed logmonitor crash on arm64 platform.' + - '2:A umask value of `0000` was not properly applied.' + - '2:Fixed issue where the window manager configuration may fail to load.' + - '2:Fixed errors from yad caused by usage of wrong fontconfig related files.' - version: 22.10.3 date: 2022-10-14 changes: From feacf0295d53988aae5fe5f0285430ab0774a3bb Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 25 Oct 2022 21:11:03 -0400 Subject: [PATCH 018/161] Adjusted rough download size. --- appdefs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index e848ad2..9269c25 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -289,7 +289,7 @@ app: - 'Initial release.' container: - rough_download_size: 150MB + rough_download_size: 160MB unsupported_volume: /storage # Environment variables. From 507d7c4e2a17ad923732905031898b1ea8855c1c Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 25 Oct 2022 21:10:18 -0400 Subject: [PATCH 019/161] Fixed paypal URL. --- .github/FUNDING.yml | 2 +- DOCKERHUB.md | 2 +- README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 90277b8..d06fbc2 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: https://paypal.me/JocelynLeSage/0usd +custom: https://paypal.me/JocelynLeSage diff --git a/DOCKERHUB.md b/DOCKERHUB.md index 86f0591..b2d75d7 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -1,5 +1,5 @@ # Docker container for Firefox -[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest)](https://hub.docker.com/r/jlesage/firefox/tags) [![Build Status](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml/badge.svg?branch=master)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![GitHub Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg)](https://github.com/jlesage/docker-firefox/releases/latest) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/JocelynLeSage/0usd) +[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest)](https://hub.docker.com/r/jlesage/firefox/tags) [![Build Status](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml/badge.svg?branch=master)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![GitHub Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg)](https://github.com/jlesage/docker-firefox/releases/latest) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/JocelynLeSage) This is a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). diff --git a/README.md b/README.md index 996f881..4795076 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Docker container for Firefox -[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest)](https://hub.docker.com/r/jlesage/firefox/tags) [![Build Status](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml/badge.svg?branch=master)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![GitHub Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg)](https://github.com/jlesage/docker-firefox/releases/latest) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/JocelynLeSage/0usd) +[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest)](https://hub.docker.com/r/jlesage/firefox/tags) [![Build Status](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml/badge.svg?branch=master)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![GitHub Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg)](https://github.com/jlesage/docker-firefox/releases/latest) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/JocelynLeSage) This is a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). From 193008005a60a1017628b9bfd8d6f832e04bc2b3 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 25 Oct 2022 21:10:24 -0400 Subject: [PATCH 020/161] Fixed typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4795076..8145945 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ services: ## Docker Image Versioning -Each release of a Docker image is versioned. Prio to october 2022, the +Each release of a Docker image is versioned. Prior to october 2022, the [semantic versioning](https://semver.org) was used as the versioning scheme. Since then, versioning scheme changed to From b317a7de8297a11f0fa74df9255ea803e4761fc4 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 9 Dec 2022 13:54:06 -0500 Subject: [PATCH 021/161] Adjusted wording of a changelog change. --- appdefs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index 9269c25..d47146c 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -142,7 +142,7 @@ app: - version: 22.10.1 date: 2022-10-09 changes: - - 'Versioning scheme changed to `YY.MM.SEQUENCE`.' + - 'Versioning scheme of the Docker image changed to `YY.MM.SEQUENCE`.' - 'Updated Firefox to version 101.0.1-r0.' - 'Added support for kiosk mode.' - 'Added support for URL opening at launch.' From 80044c77f7b0622bb0d04e3cb162d81c7d97467d Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 9 Dec 2022 13:55:41 -0500 Subject: [PATCH 022/161] - Updated Firefox to version 107.0.1-r1. - Updated baseimage to version 4.2.1, based on Alpine 3.17. --- Dockerfile | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 94da87d..262a1e0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,13 +13,13 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.16-v4.1.1 +FROM jlesage/baseimage-gui:alpine-3.17-v4.2.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=101.0.1-r0 +ARG FIREFOX_VERSION=107.0.1-r1 ARG JSONLZ4_VERSION=c4305b8 ARG LZ4_VERSION=1.8.1.2 #ARG PROFILE_CLEANER_VERSION=2.36 @@ -66,16 +66,19 @@ RUN \ RUN \ add-pkg \ # Icons used by folder/file selection window (when saving as). - gnome-icon-theme \ + adwaita-icon-theme \ # A font is needed. ttf-dejavu \ # The following package is used to send key presses to the X process. - xdotool + xdotool \ + && \ + # Remove unneeded icons. + find /usr/share/icons/Adwaita -type d -mindepth 1 -maxdepth 1 -not -name 16x16 -not -name scalable -exec rm -rf {} ';' && \ + true # Set default settings. RUN \ - CFG_FILE="$(ls /usr/lib/firefox/browser/defaults/preferences/firefox-branding.js)" && \ - echo '' >> "$CFG_FILE" && \ + CFG_FILE="/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js" && \ echo '// Default download directory.' >> "$CFG_FILE" && \ echo 'pref("browser.download.dir", "/config/downloads");' >> "$CFG_FILE" && \ echo 'pref("browser.download.folderList", 2);' >> "$CFG_FILE" From bd6953cfebfd01047ccc61680400cfed0bb29cf7 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 9 Dec 2022 13:57:55 -0500 Subject: [PATCH 023/161] Changed font to a one using less space. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 262a1e0..f050978 100644 --- a/Dockerfile +++ b/Dockerfile @@ -68,7 +68,7 @@ RUN \ # Icons used by folder/file selection window (when saving as). adwaita-icon-theme \ # A font is needed. - ttf-dejavu \ + font-cantarell \ # The following package is used to send key presses to the X process. xdotool \ && \ From bbf1a7c10e2af86dab872828c190916fd063997e Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 9 Dec 2022 14:08:09 -0500 Subject: [PATCH 024/161] Udated README. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8145945..8082193 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ of this parameter has the format `=`. |`GROUP_ID`| ID of the group the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | |`SUP_GROUP_IDS`| Comma-separated list of supplementary group IDs of the application. | `""` | |`UMASK`| Mask that controls how file permissions are set for newly created files. The value of the mask is in octal notation. By default, the default umask value is `0022`, meaning that newly created files are readable by everyone, but only writable by the owner. See the online umask calculator at http://wintelguy.com/umask-calc.pl. | `0022` | +|`LANG`| Set the [locale](https://en.wikipedia.org/wiki/Locale_(computer_software)), which defines the application's language, **if supported**. Format of the locale is `language[_territory][.codeset]`, where language is an [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), territory is an [ISO 3166 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes) and codeset is a character set, like `UTF-8`. For example, Australian English using the UTF-8 encoding is `en_AU.UTF-8`. | `en_US.UTF-8` | |`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | |`KEEP_APP_RUNNING`| When set to `1`, the application will be automatically restarted when it crashes or terminates. | `0` | |`APP_NICENESS`| Priority at which the application should run. A niceness value of -20 is the highest priority and 19 is the lowest priority. The default niceness value is 0. **NOTE**: A negative niceness (priority increase) requires additional permissions. In this case, the container should be run with the docker option `--cap-add=SYS_NICE`. | `0` | From 8221ae534cfefeb6e91ee81d9123f8f46ae80b40 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 9 Dec 2022 14:09:00 -0500 Subject: [PATCH 025/161] Make sure log files do not grow indefinitely. --- rootfs/etc/cont-init.d/55-firefox.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-firefox.sh index 1f89ef1..1fe8c77 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-firefox.sh @@ -62,10 +62,15 @@ if [ -n "$(ls /config/profile/sessionstore-backups/*.jsonlz4 2>/dev/null)" ]; th done fi -# Make sure monitored log files exist. -for LOG_FILE in /config/log/firefox/error.log +# Initialize log files. +for LOG_FILE in /config/log/firefox/output.log /config/log/firefox/error.log do touch "$LOG_FILE" + + # Make sure the file doesn't grow indefinitely. + if [ "$(stat -c %s "$LOG_FILE")" -gt 1048576 ]; then + echo > "$LOG_FILE" + fi done # vim: set ft=sh : From 5d501035502bbbe532b588a3d64fe6894994aedd Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 9 Dec 2022 14:22:17 -0500 Subject: [PATCH 026/161] Added changelog for version 22.12.1. --- appdefs.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index d47146c..04e9e10 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -119,6 +119,11 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 22.12.1 + date: 2022-12-09 + changes: + - 'Updated Firefox to version 107.0.1-r1.' + - 'Updated baseimage to version `4.2.1`, which brings multiple internal enhancements.' - version: 22.10.4 date: 2022-10-24 changes: From 10be60dabc97620aaed2a6e89b1a815888e9d483 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 11 Dec 2022 18:31:45 -0500 Subject: [PATCH 027/161] Updated baseimage to version 4.2.2. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f050978..51076e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.2.1 +FROM jlesage/baseimage-gui:alpine-3.17-v4.2.2 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 50fdfeeba26b1c26275dac86fe9ca284a0f42662 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 11 Dec 2022 18:44:19 -0500 Subject: [PATCH 028/161] Added changelog for version 22.12.2. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 04e9e10..341cb97 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -119,6 +119,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 22.12.2 + date: 2022-12-11 + changes: + - 'Implemented workaround for issue seen with Synology devices where container would not start after an image update. The problem is caused by Synology explicitly setting all environment variables and keeping values from the old version.' - version: 22.12.1 date: 2022-12-09 changes: From 4b9fba099ca0682033974cd25a96ab387bb3cd04 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 20 Dec 2022 17:44:32 -0500 Subject: [PATCH 029/161] Removed unset default. --- appdefs.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index 341cb97..fbd5169 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -307,7 +307,6 @@ container: description: >- The URL to open when {{ app.friendly_name }} starts. type: public - default: - name: FF_KIOSK description: >- Set to `1` to enable kiosk mode. This mode launches Firefox in a very From f6f9714f37542b9808d0b7eae85921d90d3901fe Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 25 Dec 2022 13:29:52 -0500 Subject: [PATCH 030/161] Updated Firefox to version 108.0.1-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 51076e7..8897ece 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.17-v4.2.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=107.0.1-r1 +ARG FIREFOX_VERSION=108.0.1-r0 ARG JSONLZ4_VERSION=c4305b8 ARG LZ4_VERSION=1.8.1.2 #ARG PROFILE_CLEANER_VERSION=2.36 From e8ea74ae359223d05fb11a19b5cf4802fcd8e144 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 3 Jan 2023 16:59:07 -0500 Subject: [PATCH 031/161] Updated Firefox to version 108.0.1-r1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8897ece..fe8442b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.17-v4.2.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=108.0.1-r0 +ARG FIREFOX_VERSION=108.0.1-r1 ARG JSONLZ4_VERSION=c4305b8 ARG LZ4_VERSION=1.8.1.2 #ARG PROFILE_CLEANER_VERSION=2.36 From 974a94d2fde8a04b98f81c857479a26df4f114d0 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 4 Jan 2023 20:34:10 -0500 Subject: [PATCH 032/161] Updated README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8082193..057e5cb 100644 --- a/README.md +++ b/README.md @@ -476,7 +476,7 @@ docker exec -ti CONTAINER sh ``` Where `CONTAINER` is the ID or the name of the container used during its -creation (e.g. `crashplan-pro`). +creation. ## Increasing Shared Memory Size From 071fb903b0c5b23ef5e2b8221057297798ed8a3a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 4 Jan 2023 20:33:59 -0500 Subject: [PATCH 033/161] Firefox is no longer using `/dev/shm`. --- DOCKERHUB.md | 1 - README.md | 22 -------------- appdefs.yml | 30 ------------------- rootfs/etc/cont-init.d/55-firefox.sh | 9 ------ .../logmonitor/notifications.d/shm_size/desc | 2 -- .../notifications.d/shm_size/filter | 16 ---------- .../logmonitor/notifications.d/shm_size/level | 1 - .../logmonitor/notifications.d/shm_size/title | 2 -- .../logmonitor/notifications.d/tab_crash/desc | 2 -- .../notifications.d/tab_crash/filter | 17 ----------- .../notifications.d/tab_crash/level | 1 - .../notifications.d/tab_crash/title | 2 -- 12 files changed, 105 deletions(-) delete mode 100755 rootfs/etc/logmonitor/notifications.d/shm_size/desc delete mode 100755 rootfs/etc/logmonitor/notifications.d/shm_size/filter delete mode 100644 rootfs/etc/logmonitor/notifications.d/shm_size/level delete mode 100755 rootfs/etc/logmonitor/notifications.d/shm_size/title delete mode 100755 rootfs/etc/logmonitor/notifications.d/tab_crash/desc delete mode 100755 rootfs/etc/logmonitor/notifications.d/tab_crash/filter delete mode 100644 rootfs/etc/logmonitor/notifications.d/tab_crash/level delete mode 100755 rootfs/etc/logmonitor/notifications.d/tab_crash/title diff --git a/DOCKERHUB.md b/DOCKERHUB.md index b2d75d7..f7ce844 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -26,7 +26,6 @@ docker run -d \ --name=firefox \ -p 5800:5800 \ -v /docker/appdata/firefox:/config:rw \ - --shm-size 2g \ jlesage/firefox ``` diff --git a/README.md b/README.md index 057e5cb..13dcb0e 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,6 @@ Foundation and its subsidiary, Mozilla Corporation. * [Routing Based on Hostname](#routing-based-on-hostname) * [Routing Based on URL Path](#routing-based-on-url-path) * [Shell Access](#shell-access) - * [Increasing Shared Memory Size](#increasing-shared-memory-size) * [Allowing the membarrier System Call](#allowing-the-membarrier-system-call) * [Sound Support](#sound-support) * [Setting Firefox Preferences Via Environment Variables](#setting-firefox-preferences-via-environment-variables) @@ -57,7 +56,6 @@ docker run -d \ --name=firefox \ -p 5800:5800 \ -v /docker/appdata/firefox:/config:rw \ - --shm-size 2g \ jlesage/firefox ``` @@ -74,7 +72,6 @@ docker run [-d] \ [-e =]... \ [-v :[:PERMISSIONS]]... \ [-p :]... \ - --shm-size VALUE \ jlesage/firefox ``` | Parameter | Description | @@ -83,7 +80,6 @@ docker run [-d] \ | -e | Pass an environment variable to the container. See the [Environment Variables](#environment-variables) section for more details. | | -v | Set a volume mapping (allows to share a folder/file between the host and the container). See the [Data Volumes](#data-volumes) section for more details. | | -p | Set a network port mapping (exposes an internal container port to the host). See the [Ports](#ports) section for more details. | -| --shm-size | Set the size of `/dev/shm` to `VALUE`. The format of `VALUE` is ``, where `number` must be greater than `0` and `unit` can be `b` (bytes), `k` (kilobytes), `m` (megabytes), or `g` (gigabytes). **NOTE**: To avoid crashes, it is recommended to set this value to `2g`. | ### Environment Variables @@ -478,21 +474,6 @@ docker exec -ti CONTAINER sh Where `CONTAINER` is the ID or the name of the container used during its creation. -## Increasing Shared Memory Size - -To prevent crashes from happening when running Firefox -inside a Docker container, the size of the shared memory located at `/dev/shm` -must be increased. The issue is documented [here]. - -By default, the size is 64MB, which is not enough. It is recommended to use a -size of 2GB. This value is arbitrary, but known to work well. Setting the -size of `/dev/shm` can be done via two method: - - - By adding the `--shm-size 2g` parameter to the `docker run` command. See - the [Usage](#usage) section for more details. - - By using shared memory of the host, by mapping `/dev/shm` via the parameter - `-v /dev/shm:/dev/shm` of the `docker run` command. - ## Allowing the membarrier System Call To properly work, recent versions of Firefox need the @@ -566,9 +547,6 @@ via Firefox directly. ### Crashes If Firefox is crashing frequently, make sure that: - - The size of the shared memory located at `/dev/shm` has been increased. See - the [Increasing Shared Memory Size](#increasing-shared-memory-size) section - for more details. - The `membarrier` system call is not blocked by Docker. See the [Allowing the membarrier System Call](#allowing-the-membarrier-system-call) for more details. diff --git a/appdefs.yml b/appdefs.yml index fbd5169..5e00347 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -22,21 +22,6 @@ app: category: "Tools:" documentation: sections: - - title: Increasing Shared Memory Size - level: 2 - content: |- - To prevent crashes from happening when running {{ app.friendly_name }} - inside a Docker container, the size of the shared memory located at `/dev/shm` - must be increased. The issue is documented [here]. - - By default, the size is 64MB, which is not enough. It is recommended to use a - size of 2GB. This value is arbitrary, but known to work well. Setting the - size of `/dev/shm` can be done via two method: - - - By adding the `--shm-size 2g` parameter to the `docker run` command. See - the [Usage](#usage) section for more details. - - By using shared memory of the host, by mapping `/dev/shm` via the parameter - `-v /dev/shm:/dev/shm` of the `docker run` command. - title: Allowing the membarrier System Call level: 2 content: |- @@ -111,9 +96,6 @@ app: level: 3 content: |- If {{ app.friendly_name }} is crashing frequently, make sure that: - - The size of the shared memory located at `/dev/shm` has been increased. See - the [Increasing Shared Memory Size](#increasing-shared-memory-size) section - for more details. - The `membarrier` system call is not blocked by Docker. See the [Allowing the membarrier System Call](#allowing-the-membarrier-system-call) for more details. @@ -325,15 +307,3 @@ container: devices: - path: /dev/snd description: Optional Linux device to expose to have sound. - - # Extra parameters - extra_params: - - name: shm-size - value: 2g - description: >- - Set the size of `/dev/shm` to `VALUE`. The format of `VALUE` is - ``, where `number` must be greater than `0` and `unit` - can be `b` (bytes), `k` (kilobytes), `m` (megabytes), or `g` - (gigabytes). **NOTE**: To avoid crashes, it is recommended to set this - value to `2g`. - include_in_quick_start: true diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-firefox.sh index 1fe8c77..ab4a68b 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-firefox.sh @@ -17,15 +17,6 @@ fi # Copy default preferences. [ -f /config/profile/prefs.js ] || cp /defaults/prefs.js /config/profile/prefs.js -# Verify the size of /dev/shm. -SHM_SIZE_MB="$(df -m /dev/shm | tail -n 1 | tr -s ' ' | cut -d ' ' -f2)" -if [ "$SHM_SIZE_MB" -eq 64 ]; then - echo 'SHM_CHECK_FAIL' > /tmp/.firefox_shm_check -else - echo 'SHM_CHECK_PASS' > /tmp/.firefox_shm_check -fi -chown $USER_ID:$GROUP_ID /tmp/.firefox_shm_check - if /usr/bin/membarrier_check 2>/dev/null; then echo 'MEMBARRIER_CHECK_PASS' > /tmp/.firefox_membarrier_check else diff --git a/rootfs/etc/logmonitor/notifications.d/shm_size/desc b/rootfs/etc/logmonitor/notifications.d/shm_size/desc deleted file mode 100755 index 9b9080b..0000000 --- a/rootfs/etc/logmonitor/notifications.d/shm_size/desc +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo "$APP_NAME is likely to crash because of the lack of shared memory. Size of shared memory needs to be increased. See the documentation of the Docker container to find out how this can be done." diff --git a/rootfs/etc/logmonitor/notifications.d/shm_size/filter b/rootfs/etc/logmonitor/notifications.d/shm_size/filter deleted file mode 100755 index 914e41d..0000000 --- a/rootfs/etc/logmonitor/notifications.d/shm_size/filter +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -set -e # Exit immediately if a command exits with a non-zero status. -set -u # Treat unset variables as an error. - -LINE="$1" - -if [ "$LINE" = "SHM_CHECK_FAIL" ]; then - echo 'SHM_CHECK_ACK' > /tmp/.firefox_shm_check - exit 0 -fi - -# No match found. -exit 1 - -# vim: set ft=sh : diff --git a/rootfs/etc/logmonitor/notifications.d/shm_size/level b/rootfs/etc/logmonitor/notifications.d/shm_size/level deleted file mode 100644 index e2500fa..0000000 --- a/rootfs/etc/logmonitor/notifications.d/shm_size/level +++ /dev/null @@ -1 +0,0 @@ -WARNING diff --git a/rootfs/etc/logmonitor/notifications.d/shm_size/title b/rootfs/etc/logmonitor/notifications.d/shm_size/title deleted file mode 100755 index 39a42c1..0000000 --- a/rootfs/etc/logmonitor/notifications.d/shm_size/title +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo "$APP_NAME lacks of shared memory." diff --git a/rootfs/etc/logmonitor/notifications.d/tab_crash/desc b/rootfs/etc/logmonitor/notifications.d/tab_crash/desc deleted file mode 100755 index 258b037..0000000 --- a/rootfs/etc/logmonitor/notifications.d/tab_crash/desc +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo "A $APP_NAME tab crashed because of the lack of shared memory. Size of shared memory needs to be increased. See the documentation of this Docker container to find out how this can be done." diff --git a/rootfs/etc/logmonitor/notifications.d/tab_crash/filter b/rootfs/etc/logmonitor/notifications.d/tab_crash/filter deleted file mode 100755 index 21e16b4..0000000 --- a/rootfs/etc/logmonitor/notifications.d/tab_crash/filter +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -set -e # Exit immediately if a command exits with a non-zero status. -set -u # Treat unset variables as an error. - -LINE="$1" - -#if echo "$LINE" | grep -q "OutOfMemoryError occurred...RESTARTING!"; then -if [ "$LINE" = "###!!! [Parent][MessageChannel] Error: (msgtype=0x150084,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv" ] -then - exit 0 -fi - -# No match found. -exit 1 - -# vim: set ft=sh : diff --git a/rootfs/etc/logmonitor/notifications.d/tab_crash/level b/rootfs/etc/logmonitor/notifications.d/tab_crash/level deleted file mode 100644 index 5df7507..0000000 --- a/rootfs/etc/logmonitor/notifications.d/tab_crash/level +++ /dev/null @@ -1 +0,0 @@ -ERROR diff --git a/rootfs/etc/logmonitor/notifications.d/tab_crash/title b/rootfs/etc/logmonitor/notifications.d/tab_crash/title deleted file mode 100755 index 39a42c1..0000000 --- a/rootfs/etc/logmonitor/notifications.d/tab_crash/title +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo "$APP_NAME lacks of shared memory." From e4c8628bf9e92498afbeeeffbb9cb0b747155da4 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 4 Jan 2023 20:38:16 -0500 Subject: [PATCH 034/161] The membarrier check is no longer done by the logmonitor. --- Dockerfile | 5 ----- rootfs/etc/cont-init.d/55-firefox.sh | 7 ------ .../notifications.d/membarrier/desc | 2 -- .../notifications.d/membarrier/filter | 16 -------------- .../notifications.d/membarrier/level | 1 - .../notifications.d/membarrier/title | 2 -- rootfs/startapp.sh | 22 +++++++++++++++++++ 7 files changed, 22 insertions(+), 33 deletions(-) delete mode 100755 rootfs/etc/logmonitor/notifications.d/membarrier/desc delete mode 100755 rootfs/etc/logmonitor/notifications.d/membarrier/filter delete mode 100644 rootfs/etc/logmonitor/notifications.d/membarrier/level delete mode 100755 rootfs/etc/logmonitor/notifications.d/membarrier/title diff --git a/Dockerfile b/Dockerfile index fe8442b..f7278aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -101,11 +101,6 @@ RUN \ # del-pkg build-dependencies && \ # rm -rf /tmp/* /tmp/.[!.]* -# Enable log monitoring. -RUN \ - sed-patch 's|LOG_FILES=|LOG_FILES=/config/log/firefox/error.log|' /etc/logmonitor/logmonitor.conf && \ - sed-patch 's|STATUS_FILES=|STATUS_FILES=/tmp/.firefox_shm_check,/tmp/.firefox_membarrier_check|' /etc/logmonitor/logmonitor.conf - # Generate and install favicons. RUN \ APP_ICON_URL=https://github.com/jlesage/docker-templates/raw/master/jlesage/images/firefox-icon.png && \ diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-firefox.sh index ab4a68b..49ce48d 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-firefox.sh @@ -17,13 +17,6 @@ fi # Copy default preferences. [ -f /config/profile/prefs.js ] || cp /defaults/prefs.js /config/profile/prefs.js -if /usr/bin/membarrier_check 2>/dev/null; then - echo 'MEMBARRIER_CHECK_PASS' > /tmp/.firefox_membarrier_check -else - echo 'MEMBARRIER_CHECK_FAIL' > /tmp/.firefox_membarrier_check -fi -chown $USER_ID:$GROUP_ID /tmp/.firefox_membarrier_check - # Clean/optimize Firefox databases. #if [ -d /config/.mozilla/firefox ] && [ -d /config/profile ]; then # [ -f /config/.mozilla/firefox/profiles.ini ] || cp /defaults/profiles.ini /config/.mozilla/firefox/ diff --git a/rootfs/etc/logmonitor/notifications.d/membarrier/desc b/rootfs/etc/logmonitor/notifications.d/membarrier/desc deleted file mode 100755 index 648f482..0000000 --- a/rootfs/etc/logmonitor/notifications.d/membarrier/desc +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo "$APP_NAME is likely to crash because it requires the membarrier system call. See the documentation of this Docker container to find out how this system call can be allowed." diff --git a/rootfs/etc/logmonitor/notifications.d/membarrier/filter b/rootfs/etc/logmonitor/notifications.d/membarrier/filter deleted file mode 100755 index 9d76b41..0000000 --- a/rootfs/etc/logmonitor/notifications.d/membarrier/filter +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh - -set -e # Exit immediately if a command exits with a non-zero status. -set -u # Treat unset variables as an error. - -LINE="$1" - -if [ "$LINE" = "MEMBARRIER_CHECK_FAIL" ]; then - echo 'MEMBARRIER_CHECK_ACK' > /tmp/.firefox_membarrier_check - exit 0 -fi - -# No match found. -exit 1 - -# vim: set ft=sh : diff --git a/rootfs/etc/logmonitor/notifications.d/membarrier/level b/rootfs/etc/logmonitor/notifications.d/membarrier/level deleted file mode 100644 index e2500fa..0000000 --- a/rootfs/etc/logmonitor/notifications.d/membarrier/level +++ /dev/null @@ -1 +0,0 @@ -WARNING diff --git a/rootfs/etc/logmonitor/notifications.d/membarrier/title b/rootfs/etc/logmonitor/notifications.d/membarrier/title deleted file mode 100755 index 6f2e0da..0000000 --- a/rootfs/etc/logmonitor/notifications.d/membarrier/title +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -echo "$APP_NAME requires the membarrier system call." diff --git a/rootfs/startapp.sh b/rootfs/startapp.sh index c861cc4..8a40a61 100755 --- a/rootfs/startapp.sh +++ b/rootfs/startapp.sh @@ -5,5 +5,27 @@ set -u # Treat unset variables as an error. export HOME=/config +PIDS= + +notify() { + for N in $(ls /etc/logmonitor/targets.d/*/send) + do + "$N" "$1" "$2" "$3" & + PIDS="$PIDS $!" + done +} + +# Verify support for membarrier. +if ! /usr/bin/membarrier_check 2>/dev/null; then + notify "$APP_NAME requires the membarrier system call." "$APP_NAME is likely to crash because it requires the membarrier system call. See the documentation of this Docker container to find out how this system call can be allowed." "WARNING" +fi + +# Wait for all PIDs to terminate. +set +e +for PID in "$PIDS"; do + wait $PID +done +set -e + /usr/bin/firefox --version exec /usr/bin/firefox "$@" >> /config/log/firefox/output.log 2>> /config/log/firefox/error.log From 070a17b05e3f700275b17629929e3941347c1e82 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 4 Jan 2023 20:39:37 -0500 Subject: [PATCH 035/161] Updated baseimage to version 4.3.1. --- Dockerfile | 2 +- rootfs/etc/jwm/main-window-selection.jwmrc | 2 -- rootfs/etc/openbox/main-window-selection.xml | 2 ++ 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 rootfs/etc/jwm/main-window-selection.jwmrc create mode 100644 rootfs/etc/openbox/main-window-selection.xml diff --git a/Dockerfile b/Dockerfile index f7278aa..be28506 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.2.2 +FROM jlesage/baseimage-gui:alpine-3.17-v4.3.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= diff --git a/rootfs/etc/jwm/main-window-selection.jwmrc b/rootfs/etc/jwm/main-window-selection.jwmrc deleted file mode 100644 index 002f074..0000000 --- a/rootfs/etc/jwm/main-window-selection.jwmrc +++ /dev/null @@ -1,2 +0,0 @@ -normal -^Navigator diff --git a/rootfs/etc/openbox/main-window-selection.xml b/rootfs/etc/openbox/main-window-selection.xml new file mode 100644 index 0000000..5f5ba60 --- /dev/null +++ b/rootfs/etc/openbox/main-window-selection.xml @@ -0,0 +1,2 @@ +normal +Navigator From 5ce5f20f61391cc8e5d9801eaf741f9ae4476eb4 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 4 Jan 2023 21:01:41 -0500 Subject: [PATCH 036/161] Added changelog for version 23.01.1. --- appdefs.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 5e00347..d2470ce 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,15 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.01.1 + date: 2023-01-04 + changes: + - 'Updated Firefox to version 108.0.1-r1.' + - 'Update of the baseimage to version 4.3.1 brings the following changes:' + - '2:Control menu can be moved to the right side of the screen.' + - '2:Automatic focus of the clipboard text box when opening the control menu.' + - '2:Automatic close of the control menu when clicking into the application.' + - '2:Rotation of the internal web server log files.' - version: 22.12.2 date: 2022-12-11 changes: From 491dceb3a8e29b77e68b0a030be7764b6134a6a7 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 4 Feb 2023 14:21:38 -0500 Subject: [PATCH 037/161] Updated docker/build-push-action to v4. --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 8372a98..2f0f1a9 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -118,7 +118,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: push: ${{ steps.prep.outputs.is_release == 'yes' }} platforms: ${{ env.PLATFORMS }} From e4d13f84fabc095a009db18e3a39925355be75cd Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 4 Feb 2023 15:59:51 -0500 Subject: [PATCH 038/161] Updated READMEs. --- DOCKERHUB.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCKERHUB.md b/DOCKERHUB.md index f7ce844..4c8fe1c 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -8,7 +8,7 @@ installation or configuration needed on the client side) or via any VNC client. --- -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=200)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=Georgia,sans-serif&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) +[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=Georgia,sans-serif&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. diff --git a/README.md b/README.md index 13dcb0e..07c4dec 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ installation or configuration needed on the client side) or via any VNC client. --- -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=200)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=Georgia,sans-serif&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) +[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=Georgia,sans-serif&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. From e96e3fed8ec49362e7a7aef004725a7ccf2ff825 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 4 Feb 2023 15:59:57 -0500 Subject: [PATCH 039/161] Removed rough_download_size: no longer used. --- appdefs.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index d2470ce..4868ec5 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -289,7 +289,6 @@ app: - 'Initial release.' container: - rough_download_size: 160MB unsupported_volume: /storage # Environment variables. From 13ebef02ff3442e3818753675cfcec818a5cd941 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 4 Feb 2023 16:00:18 -0500 Subject: [PATCH 040/161] Updated baseimage to version 4.3.3. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index be28506..63e32cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.3.1 +FROM jlesage/baseimage-gui:alpine-3.17-v4.3.3 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From a8a8a4e4b7d82510c4f34cb051e5a1067c0b9cab Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 4 Feb 2023 16:01:05 -0500 Subject: [PATCH 041/161] Updated Firefox to version 109.0.1-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 63e32cc..f5d3eb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.17-v4.3.3 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=108.0.1-r1 +ARG FIREFOX_VERSION=109.0.1-r0 ARG JSONLZ4_VERSION=c4305b8 ARG LZ4_VERSION=1.8.1.2 #ARG PROFILE_CLEANER_VERSION=2.36 From df55b20eb8e60138fc48ef123b2429bc0d094762 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 4 Feb 2023 16:46:23 -0500 Subject: [PATCH 042/161] Added changelog for version 23.02.1. --- appdefs.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 4868ec5..90d19f3 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,11 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.02.1 + date: 2023-02-04 + changes: + - 'Updated Firefox to version 109.0.1-r0.' + - 'Updated baseimage to version 4.3.3, which brings robustness related enhancements.' - version: 23.01.1 date: 2023-01-04 changes: From b7364fd77b17308177e3a333087915fa77d6be8b Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 5 Feb 2023 12:56:44 -0500 Subject: [PATCH 043/161] Updated README. --- README.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/README.md b/README.md index 07c4dec..a70e50f 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ Foundation and its subsidiary, Mozilla Corporation. * [Quick Start](#quick-start) * [Usage](#usage) * [Environment Variables](#environment-variables) + * [Deployment Considerations](#deployment-considerations) * [Data Volumes](#data-volumes) * [Ports](#ports) * [Changing Parameters of a Running Container](#changing-parameters-of-a-running-container) @@ -112,6 +113,43 @@ of this parameter has the format `=`. |`FF_OPEN_URL`| The URL to open when Firefox starts. | (unset) | |`FF_KIOSK`| Set to `1` to enable kiosk mode. This mode launches Firefox in a very restricted and limited mode best suitable for public areas or customer-facing displays. | `0` | +#### Deployment Considerations + +Many tools used to manage Docker containers extract environment variables +defined by the Docker image and use them to create/deploy the container. For +example, this is done by: + - The Docker application on Synology NAS + - The Container Station on QNAP NAS + - Portainer + - etc. + +While this can be useful for the user to adjust the value of environment +variables to fit its needs, it can also be confusing and dangerous to keep all +of them. + +A good pratice is to set/keep only the variables that are needed for the +container to behave as desired in a specific setup. If the value of variable is +kept to its default value, it means that it can be removed. Keep in mind that +all variables are optional, meaning that none of them is required for the +container to start. + +Removing environment variables that are not needed provides some advantages: + + - Prevents keeping variables that are no longer used by the container. Over + time, with image updates, some variables might be removed. + - Allows the Docker image to change/fix a default value. Again, with image + updates, the default value of a variable might be changed to fix an issue, + or to better support a new feature. + - Prevents changes to a variable that might affect the correct function of + the container. Some undocumented variables, like `PATH` or `ENV`, are + required to be exposed, but are not meant to be changed by users. However, + container management tools still show these variables to users. + - There is a bug with the Container Station on QNAP, where the value of an + environment variable is mandatory. This behavior is wrong and it's + perfectly fine to have a variable without value. In fact, this container + does have variables without value by default. Thus, removing uneeded + variables is a good way to prevent deployment issue on QNAP. + ### Data Volumes The following table describes data volumes used by the container. The mappings From 6977c0a9e084784708f710f1d23895e11314f790 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 7 Feb 2023 12:53:06 -0500 Subject: [PATCH 044/161] Disable provenance attestation to keep better compatibility with older Docker clients. --- .github/workflows/build-image.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 2f0f1a9..b093170 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -121,6 +121,7 @@ jobs: uses: docker/build-push-action@v4 with: push: ${{ steps.prep.outputs.is_release == 'yes' }} + provenance: false platforms: ${{ env.PLATFORMS }} tags: ${{ steps.prep.outputs.tags }} build-args: | From 63e622767b09222800f6af7f54d392b4a26fc256 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 7 Feb 2023 20:59:34 -0500 Subject: [PATCH 045/161] Updated baseimage to version 4.3.4. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f5d3eb5..5c7415d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.3.3 +FROM jlesage/baseimage-gui:alpine-3.17-v4.3.4 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 007f31e2a6a85b70a6fa3016caf7eba0779874b4 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 8 Feb 2023 08:13:29 -0500 Subject: [PATCH 046/161] Added changelog for version 23.02.2. --- appdefs.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 90d19f3..a46022b 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,12 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.02.2 + date: 2023-02-08 + changes: + - 'Updated baseimage to version 4.3.4, which brings the following changes:' + - '2:Fixed error message from openbox about missing Fontconfig cache directory.' + - 'Do not use the OCI Docker image format yet to keep better compatibility (e.g with older docker clients).' - version: 23.02.1 date: 2023-02-04 changes: From d27a479a7def3ec110641641e99838ed33ba114f Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 11 Feb 2023 21:53:12 -0500 Subject: [PATCH 047/161] Added `browser.tabs.closeWindowWithLastTab` to the default Firefox config. --- rootfs/defaults/prefs.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rootfs/defaults/prefs.js b/rootfs/defaults/prefs.js index 442c540..c91c032 100644 --- a/rootfs/defaults/prefs.js +++ b/rootfs/defaults/prefs.js @@ -1,2 +1,4 @@ // Disable the privacy notice page. user_pref("toolkit.telemetry.reportingpolicy.firstRun", false); +// Prevent closing Firefox when closing the last tab. +user_pref("browser.tabs.closeWindowWithLastTab", false); From 1c4d7076e5abe2f1ebf1e11100edda8c89ed8830 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 11 Feb 2023 23:07:58 -0500 Subject: [PATCH 048/161] Adjusted application's title. --- DOCKERHUB.md | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DOCKERHUB.md b/DOCKERHUB.md index 4c8fe1c..2b89337 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -8,7 +8,7 @@ installation or configuration needed on the client side) or via any VNC client. --- -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=Georgia,sans-serif&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) +[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. diff --git a/README.md b/README.md index a70e50f..5421747 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ installation or configuration needed on the client side) or via any VNC client. --- -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=Georgia,sans-serif&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) +[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. From 1307948b88d5477e2a4002b2dfed265fe2a815b6 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 12 Feb 2023 18:24:30 -0500 Subject: [PATCH 049/161] Updated README. --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5421747..27531b4 100644 --- a/README.md +++ b/README.md @@ -92,13 +92,13 @@ of this parameter has the format `=`. |----------------|----------------------------------------------|---------| |`USER_ID`| ID of the user the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | |`GROUP_ID`| ID of the group the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | -|`SUP_GROUP_IDS`| Comma-separated list of supplementary group IDs of the application. | `""` | +|`SUP_GROUP_IDS`| Comma-separated list of supplementary group IDs of the application. | (no value) | |`UMASK`| Mask that controls how file permissions are set for newly created files. The value of the mask is in octal notation. By default, the default umask value is `0022`, meaning that newly created files are readable by everyone, but only writable by the owner. See the online umask calculator at http://wintelguy.com/umask-calc.pl. | `0022` | |`LANG`| Set the [locale](https://en.wikipedia.org/wiki/Locale_(computer_software)), which defines the application's language, **if supported**. Format of the locale is `language[_territory][.codeset]`, where language is an [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), territory is an [ISO 3166 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes) and codeset is a character set, like `UTF-8`. For example, Australian English using the UTF-8 encoding is `en_AU.UTF-8`. | `en_US.UTF-8` | |`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | |`KEEP_APP_RUNNING`| When set to `1`, the application will be automatically restarted when it crashes or terminates. | `0` | |`APP_NICENESS`| Priority at which the application should run. A niceness value of -20 is the highest priority and 19 is the lowest priority. The default niceness value is 0. **NOTE**: A negative niceness (priority increase) requires additional permissions. In this case, the container should be run with the docker option `--cap-add=SYS_NICE`. | `0` | -|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. Packages are installed from the repository of the Linux distribution this container is based on. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | `""` | +|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. Packages are installed from the repository of the Linux distribution this container is based on. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | |`CONTAINER_DEBUG`| Set to `1` to enable debug logging. | `0` | |`DISPLAY_WIDTH`| Width (in pixels) of the application's window. | `1920` | |`DISPLAY_HEIGHT`| Height (in pixels) of the application's window. | `1080` | @@ -108,9 +108,9 @@ of this parameter has the format `=`. |`SECURE_CONNECTION_CERTS_CHECK_INTERVAL`| Interval, in seconds, at which the system verifies if web or VNC certificates have changed. When a change is detected, the affected services are automatically restarted. A value of `0` disables the check. | `60` | |`WEB_LISTENING_PORT`| Port used by the web server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over HTTP/HTTPs. | `5800` | |`VNC_LISTENING_PORT`| Port used by the VNC server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over VNC. | `5900` | -|`VNC_PASSWORD`| Password needed to connect to the application's GUI. See the [VNC Password](#vnc-password) section for more details. | `""` | +|`VNC_PASSWORD`| Password needed to connect to the application's GUI. See the [VNC Password](#vnc-password) section for more details. | (no value) | |`ENABLE_CJK_FONT`| When set to `1`, open-source computer font `WenQuanYi Zen Hei` is installed. This font contains a large range of Chinese/Japanese/Korean characters. | `0` | -|`FF_OPEN_URL`| The URL to open when Firefox starts. | (unset) | +|`FF_OPEN_URL`| The URL to open when Firefox starts. | (no value) | |`FF_KIOSK`| Set to `1` to enable kiosk mode. This mode launches Firefox in a very restricted and limited mode best suitable for public areas or customer-facing displays. | `0` | #### Deployment Considerations From d89c5b898ebef0602ff1cf6f4796b690dc530e11 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 13 Feb 2023 22:35:08 -0500 Subject: [PATCH 050/161] Updated baseimage to version 4.3.6. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5c7415d..7b17e80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.3.4 +FROM jlesage/baseimage-gui:alpine-3.17-v4.3.6 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From f65da5c089c7546a19ee26c7fd28b7750403dcd0 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 13 Feb 2023 22:59:30 -0500 Subject: [PATCH 051/161] Added changelog for version 23.02.3. --- appdefs.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index a46022b..88b07b0 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,12 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.02.3 + date: 2023-02-13 + changes: + - 'Updated baseimage to version 4.3.6, which brings the following changes:' + - '2:Limit the maximum number of opened files on system having a very large, unlimited value. This prevents unnecessary waste of CPU resources and time for applications trying to close all possible file descriptors.' + - 'Added default preference to prevent closing Firefox when closing the last tab.' - version: 23.02.2 date: 2023-02-08 changes: From 3c1065f7f6084abda632f0d230fea31816d75d0d Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 24 Feb 2023 07:31:43 -0500 Subject: [PATCH 052/161] Updated README. --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 27531b4..d24c639 100644 --- a/README.md +++ b/README.md @@ -144,11 +144,12 @@ Removing environment variables that are not needed provides some advantages: the container. Some undocumented variables, like `PATH` or `ENV`, are required to be exposed, but are not meant to be changed by users. However, container management tools still show these variables to users. - - There is a bug with the Container Station on QNAP, where the value of an - environment variable is mandatory. This behavior is wrong and it's - perfectly fine to have a variable without value. In fact, this container - does have variables without value by default. Thus, removing uneeded - variables is a good way to prevent deployment issue on QNAP. + - There is a bug with the Container Station on QNAP and the Docker application + on Synology, where an environment variable without value might not be + allowed. This behavior is wrong: it's absolutely fine to have a variable + without value. In fact, this container does have variables without value by + default. Thus, removing uneeded variables is a good way to prevent + deployment issue on these devices. ### Data Volumes From 6cd8411d7d95523740e8fb4c89eff5138f401159 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 4 Mar 2023 12:05:31 -0500 Subject: [PATCH 053/161] Updated baseimage to version 4.4.0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7b17e80..ce68170 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.3.6 +FROM jlesage/baseimage-gui:alpine-3.17-v4.4.0 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 9b076dd9498c961761104a71bc1aa776ac1d4108 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 5 Mar 2023 08:16:07 -0500 Subject: [PATCH 054/161] Added changelog for version 23.03.1. --- appdefs.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 88b07b0..b48989c 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,13 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.03.1 + date: 2023-03-05 + changes: + - 'Updated baseimage to version 4.4.0, which brings the following changes:' + - '2:Updated components providing access to application's UI over web.' + - '2:Improved web UI usage with touch devices.' + - '2:Fixed issue with initialization of Linux users and groups when the `GROUP_ID` is also part of `SUP_GROUP_IDS`.' - version: 23.02.3 date: 2023-02-13 changes: From a30e2a9d91ffb0e8ebe2f2c9395a0d02894bcf54 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 5 Mar 2023 08:17:40 -0500 Subject: [PATCH 055/161] Fixed changelog. --- appdefs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index b48989c..1e48a93 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -105,7 +105,7 @@ app: date: 2023-03-05 changes: - 'Updated baseimage to version 4.4.0, which brings the following changes:' - - '2:Updated components providing access to application's UI over web.' + - '2:Updated components providing access to application''s UI over web.' - '2:Improved web UI usage with touch devices.' - '2:Fixed issue with initialization of Linux users and groups when the `GROUP_ID` is also part of `SUP_GROUP_IDS`.' - version: 23.02.3 From 194cc6fc0af625d46d1fccc732667215ce685297 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 4 Apr 2023 12:19:09 -0400 Subject: [PATCH 056/161] Fixed WebGL support. --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index ce68170..564a685 100644 --- a/Dockerfile +++ b/Dockerfile @@ -65,6 +65,8 @@ RUN \ # Install extra packages. RUN \ add-pkg \ + # WebGL support. + mesa-dri-gallium \ # Icons used by folder/file selection window (when saving as). adwaita-icon-theme \ # A font is needed. From c5d1e078fefb12fc05c96334f67d49eea379f026 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 4 Apr 2023 12:19:55 -0400 Subject: [PATCH 057/161] Reverted to font with better UTF-8 characters support. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 564a685..2a9901e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -70,7 +70,7 @@ RUN \ # Icons used by folder/file selection window (when saving as). adwaita-icon-theme \ # A font is needed. - font-cantarell \ + font-dejavu \ # The following package is used to send key presses to the X process. xdotool \ && \ From 8ba2a096b462da6e06e7cb6574985e33bfdac82c Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 4 Apr 2023 12:21:21 -0400 Subject: [PATCH 058/161] Adjusted vim modeline. --- rootfs/etc/cont-init.d/55-check-snd.sh | 2 +- rootfs/etc/cont-init.d/55-firefox.sh | 2 +- rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rootfs/etc/cont-init.d/55-check-snd.sh b/rootfs/etc/cont-init.d/55-check-snd.sh index 58b805c..83d62b0 100755 --- a/rootfs/etc/cont-init.d/55-check-snd.sh +++ b/rootfs/etc/cont-init.d/55-check-snd.sh @@ -14,4 +14,4 @@ fi SND_GRP="$(find "$SND_DEV" -maxdepth 1 -not -type d -exec stat -c "%g" {} \; | sort -u | tail -n1)" echo "sound device group $SND_GRP." -# vim: set ft=sh : +# vim:ft=sh:ts=4:sw=4:et:sts=4 diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-firefox.sh index 49ce48d..936b21c 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-firefox.sh @@ -57,4 +57,4 @@ do fi done -# vim: set ft=sh : +# vim:ft=sh:ts=4:sw=4:et:sts=4 diff --git a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh b/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh index 8bf288c..0f63392 100755 --- a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh +++ b/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh @@ -42,3 +42,5 @@ do echo "user_pref(\"$PNAME\", $PVAL);" >> "$PREF_FILE" fi done + +# vim:ft=sh:ts=4:sw=4:et:sts=4 From 9e679b45a868ac7899c99a3f558797dc939a8d19 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 8 Apr 2023 21:17:17 -0400 Subject: [PATCH 059/161] Removed adjustment of the window size in Firefox profile. This is no longer needed. --- Dockerfile | 27 --------------------------- rootfs/etc/cont-init.d/55-firefox.sh | 23 ----------------------- 2 files changed, 50 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2a9901e..46d0163 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,41 +20,14 @@ ARG DOCKER_IMAGE_VERSION= # Define software versions. ARG FIREFOX_VERSION=109.0.1-r0 -ARG JSONLZ4_VERSION=c4305b8 -ARG LZ4_VERSION=1.8.1.2 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. -ARG JSONLZ4_URL=https://github.com/avih/dejsonlz4/archive/${JSONLZ4_VERSION}.tar.gz -ARG LZ4_URL=https://github.com/lz4/lz4/archive/v${LZ4_VERSION}.tar.gz #ARG PROFILE_CLEANER_URL=https://github.com/graysky2/profile-cleaner/raw/v${PROFILE_CLEANER_VERSION}/common/profile-cleaner.in # Define working directory. WORKDIR /tmp -# Install JSONLZ4 tools. -RUN \ - add-pkg --virtual build-dependencies \ - curl \ - build-base \ - && \ - mkdir jsonlz4 && \ - mkdir lz4 && \ - curl -# -L {$JSONLZ4_URL} | tar xz --strip 1 -C jsonlz4 && \ - curl -# -L {$LZ4_URL} | tar xz --strip 1 -C lz4 && \ - mv jsonlz4/src/ref_compress/*.c jsonlz4/src/ && \ - cp lz4/lib/lz4.* jsonlz4/src/ && \ - cd jsonlz4 && \ - gcc -static -Wall -o dejsonlz4 src/dejsonlz4.c src/lz4.c && \ - gcc -static -Wall -o jsonlz4 src/jsonlz4.c src/lz4.c && \ - strip dejsonlz4 jsonlz4 && \ - cp -v dejsonlz4 /usr/bin/ && \ - cp -v jsonlz4 /usr/bin/ && \ - cd .. && \ - # Cleanup. - del-pkg build-dependencies && \ - rm -rf /tmp/* /tmp/.[!.]* - # Install Firefox. RUN \ # add-pkg --repository http://dl-cdn.alpinelinux.org/alpine/edge/main \ diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-firefox.sh index 936b21c..ddaf322 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-firefox.sh @@ -23,29 +23,6 @@ fi # env HOME=/config /usr/bin/profile-cleaner f #fi -# Fix window display size is session stores. -if [ -n "$(ls /config/profile/sessionstore-backups/*.jsonlz4 2>/dev/null)" ]; then - for FILE in /config/profile/sessionstore-backups/*.jsonlz4; do - WORKDIR="$(mktemp -d)" - - dejsonlz4 "$FILE" "$WORKDIR"/json - cp "$WORKDIR"/json "$WORKDIR"/json.orig - - sed -i 's/"width":[0-9]\+/"width":'$DISPLAY_WIDTH'/' "$WORKDIR"/json - sed -i 's/"height":[0-9]\+/"height":'$DISPLAY_HEIGHT'/' "$WORKDIR"/json - sed -i 's/"screenX":[0-9]\+/"screenX":0/' "$WORKDIR"/json - sed -i 's/"screenY":[0-9]\+/"screenY":0/' "$WORKDIR"/json - - if ! diff "$WORKDIR"/json "$WORKDIR"/json.orig >/dev/null; then - jsonlz4 "$WORKDIR"/json "$WORKDIR"/jsonlz4 - mv "$WORKDIR"/jsonlz4 "$FILE" - echo "fixed display size in $FILE." - fi - - rm -r "$WORKDIR" - done -fi - # Initialize log files. for LOG_FILE in /config/log/firefox/output.log /config/log/firefox/error.log do From e1d32c30f2dae373578d29add4941ba233bb5f97 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 8 Apr 2023 21:18:35 -0400 Subject: [PATCH 060/161] Improved graceful shutdown of Firefox: - By default, disable confirmation when quitting using the ctrl+q shortcut. - Wait for Firefox to quit after sending ctrl+q key presses. --- rootfs/defaults/prefs.js | 3 +++ rootfs/etc/services.d/app/kill | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/rootfs/defaults/prefs.js b/rootfs/defaults/prefs.js index c91c032..5e1d3e9 100644 --- a/rootfs/defaults/prefs.js +++ b/rootfs/defaults/prefs.js @@ -2,3 +2,6 @@ user_pref("toolkit.telemetry.reportingpolicy.firstRun", false); // Prevent closing Firefox when closing the last tab. user_pref("browser.tabs.closeWindowWithLastTab", false); +// Disable confirmation before quitting with Ctrl+Q. Needed to allow Firefox +// to quit cleanly when container is shutted down. +user_pref("browser.warnOnQuitShortcut", false); diff --git a/rootfs/etc/services.d/app/kill b/rootfs/etc/services.d/app/kill index 7a99f23..f26848a 100755 --- a/rootfs/etc/services.d/app/kill +++ b/rootfs/etc/services.d/app/kill @@ -1,14 +1,25 @@ #!/bin/sh # -# When receiving SIGTERM, Firefox doesn't qui immediately and instead ask for -# confirmation. Instead, terminate Firefox by sending the CTRL+q key presses. +# Firefox doesn't gracefully shutdown when receiving SIGTERM. For example, last +# opened tabs may not be saved. Instead, terminate Firefox by sending the +# CTRL+q key presses. # set -e # Exit immediately if a command exits with a non-zero status. set -u # Treat unset variables as an error. xdotool key "Escape" +sleep 0.5 xdotool key "ctrl+q" +for i in $(seq 1 10) +do + if ! ps | grep "/usr/lib/firefox/firefox" | grep -q -v grep + then + break + fi + sleep 0.5 +done + # vim:ft=sh:ts=4:sw=4:et:sts=4 From b1b68dcfea97753a9d81d3271cbedfe33f8b7451 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 8 Apr 2023 21:55:01 -0400 Subject: [PATCH 061/161] Moved all default preferences to the same location. --- Dockerfile | 7 ------- rootfs/defaults/prefs.js | 7 ------- rootfs/etc/cont-init.d/55-firefox.sh | 3 --- .../browser/defaults/preferences/firefox-branding.js | 10 ++++++++++ 4 files changed, 10 insertions(+), 17 deletions(-) delete mode 100644 rootfs/defaults/prefs.js create mode 100644 rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js diff --git a/Dockerfile b/Dockerfile index 46d0163..3ef5388 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,13 +51,6 @@ RUN \ find /usr/share/icons/Adwaita -type d -mindepth 1 -maxdepth 1 -not -name 16x16 -not -name scalable -exec rm -rf {} ';' && \ true -# Set default settings. -RUN \ - CFG_FILE="/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js" && \ - echo '// Default download directory.' >> "$CFG_FILE" && \ - echo 'pref("browser.download.dir", "/config/downloads");' >> "$CFG_FILE" && \ - echo 'pref("browser.download.folderList", 2);' >> "$CFG_FILE" - # Install profile-cleaner. #RUN \ # add-pkg --virtual build-dependencies curl && \ diff --git a/rootfs/defaults/prefs.js b/rootfs/defaults/prefs.js deleted file mode 100644 index 5e1d3e9..0000000 --- a/rootfs/defaults/prefs.js +++ /dev/null @@ -1,7 +0,0 @@ -// Disable the privacy notice page. -user_pref("toolkit.telemetry.reportingpolicy.firstRun", false); -// Prevent closing Firefox when closing the last tab. -user_pref("browser.tabs.closeWindowWithLastTab", false); -// Disable confirmation before quitting with Ctrl+Q. Needed to allow Firefox -// to quit cleanly when container is shutted down. -user_pref("browser.warnOnQuitShortcut", false); diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-firefox.sh index ddaf322..1beb953 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-firefox.sh @@ -14,9 +14,6 @@ if [ ! -f /config/machine-id ]; then cat /proc/sys/kernel/random/uuid | tr -d '-' > /config/machine-id fi -# Copy default preferences. -[ -f /config/profile/prefs.js ] || cp /defaults/prefs.js /config/profile/prefs.js - # Clean/optimize Firefox databases. #if [ -d /config/.mozilla/firefox ] && [ -d /config/profile ]; then # [ -f /config/.mozilla/firefox/profiles.ini ] || cp /defaults/profiles.ini /config/.mozilla/firefox/ diff --git a/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js b/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js new file mode 100644 index 0000000..9e9e1da --- /dev/null +++ b/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js @@ -0,0 +1,10 @@ +// Default download directory. +pref("browser.download.dir", "/config/downloads"); +pref("browser.download.folderList", 2); +// Disable the privacy notice page. +pref("toolkit.telemetry.reportingpolicy.firstRun", false); +// Prevent closing Firefox when closing the last tab. +pref("browser.tabs.closeWindowWithLastTab", false); +// Disable confirmation before quitting with Ctrl+Q. Needed to allow Firefox +// to quit cleanly when container is shutted down. +pref("browser.warnOnQuitShortcut", false); From a16b8e177e7adb4f8cd036f6420ac2310f65f6b2 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 19 Apr 2023 13:59:27 -0400 Subject: [PATCH 062/161] Updated baseimage to version 4.4.1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3ef5388..f918abc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.4.0 +FROM jlesage/baseimage-gui:alpine-3.17-v4.4.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 6b885bd0e49034dd5a45d73fe3a1879e46ebcee1 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 29 Apr 2023 16:07:42 -0400 Subject: [PATCH 063/161] Added changelog for version 23.04.1. --- appdefs.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 1e48a93..c1e0108 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,14 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.04.1 + date: 2023-04-29 + changes: + - 'Fixed WebGL (software) support.' + - 'Reverted to using a font with better UTF-8 characters support.' + - 'Improved graceful shutdown of Firefox.' + - 'Update of the baseimage to version 4.4.0 brings the following changes:' + - '2:Updated TigerVNC to version 1.13.1.' - version: 23.03.1 date: 2023-03-05 changes: From 3562aeb7d417868587ce6c129ff1effbe2ef83fd Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 8 May 2023 15:26:35 -0400 Subject: [PATCH 064/161] Do not send notification when build is started from pull request. --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index b093170..68fc37f 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -147,7 +147,7 @@ jobs: name: Notification needs: [ build ] runs-on: ubuntu-20.04 - if: ${{ always() }} + if: ${{ always() && github.event_name != 'pull_request' }} steps: - name: Pushover notification From 0e8f2f0493f24c6c25d9e7e7edfefce97014b946 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 9 May 2023 16:37:44 -0400 Subject: [PATCH 065/161] Small update to the README. --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d24c639..ca2dcdb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Docker container for Firefox [![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest)](https://hub.docker.com/r/jlesage/firefox/tags) [![Build Status](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml/badge.svg?branch=master)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![GitHub Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg)](https://github.com/jlesage/docker-firefox/releases/latest) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/JocelynLeSage) -This is a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). +This project implements a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). The GUI of the application is accessed through a modern web browser (no installation or configuration needed on the client side) or via any VNC client. @@ -75,6 +75,7 @@ docker run [-d] \ [-p :]... \ jlesage/firefox ``` + | Parameter | Description | |-----------|-------------| | -d | Run the container in the background. If not set, the container runs in the foreground. | @@ -321,11 +322,13 @@ Assuming that container's ports are mapped to the same host's ports, the graphical interface of the application can be accessed via: * A web browser: + ``` http://:5800 ``` * Any VNC client: + ``` :5900 ``` From 1a5207e8c1df1b452abce7d5555193532c3756e0 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 9 May 2023 16:41:27 -0400 Subject: [PATCH 066/161] Removed the checkout step: buildx do its own checkout. --- .github/workflows/build-image.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 68fc37f..9ef3854 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -99,9 +99,6 @@ jobs: echo "tags=${TAGS}" >> $GITHUB_OUTPUT #echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - name: Checkout - uses: actions/checkout@v3 - - name: Setup QEMU uses: docker/setup-qemu-action@v2 with: From a10441e3198c6e4e30e9f257f06893356066841d Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 9 May 2023 17:31:58 -0400 Subject: [PATCH 067/161] Added GitHub issue templates. --- .github/ISSUE_TEMPLATE/bug-report.yml | 93 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 8 ++ .github/ISSUE_TEMPLATE/feature-request.yml | 16 ++++ 3 files changed, 117 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature-request.yml diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000..980fcd5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,93 @@ +name: Bug report +description: File a bug report. +title: "[Bug] Provide a short description of the bug here" +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: textarea + attributes: + label: Current Behavior + description: A concise description of what you're experiencing. + validations: + required: true + - type: textarea + attributes: + label: Expected Behavior + description: A concise description of what you expected to happen. + validations: + required: false + - type: textarea + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + validations: + required: false + - type: textarea + attributes: + label: Environment + description: | + Provide details about the host running the container. + Examples: + - Operating system (e.g. Ubuntu, Windows, TrueNAS, openmediavault, unRAID, etc). + - Version of the operating system. + - CPU architecture (x86-64, arm, arm64, etc). + - Model of the device, if applicable (e.g. Raspberry Pi 4B, Synology DS418, QNAP TS-364, etc). + - The Docker version (output of `docker version`). + - Anything else specific to your environment. Examples: + - Network share (NFS, CIFS) mapped to the container. + - Docker running in LXC container. + - etc. + - If applicable, how the UI provided by the container is access: + - Browser (Chrome, Firefox, Edge, etc). + - Version of the browser. + - OS of the browser. + - Is the container accessed through a reverse proxy. + - etc. + value: | + - OS: + - OS version: + - CPU: + - Docker version: + - Device model: + - Browser/OS: + validations: + required: false + - type: textarea + attributes: + label: Container creation + description: | + How did you create the container ? + Examples: + - The `docker run` command used. + - The compose file used. + - Screenshots of the management tool UI (e.g. Portainer, unRAID, etc) showing container settings. + validations: + required: true + - type: textarea + attributes: + label: Container log + description: Please copy/paste the output of `docker logs `. + render: text + validations: + required: true + - type: textarea + attributes: + label: Container inspect + description: | + If the container is running, please provide the output of `docker inspect `. + **Attention**: If you defined passwords, secrets or any sensitive information via environment variables, make sure to remove them from the output. + render: text + validations: + required: false + - type: textarea + attributes: + label: Anything else? + description: | + Anything that will give more context about the issue you are encountering. + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..6101e44 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: Ask a question, discuss + url: https://github.com/jlesage/docker-firefox/discussions + about: Get help using this Docker container. + - name: Documentation + url: https://github.com/jlesage/docker-firefox#readme + about: Documentation about this Docker container. diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 0000000..527b3f0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,16 @@ +name: Feature request +description: Suggest an idea for this project. +title: "[Feature request] Provide a short description of the feature here" +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Thank you for suggesting an idea to make this project better. + - type: textarea + attributes: + label: Idea + description: | + Please describe the desired behavior, pitch your idea, or suggest improvements. + validations: + required: true From f6ed2bb2c7daef6e11ace1ddb13d8c8a7d97ac8b Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 15 May 2023 20:33:54 -0400 Subject: [PATCH 068/161] Checkout step is needed for pushing the dockerhub description. --- .github/workflows/build-image.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 9ef3854..48fb8c6 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -131,6 +131,10 @@ jobs: run: | docker buildx imagetools inspect ${{ env.DOCKER_IMAGE_NAME }}:${{ steps.prep.outputs.version }} + - name: Checkout + uses: actions/checkout@v3 + if: ${{ steps.prep.outputs.release_type == 'standard' }} + - name: Dockerhub description if: ${{ steps.prep.outputs.release_type == 'standard' }} uses: peter-evans/dockerhub-description@v3 From 1edcd1f59ddfa9a6e5f1c7c34bcee7dfdb37b847 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 16 May 2023 08:37:36 -0400 Subject: [PATCH 069/161] Adjusted badges in documentation. --- DOCKERHUB.md | 8 +++++++- README.md | 7 ++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/DOCKERHUB.md b/DOCKERHUB.md index 2b89337..76343c6 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -1,5 +1,11 @@ # Docker container for Firefox -[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest)](https://hub.docker.com/r/jlesage/firefox/tags) [![Build Status](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml/badge.svg?branch=master)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![GitHub Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg)](https://github.com/jlesage/docker-firefox/releases/latest) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/JocelynLeSage) +[![Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg?logo=github&style=for-the-badge)](https://github.com/jlesage/docker-firefox/releases/latest) +[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest?logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox/tags) +[![Docker Pulls](https://img.shields.io/docker/pulls/jlesage/firefox?label=Pulls&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) +[![Docker Stars](https://img.shields.io/docker/stars/jlesage/firefox?label=Stars&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) +[![Build Status](https://img.shields.io/github/actions/workflow/status/jlesage/docker-firefox/build-image.yml?logo=github&branch=master&style=for-the-badge)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) +[![Source](https://img.shields.io/badge/Source-GitHub-blue?logo=github&style=for-the-badge)](https://github.com/jlesage/docker-firefox) +[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?style=for-the-badge)](https://paypal.me/JocelynLeSage) This is a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). diff --git a/README.md b/README.md index ca2dcdb..004ff32 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # Docker container for Firefox -[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest)](https://hub.docker.com/r/jlesage/firefox/tags) [![Build Status](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml/badge.svg?branch=master)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![GitHub Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg)](https://github.com/jlesage/docker-firefox/releases/latest) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/JocelynLeSage) +[![Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg?logo=github&style=for-the-badge)](https://github.com/jlesage/docker-firefox/releases/latest) +[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest?logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox/tags) +[![Docker Pulls](https://img.shields.io/docker/pulls/jlesage/firefox?label=Pulls&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) +[![Docker Stars](https://img.shields.io/docker/stars/jlesage/firefox?label=Stars&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) +[![Build Status](https://img.shields.io/github/actions/workflow/status/jlesage/docker-firefox/build-image.yml?logo=github&branch=master&style=for-the-badge)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) +[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?style=for-the-badge)](https://paypal.me/JocelynLeSage) This project implements a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). From e0add73e6a12a7512fdef24f47142963740dd3ae Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 16 May 2023 15:21:24 -0400 Subject: [PATCH 070/161] Updated funding custom URLs. --- .github/FUNDING.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index d06fbc2..653ccc4 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username -custom: https://paypal.me/JocelynLeSage +custom: ["https://paypal.me/JocelynLeSage", "https://www.tesla.com/referral/jocelyn4590"] From e18b85053f54318a1c2a3edcc811051c8c3aa65d Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 16 May 2023 18:18:25 -0400 Subject: [PATCH 071/161] Upgraded baseimage to version 4.4.2. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f918abc..b232e8e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.4.1 +FROM jlesage/baseimage-gui:alpine-3.17-v4.4.2 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 6ce877c3a38a453a6388a990b49f0d2a08f70dd1 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 19 May 2023 07:18:24 -0400 Subject: [PATCH 072/161] Fixed changelog. --- appdefs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index c1e0108..9ae7abf 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -107,7 +107,7 @@ app: - 'Fixed WebGL (software) support.' - 'Reverted to using a font with better UTF-8 characters support.' - 'Improved graceful shutdown of Firefox.' - - 'Update of the baseimage to version 4.4.0 brings the following changes:' + - 'Updated baseimage to version 4.4.1, which brings the following changes:' - '2:Updated TigerVNC to version 1.13.1.' - version: 23.03.1 date: 2023-03-05 From 10df6ceabdb61396bb4c712daa004ebd135f1c3c Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 19 May 2023 13:08:59 -0400 Subject: [PATCH 073/161] Updated documentation about ports. --- README.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 004ff32..47c683f 100644 --- a/README.md +++ b/README.md @@ -169,15 +169,21 @@ format: `:[:PERMISSIONS]`. ### Ports -Here is the list of ports used by the container. They can be mapped to the host -via the `-p` parameter (one per port mapping). Each mapping is defined in the -following format: `:`. The port number inside the -container cannot be changed, but you are free to use any port on the host side. +Here is the list of ports used by the container. -| Port | Mapping to host | Description | -|------|-----------------|-------------| -| 5800 | Optional | Port to access the application's GUI via the web interface. Mapping to the host is optional if access through the web interface is not wanted. For a container not using the default bridge network, the port can be changed with the `WEB_LISTENING_PORT` environment variable. | -| 5900 | Optional | Port to access the application's GUI via the VNC protocol. Mapping to the host is optional if access through the VNC protocol is not wanted. For a container not using the default bridge network, the port can be changed with the `VNC_LISTENING_PORT` environment variable. | +When using the default bridge network, ports can be mapped to the host via the +`-p` parameter (one per port mapping). Each mapping is defined with the +following format: `:`. The port number used inside +the container might not be changeable, but you are free to use any port on the +host side. + +See the [Docker Container Networking](https://docs.docker.com/config/containers/container-networking) +documentation for more details. + +| Port | Protocol | Mapping to host | Description | +|------|----------|-----------------|-------------| +| 5800 | TCP | Optional | Port to access the application's GUI via the web interface. Mapping to the host is optional if access through the web interface is not wanted. For a container not using the default bridge network, the port can be changed with the `WEB_LISTENING_PORT` environment variable. | +| 5900 | TCP | Optional | Port to access the application's GUI via the VNC protocol. Mapping to the host is optional if access through the VNC protocol is not wanted. For a container not using the default bridge network, the port can be changed with the `VNC_LISTENING_PORT` environment variable. | ### Changing Parameters of a Running Container From 1817c154d846e2d1a43a69add824115f40f60ce7 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 19 May 2023 21:49:39 -0400 Subject: [PATCH 074/161] Using baseimage based on Alpine 3.18. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b232e8e..3e71e03 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.17-v4.4.2 +FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 8aed3ab11de08135f43750ffd7007fc26b715b55 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 19 May 2023 21:49:54 -0400 Subject: [PATCH 075/161] Updated Firefox to version 113.0.1-r1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3e71e03..21ae60d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=109.0.1-r0 +ARG FIREFOX_VERSION=113.0.1-r1 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 1a02ed573d1c30539bd7502235692575748c2697 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 19 May 2023 21:56:00 -0400 Subject: [PATCH 076/161] Added changelog for version 23.05.1. --- appdefs.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 9ae7abf..6108fe6 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,13 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.05.1 + date: 2023-05-19 + changes: + - 'Updated Firefox to version 113.0.1-r1.' + - 'Updated baseimage to version 4.4.2, based on Alpine Linux 3.18, which brings the following changes:' + - '2:Rebuilt against latest distro images to get security fixes.' + - '2:Updated X server to version 1.20.14.' - version: 23.04.1 date: 2023-04-29 changes: From 0ef25bf3e8da525ce2005e444bde5bd8301b45ec Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 26 May 2023 12:40:42 -0400 Subject: [PATCH 077/161] Updated Firefox to version 113.0.2-r1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 21ae60d..5bda83e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=113.0.1-r1 +ARG FIREFOX_VERSION=113.0.2-r1 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From da89a195d80479bfadfbbc6b5e1d49d25df6cf8b Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 27 May 2023 09:09:52 -0400 Subject: [PATCH 078/161] Added changelog for version 23.05.2. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 6108fe6..1e88cec 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.05.2 + date: 2023-05-27 + changes: + - 'Updated Firefox to version 113.0.2-r1.' - version: 23.05.1 date: 2023-05-19 changes: From 4b3f6c13ee18e0c4bd7be31c0331378d97c7c05c Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 27 May 2023 13:23:11 -0400 Subject: [PATCH 079/161] Disabled blank issue. --- .github/ISSUE_TEMPLATE/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 6101e44..875eb15 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ -blank_issues_enabled: true +blank_issues_enabled: false contact_links: - name: Ask a question, discuss url: https://github.com/jlesage/docker-firefox/discussions From 139546091b609d3226352a5e9c7c250f3924acd0 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 22 Jun 2023 10:55:00 -0400 Subject: [PATCH 080/161] Fixed typos. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 47c683f..bf1d5c4 100644 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ While this can be useful for the user to adjust the value of environment variables to fit its needs, it can also be confusing and dangerous to keep all of them. -A good pratice is to set/keep only the variables that are needed for the +A good practice is to set/keep only the variables that are needed for the container to behave as desired in a specific setup. If the value of variable is kept to its default value, it means that it can be removed. Keep in mind that all variables are optional, meaning that none of them is required for the @@ -154,7 +154,7 @@ Removing environment variables that are not needed provides some advantages: on Synology, where an environment variable without value might not be allowed. This behavior is wrong: it's absolutely fine to have a variable without value. In fact, this container does have variables without value by - default. Thus, removing uneeded variables is a good way to prevent + default. Thus, removing unneeded variables is a good way to prevent deployment issue on these devices. ### Data Volumes From 450186aafb9c948299884557c31fec1aadd6a7db Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 24 Jun 2023 11:51:19 -0400 Subject: [PATCH 081/161] Updated Firefox to version 114.0.2-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5bda83e..c3fd0c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=113.0.2-r1 +ARG FIREFOX_VERSION=114.0.2-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 55d32d54123931d5d4878dbe4b6130841519ec69 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 24 Jun 2023 12:43:17 -0400 Subject: [PATCH 082/161] Escape '/' characters from preference's value when using it with sed. --- rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh b/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh index 0f63392..3bfa643 100755 --- a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh +++ b/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh @@ -36,7 +36,7 @@ do sed -i "/user_pref(\"$PNAME\",.*);/d" "$PREF_FILE" elif grep -q "user_pref(\"$PNAME\"," "$PREF_FILE"; then echo "Setting preference '$PNAME'..." - sed -i "s/user_pref(\"$PNAME\",.*);/user_pref(\"$PNAME\", $PVAL);/" "$PREF_FILE" + sed -i "s/user_pref(\"$PNAME\",.*);/user_pref(\"$PNAME\", $(echo "$PVAL" | sed 's|/|\\/|g'));/" "$PREF_FILE" else echo "Setting new preference '$PNAME'..." echo "user_pref(\"$PNAME\", $PVAL);" >> "$PREF_FILE" From b42447faed7b6bd61e7b18564932307470235550 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 24 Jun 2023 15:45:20 -0400 Subject: [PATCH 083/161] Also handle the character in preference's value. --- rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh b/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh index 3bfa643..8da148a 100755 --- a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh +++ b/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh @@ -12,7 +12,7 @@ fi mkdir -p "$(dirname "$PREF_FILE")" [ -f "$PREF_FILE" ] || touch "$PREF_FILE" -env | grep "^FF_PREF_" | while read ENV +env | grep "^FF_PREF_" | while read -r ENV do ENAME="$(echo "$ENV" | cut -d '=' -f1)" EVAL="$(echo "$ENV" | cut -d '=' -f2-)" @@ -36,10 +36,11 @@ do sed -i "/user_pref(\"$PNAME\",.*);/d" "$PREF_FILE" elif grep -q "user_pref(\"$PNAME\"," "$PREF_FILE"; then echo "Setting preference '$PNAME'..." - sed -i "s/user_pref(\"$PNAME\",.*);/user_pref(\"$PNAME\", $(echo "$PVAL" | sed 's|/|\\/|g'));/" "$PREF_FILE" + sed -i "/user_pref(\"$PNAME\",.*);/d" "$PREF_FILE" + echo "user_pref(\"$PNAME\", $(echo "$PVAL" | sed 's|\\|\\\\|g'));" >> "$PREF_FILE" else echo "Setting new preference '$PNAME'..." - echo "user_pref(\"$PNAME\", $PVAL);" >> "$PREF_FILE" + echo "user_pref(\"$PNAME\", $(echo "$PVAL" | sed 's|\\|\\\\|g'));" >> "$PREF_FILE" fi done From 007911ab02458adb0b6aa457023fdb32493ea0e3 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 24 Jun 2023 16:13:32 -0400 Subject: [PATCH 084/161] Added changelog for version 23.06.1. --- appdefs.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 1e88cec..e9a0b8b 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,11 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.06.1 + date: 2023-06-24 + changes: + - 'Updated Firefox to version 114.0.2-r0.' + - 'Fixed issue caused by the presence slash or backslash characters in Firefox preference's value set via environment variable.' - version: 23.05.2 date: 2023-05-27 changes: From c2284a5bdff1e09bef4bf6992e1e05e6ba08fe31 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 24 Jun 2023 16:24:18 -0400 Subject: [PATCH 085/161] Fixed change description that broke the YAML. --- appdefs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index e9a0b8b..dc3243e 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -105,7 +105,7 @@ app: date: 2023-06-24 changes: - 'Updated Firefox to version 114.0.2-r0.' - - 'Fixed issue caused by the presence slash or backslash characters in Firefox preference's value set via environment variable.' + - 'Fixed issue caused by the presence slash or backslash characters in Firefox preference''s value set via environment variable.' - version: 23.05.2 date: 2023-05-27 changes: From 7b3c810e4e4b4de9c2f7a4b3ed40353317b2244e Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 8 Jul 2023 15:02:45 -0400 Subject: [PATCH 086/161] Updated Firefox to version 115.0.1-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c3fd0c5..7cd3be0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=114.0.2-r0 +ARG FIREFOX_VERSION=115.0.1-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 5a8c9ad1761def3ea3e09557eb7d33292f2c1328 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 15 Jul 2023 07:47:23 -0400 Subject: [PATCH 087/161] Updated Firefox to version 115.0.2-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7cd3be0..ed4cb3b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=115.0.1-r0 +ARG FIREFOX_VERSION=115.0.2-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From b6520153ea5a2ae1fae0f5694bbf181ddb15bbce Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 4 Aug 2023 08:33:00 -0400 Subject: [PATCH 088/161] Updated Firefox to version 116.0-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ed4cb3b..80cd37b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=115.0.2-r0 +ARG FIREFOX_VERSION=116.0-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 90f0b4fc60c507f9f4d37f58c6fd068a49354464 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 4 Aug 2023 08:41:07 -0400 Subject: [PATCH 089/161] Added changelog for version 23.08.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index dc3243e..8164c24 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.08.1 + date: 2023-08-04 + changes: + - 'Updated Firefox to version 116.0-r0.' - version: 23.06.1 date: 2023-06-24 changes: From 96aa2a1a5ff939e2324be7bb644a8ec506466995 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 19 Aug 2023 15:50:22 -0400 Subject: [PATCH 090/161] Added missing language to code blocks and adjusted notes for better compatibility with mkdocs. --- DOCKERHUB.md | 6 ++++-- README.md | 61 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/DOCKERHUB.md b/DOCKERHUB.md index 76343c6..12e14db 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -23,8 +23,9 @@ Foundation and its subsidiary, Mozilla Corporation. ## Quick Start -**NOTE**: The Docker command provided in this quick start is given as an example -and parameters should be adjusted to your need. +**NOTE**: + The Docker command provided in this quick start is given as an example + and parameters should be adjusted to your need. Launch the Firefox docker container with the following command: ```shell @@ -36,6 +37,7 @@ docker run -d \ ``` Where: + - `/docker/appdata/firefox`: This is where the application stores its configuration, states, log and any files needing persistency. Browse to `http://your-host-ip:5800` to access the Firefox GUI. diff --git a/README.md b/README.md index bf1d5c4..0dfe1be 100644 --- a/README.md +++ b/README.md @@ -53,8 +53,9 @@ Foundation and its subsidiary, Mozilla Corporation. ## Quick Start -**NOTE**: The Docker command provided in this quick start is given as an example -and parameters should be adjusted to your need. +**NOTE**: + The Docker command provided in this quick start is given as an example + and parameters should be adjusted to your need. Launch the Firefox docker container with the following command: ```shell @@ -66,6 +67,7 @@ docker run -d \ ``` Where: + - `/docker/appdata/firefox`: This is where the application stores its configuration, states, log and any files needing persistency. Browse to `http://your-host-ip:5800` to access the Firefox GUI. @@ -195,20 +197,23 @@ parameter(s) of an existing container. The general idea is to destroy and re-create the container: 1. Stop the container (if it is running): -``` +```shell docker stop firefox ``` + 2. Remove the container: -``` +```shell docker rm firefox ``` + 3. Create/start the container using the `docker run` command, by adjusting parameters as needed. -**NOTE**: Since all application's data is saved under the `/config` container -folder, destroying and re-creating a container is not a problem: nothing is lost -and the application comes back with the same state (as long as the mapping of -the `/config` folder remains the same). +**NOTE**: + Since all application's data is saved under the `/config` container + folder, destroying and re-creating a container is not a problem: nothing is + lost and the application comes back with the same state (as long as the + mapping of the `/config` folder remains the same). ## Docker Compose File @@ -259,17 +264,20 @@ Watchtower will seamlessly perform the necessary steps to update the container. Finally, the Docker image can be manually updated with these steps: 1. Fetch the latest image: -``` +```shell docker pull jlesage/firefox ``` + 2. Stop the container: -``` +```shell docker stop firefox ``` + 3. Remove the container: -``` +```shell docker rm firefox ``` + 4. Create and start the container using the `docker run` command, with the the same parameters that were used when it was deployed initially. @@ -320,7 +328,7 @@ user owning the data volume on the host: id Which gives an output like this one: -``` +```text uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),46(plugdev),113(lpadmin) ``` @@ -334,13 +342,13 @@ graphical interface of the application can be accessed via: * A web browser: -``` +```text http://:5800 ``` * Any VNC client: -``` +```text :5900 ``` @@ -369,7 +377,7 @@ few VNC clients support this method. [SSVNC] is one of them. While the Linux version of [SSVNC] works well, the Windows version has some issues. At the time of writing, the latest version `1.0.30` is not functional, as a connection fails with the following error: -``` +```text ReadExact: Socket error while reading ``` However, for your convenience, an unofficial and working version is provided @@ -393,11 +401,13 @@ PEM encoded, x509 certificates. |`/config/certs/web-privkey.pem` |HTTPs connection encryption.|Web server's private key.| |`/config/certs/web-fullchain.pem`|HTTPs connection encryption.|Web server's certificate, bundled with any root and intermediate certificates.| -**NOTE**: To prevent any certificate validity warnings/errors from the browser -or VNC client, make sure to supply your own valid certificates. +**NOTE**: + To prevent any certificate validity warnings/errors from the browser + or VNC client, make sure to supply your own valid certificates. -**NOTE**: Certificate files are monitored and relevant daemons are automatically -restarted when changes are detected. +**NOTE**: + Certificate files are monitored and relevant daemons are automatically + restarted when changes are detected. ### VNC Password @@ -415,10 +425,11 @@ The level of security provided by the VNC password depends on two things: When using a VNC password, it is highly desirable to enable the secure connection to prevent sending the password in clear over an unencrypted channel. -**ATTENTION**: Password is limited to 8 characters. This limitation comes from -the Remote Framebuffer Protocol [RFC](https://tools.ietf.org/html/rfc6143) (see -section [7.2.2](https://tools.ietf.org/html/rfc6143#section-7.2.2)). Any -characters beyond the limit are ignored. +**ATTENTION**: + Password is limited to 8 characters. This limitation comes from + the Remote Framebuffer Protocol [RFC](https://tools.ietf.org/html/rfc6143) + (see section [7.2.2](https://tools.ietf.org/html/rfc6143#section-7.2.2)). + Any characters beyond the limit are ignored. ## Reverse Proxy @@ -439,7 +450,7 @@ as this container. The server would proxy all HTTP requests sent to Here are the relevant configuration elements that would be added to the NGINX configuration: -``` +```nginx map $http_upgrade $connection_upgrade { default upgrade; '' close; @@ -485,7 +496,7 @@ as this container. The server would proxy all HTTP requests for Here are the relevant configuration elements that would be added to the NGINX configuration: -``` +```nginx map $http_upgrade $connection_upgrade { default upgrade; '' close; From 1cdc7dd2c41cb1d38090b52a450ddb7acf714f7b Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 19 Aug 2023 16:02:07 -0400 Subject: [PATCH 091/161] Updated Firefox to version 116.0.3-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 80cd37b..03b0aea 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=116.0-r0 +ARG FIREFOX_VERSION=116.0.3-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 007097d809f3de505164623fcc48c102216b0b2a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 20 Aug 2023 08:28:08 -0400 Subject: [PATCH 092/161] Added changelog for version 23.08.2. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 8164c24..003591d 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -101,6 +101,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.08.2 + date: 2023-08-20 + changes: + - 'Updated Firefox to version 116.0.3-r0.' - version: 23.08.1 date: 2023-08-04 changes: From e239c68c90e78f6fec543781b9392ef29cb6c5af Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 8 Nov 2023 20:18:05 -0500 Subject: [PATCH 093/161] Added the `base_os` field. --- appdefs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/appdefs.yml b/appdefs.yml index 003591d..a62a132 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -12,6 +12,7 @@ app: name: firefox friendly_name: Firefox gui_type: x11 + base_os: alpine project: description: |- Mozilla Firefox is a free and open-source web browser developed by Mozilla From c732564f3ed96d40d45f0c34562cd5795c24dc07 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 8 Nov 2023 21:10:21 -0500 Subject: [PATCH 094/161] Updated Firefox to version 119.0-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 03b0aea..8f52878 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=116.0.3-r0 +ARG FIREFOX_VERSION=119.0-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 4d7754b5cf9f640471328c4e5314dea64e91316b Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 9 Nov 2023 10:15:52 -0500 Subject: [PATCH 095/161] Added changelog for version 23.11.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index a62a132..54b9348 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.11.1 + date: 2023-11-09 + changes: + - 'Updated Firefox to version 119.0-r0.' - version: 23.08.2 date: 2023-08-20 changes: From 45ef2477683c1383313d3fddb5944c946b91b7b0 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 9 Nov 2023 19:55:40 -0500 Subject: [PATCH 096/161] Upgraded baseimage to version 4.5.0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8f52878..3b838b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.18-v4.4.2 +FROM jlesage/baseimage-gui:alpine-3.18-v4.5.0 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 58a71b43165efc9bdb6868fc4823d1c48793d25a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 9 Nov 2023 20:11:26 -0500 Subject: [PATCH 097/161] Updated README. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0dfe1be..aad350a 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,8 @@ of this parameter has the format `=`. |`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | |`KEEP_APP_RUNNING`| When set to `1`, the application will be automatically restarted when it crashes or terminates. | `0` | |`APP_NICENESS`| Priority at which the application should run. A niceness value of -20 is the highest priority and 19 is the lowest priority. The default niceness value is 0. **NOTE**: A negative niceness (priority increase) requires additional permissions. In this case, the container should be run with the docker option `--cap-add=SYS_NICE`. | `0` | -|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. Packages are installed from the repository of the Linux distribution this container is based on. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | +|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. List of available packages can be found at https://mirrors.alpinelinux.org. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | +|`PACKAGES_MIRROR`| Mirror of the repository to use when installing packages. List of mirrors is available at https://mirrors.alpinelinux.org. | (no value) | |`CONTAINER_DEBUG`| Set to `1` to enable debug logging. | `0` | |`DISPLAY_WIDTH`| Width (in pixels) of the application's window. | `1920` | |`DISPLAY_HEIGHT`| Height (in pixels) of the application's window. | `1080` | From 6416d706e5b4ec753a5562864f2edf6049199799 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 10 Nov 2023 10:30:26 -0500 Subject: [PATCH 098/161] Upgraded baseimage to version 4.5.1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3b838b1..bbdf240 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.18-v4.5.0 +FROM jlesage/baseimage-gui:alpine-3.18-v4.5.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 727079fb95b9369821557a705d1a8b69756099d7 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 10 Nov 2023 11:09:32 -0500 Subject: [PATCH 099/161] Added changelog for version 23.11.2. --- appdefs.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 54b9348..ea17bae 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,16 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.11.2 + date: 2023-11-10 + changes: + - 'Updated baseimage to version 4.5.1, which brings the following changes:' + - '2:Mirror for packages installation can be set via the `PACKAGES_MIRROR` environment variable.' + - '2:Improved the way the `take-ownership` script is working.' + - '2:Readiness and minimum running time checks should not be done for a service defined with an interval.' + - '2:Raise an error when a synched service fails to start.' + - '2:Minimum running time check of a service was using an incorrect way to verify if process is still alive.' + - '2:Fixed installation of CJK font.' - version: 23.11.1 date: 2023-11-09 changes: From f24768cb10c1e7cc593d3ea355f03a0e6a7e3520 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 17 Nov 2023 20:39:14 -0500 Subject: [PATCH 100/161] Upgraded baseimage to version 4.5.2. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index bbdf240..88325cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.18-v4.5.1 +FROM jlesage/baseimage-gui:alpine-3.18-v4.5.2 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 100f3468813bb47d521a3bec1e853f805b173599 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 19 Nov 2023 20:01:22 -0500 Subject: [PATCH 101/161] Added changelog for version 23.11.3. --- appdefs.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index ea17bae..c6b8a52 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,11 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 23.11.3 + date: 2023-11-19 + changes: + - 'Updated baseimage to version 4.5.2, which brings the following changes:' + - '2:Fixed issue that would cause the helper that takes ownership of a directory to fail when using a very high user or group ID.' - version: 23.11.2 date: 2023-11-10 changes: From dd45572d568285ec3a783d280974a95c5983533a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 19 Nov 2023 21:15:59 -0500 Subject: [PATCH 102/161] Adjusted description of the `UMASK` variable. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aad350a..4da90da 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ of this parameter has the format `=`. |`USER_ID`| ID of the user the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | |`GROUP_ID`| ID of the group the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | |`SUP_GROUP_IDS`| Comma-separated list of supplementary group IDs of the application. | (no value) | -|`UMASK`| Mask that controls how file permissions are set for newly created files. The value of the mask is in octal notation. By default, the default umask value is `0022`, meaning that newly created files are readable by everyone, but only writable by the owner. See the online umask calculator at http://wintelguy.com/umask-calc.pl. | `0022` | +|`UMASK`| Mask that controls how permissions are set for newly created files and folders. The value of the mask is in octal notation. By default, the default umask value is `0022`, meaning that newly created files and folders are readable by everyone, but only writable by the owner. See the online umask calculator at http://wintelguy.com/umask-calc.pl. | `0022` | |`LANG`| Set the [locale](https://en.wikipedia.org/wiki/Locale_(computer_software)), which defines the application's language, **if supported**. Format of the locale is `language[_territory][.codeset]`, where language is an [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), territory is an [ISO 3166 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes) and codeset is a character set, like `UTF-8`. For example, Australian English using the UTF-8 encoding is `en_AU.UTF-8`. | `en_US.UTF-8` | |`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | |`KEEP_APP_RUNNING`| When set to `1`, the application will be automatically restarted when it crashes or terminates. | `0` | From 55b696e86bf626da587bc68e2349f98ea7cb952a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 6 Jan 2024 17:55:53 -0500 Subject: [PATCH 103/161] Upgraded baseimage to version 4.5.3. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 88325cb..ce17b0f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.18-v4.5.2 +FROM jlesage/baseimage-gui:alpine-3.18-v4.5.3 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 07172d48c42511987c5e9bef662730328b518741 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 20 Jan 2024 12:06:31 -0500 Subject: [PATCH 104/161] Updated Firefox to version 120.0.1-r0. --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ce17b0f..182844f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,13 +13,13 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.18-v4.5.3 +FROM jlesage/baseimage-gui:alpine-3.19-v4.5.3 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=119.0-r0 +ARG FIREFOX_VERSION=120.0.1-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 1cfbcbb163838f6145ba6f97dcb15d6e1567f4ee Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 20 Jan 2024 12:11:19 -0500 Subject: [PATCH 105/161] Added changelog for version 24.01.1. --- appdefs.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index c6b8a52..09cf168 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,13 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.01.1 + date: 2024-01-20 + changes: + - 'Updated Firefox to version 120.0.1-r0.' + - 'Updated baseimage to version 4.5.3, based on Alpine Linux 3.19, which brings the following changes:' + - '2:Disabled fullscreen support when page is loaded into an iFrame.' + - '2:Rebuilt against latest distro images to get security fixes.' - version: 23.11.3 date: 2023-11-19 changes: From 4937780d1960c159f9740bf458e6f0c9c4c1785a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 3 Mar 2024 14:56:29 -0500 Subject: [PATCH 106/161] Updated GitHub actions to their latest version. --- .github/workflows/build-image.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 48fb8c6..98066c3 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -100,22 +100,22 @@ jobs: #echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - name: Setup QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 with: platforms: arm,arm64,ppc64le,mips64,s390x - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ steps.prep.outputs.is_release == 'yes' }} - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build and push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: push: ${{ steps.prep.outputs.is_release == 'yes' }} provenance: false @@ -132,12 +132,12 @@ jobs: docker buildx imagetools inspect ${{ env.DOCKER_IMAGE_NAME }}:${{ steps.prep.outputs.version }} - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 if: ${{ steps.prep.outputs.release_type == 'standard' }} - name: Dockerhub description if: ${{ steps.prep.outputs.release_type == 'standard' }} - uses: peter-evans/dockerhub-description@v3 + uses: peter-evans/dockerhub-description@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} From 249a8a08b16bb420139203d522fa839ec027ce82 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 12 Apr 2024 18:37:17 -0400 Subject: [PATCH 107/161] Updated Firefox to version 124.0.1-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 182844f..37e1862 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.19-v4.5.3 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=120.0.1-r0 +ARG FIREFOX_VERSION=124.0.1-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 5d9dfa10ed62469320cb06542500795fea87d5bb Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 12 Apr 2024 18:42:58 -0400 Subject: [PATCH 108/161] Added changelog for version 24.04.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 09cf168..baddd2f 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.04.1 + date: 2024-04-12 + changes: + - 'Updated Firefox to version 124.0.1-r0.' - version: 24.01.1 date: 2024-01-20 changes: From ff708f8424fce988faf3e4220f9a4595a6693e69 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 2 May 2024 18:58:59 -0400 Subject: [PATCH 109/161] Updated Firefox to version 125.0.3-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 37e1862..8fa76a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.19-v4.5.3 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=124.0.1-r0 +ARG FIREFOX_VERSION=125.0.3-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From cf6db111ee65e5f218b8d6802e1d3b69d0e084b4 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 2 May 2024 19:27:54 -0400 Subject: [PATCH 110/161] Added changelog for version 24.05.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index baddd2f..9f2ff92 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.05.1 + date: 2024-05-02 + changes: + - 'Updated Firefox to version 125.0.3-r0.' - version: 24.04.1 date: 2024-04-12 changes: From 3f7226c458b94b1e942f40c04bdfbf3555468b91 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 26 Jun 2024 14:31:43 -0400 Subject: [PATCH 111/161] Added license. --- LICENSE | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..909a57c --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2024 Jocelyn Le Sage + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + From f4d003983bb59baf93063c55e135536c94f1ad80 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 27 Jun 2024 15:52:35 -0400 Subject: [PATCH 112/161] Updated baseimage to version 4.6.1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8fa76a3..7bfffa8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.19-v4.5.3 +FROM jlesage/baseimage-gui:alpine-3.19-v4.6.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 6d92c42446fabd8be0410f2d80de9df41f1352bf Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 27 Jun 2024 15:53:03 -0400 Subject: [PATCH 113/161] Added pulse for audio support. --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 7bfffa8..eeaaa02 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,6 +40,8 @@ RUN \ add-pkg \ # WebGL support. mesa-dri-gallium \ + # Audio support. + libpulse \ # Icons used by folder/file selection window (when saving as). adwaita-icon-theme \ # A font is needed. From 710d0195aa9c55d2c51ce9f8b3c4daa25ab5ddb1 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 27 Jun 2024 15:53:51 -0400 Subject: [PATCH 114/161] Keep usage of mesa drivers for WebGL support. --- rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100755 rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH diff --git a/rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH b/rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH new file mode 100755 index 0000000..192fbcc --- /dev/null +++ b/rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e # Exit immediately if a command exits with a non-zero status. +set -u # Treat unset variables as an error. + +# Override what is set by the baseimage and do not set the variable. Needed for +# WebGL support. +exit 100 + +# vim:ft=sh:ts=4:sw=4:et:sts=4 From faf17984a73dc92cfa818b8f0a8213a80f6e67e8 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 27 Jun 2024 15:54:57 -0400 Subject: [PATCH 115/161] Updated Firefox to version 126.0.1-r0 --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index eeaaa02..0c8613f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,13 +13,13 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.19-v4.6.1 +FROM jlesage/baseimage-gui:alpine-3.20-v4.6.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=125.0.3-r0 +ARG FIREFOX_VERSION=126.0.1-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From b61088c666753e55db87cfff19e2197a4c80014a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 30 Jun 2024 22:13:10 -0400 Subject: [PATCH 116/161] Use helper to evaluate boolean value. --- rootfs/etc/services.d/app/params | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rootfs/etc/services.d/app/params b/rootfs/etc/services.d/app/params index ad9410b..aaa1c23 100755 --- a/rootfs/etc/services.d/app/params +++ b/rootfs/etc/services.d/app/params @@ -11,7 +11,7 @@ echo "/config/profile" echo "--setDefaultBrowser" # Check if kiosk mode is enabled. -if [ "${FF_KIOSK:-0}" == 1 ]; then +if is-bool-val-true "${FF_KIOSK:-0}"; then echo "--kiosk" fi From 1e6d352a542545c2202c2cb158d217c4f4b456e9 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 30 Jun 2024 22:13:53 -0400 Subject: [PATCH 117/161] Updated baseimage to version 4.6.3. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0c8613f..f7552b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.20-v4.6.1 +FROM jlesage/baseimage-gui:alpine-3.20-v4.6.3 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From ebe461ade16f8f20da7d342221fed248e860ef32 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 30 Jun 2024 22:25:39 -0400 Subject: [PATCH 118/161] Added environment variable to specify custom arguments to pass to Firefox. --- Dockerfile | 3 ++- appdefs.yml | 10 ++++++++++ rootfs/etc/services.d/app/params | 5 +++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f7552b8..35d00cc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -90,7 +90,8 @@ RUN \ # Set public environment variables. ENV \ FF_OPEN_URL= \ - FF_KIOSK=0 + FF_KIOSK=0 \ + FF_CUSTOM_ARGS= # Metadata. LABEL \ diff --git a/appdefs.yml b/appdefs.yml index 9f2ff92..c0ad2a7 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -395,6 +395,16 @@ container: customer-facing displays. type: public default: 0 + - name: FF_CUSTOM_ARGS + description: >- + Custom argument(s) to pass when launching {{ app.friendly_name }}. + type: public + default: 0 + unraid_template: + title: "Custom Arguments" + display: advanced + required: false + mask: false # Volumes volumes: [] diff --git a/rootfs/etc/services.d/app/params b/rootfs/etc/services.d/app/params index aaa1c23..46c42d9 100755 --- a/rootfs/etc/services.d/app/params +++ b/rootfs/etc/services.d/app/params @@ -20,3 +20,8 @@ fi if [ -n "${FF_OPEN_URL:-}" ]; then echo "$FF_OPEN_URL" fi + +# Custom arguments. +if [ -n "${FF_CUSTOM_ARGS:-}" ]; then + eval 'for word in '$FF_CUSTOM_ARGS'; do echo "$word"; done' +fi From a80c326107ae933166626847826b41ac107fe3cb Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 30 Jun 2024 23:06:41 -0400 Subject: [PATCH 119/161] Added `FF_OPEN_URL` and `FF_KIOSK` variables to unRAID template. --- appdefs.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index c0ad2a7..296cc4c 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -388,6 +388,11 @@ container: description: >- The URL to open when {{ app.friendly_name }} starts. type: public + unraid_template: + title: "Open URL" + display: advanced + required: false + mask: false - name: FF_KIOSK description: >- Set to `1` to enable kiosk mode. This mode launches Firefox in a very @@ -395,6 +400,15 @@ container: customer-facing displays. type: public default: 0 + unraid_template: + title: "Kiosk Mode" + description: >- + Set to 1 to enable kiosk mode. This mode launches Firefox in a very + restricted and limited mode best suitable for public areas or + customer-facing displays. + display: advanced + required: false + mask: false - name: FF_CUSTOM_ARGS description: >- Custom argument(s) to pass when launching {{ app.friendly_name }}. From b83f0a80b812ca51e9e39e11a084b6cb1074df7d Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 30 Jun 2024 23:14:01 -0400 Subject: [PATCH 120/161] Added vim modeline. --- rootfs/startapp.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rootfs/startapp.sh b/rootfs/startapp.sh index 8a40a61..ea263e9 100755 --- a/rootfs/startapp.sh +++ b/rootfs/startapp.sh @@ -29,3 +29,5 @@ set -e /usr/bin/firefox --version exec /usr/bin/firefox "$@" >> /config/log/firefox/output.log 2>> /config/log/firefox/error.log + +# vim:ft=sh:ts=4:sw=4:et:sts=4 From 92d8d0cba776b0de1327240d20155de577fe7262 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 30 Jun 2024 23:28:59 -0400 Subject: [PATCH 121/161] Updated README. --- README.md | 131 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 91 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index 4da90da..78540ca 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,8 @@ Foundation and its subsidiary, Mozilla Corporation. * [SSVNC](#ssvnc) * [Certificates](#certificates) * [VNC Password](#vnc-password) + * [Web Authentication](#web-authentication) + * [Configuring Users Credentials](#configuring-users-credentials) * [Reverse Proxy](#reverse-proxy) * [Routing Based on Hostname](#routing-based-on-hostname) * [Routing Based on URL Path](#routing-based-on-url-path) @@ -85,15 +87,15 @@ docker run [-d] \ | Parameter | Description | |-----------|-------------| -| -d | Run the container in the background. If not set, the container runs in the foreground. | -| -e | Pass an environment variable to the container. See the [Environment Variables](#environment-variables) section for more details. | -| -v | Set a volume mapping (allows to share a folder/file between the host and the container). See the [Data Volumes](#data-volumes) section for more details. | -| -p | Set a network port mapping (exposes an internal container port to the host). See the [Ports](#ports) section for more details. | +| -d | Run the container in the background. If not set, the container runs in the foreground. | +| -e | Pass an environment variable to the container. See the [Environment Variables](#environment-variables) section for more details. | +| -v | Set a volume mapping (allows to share a folder/file between the host and the container). See the [Data Volumes](#data-volumes) section for more details. | +| -p | Set a network port mapping (exposes an internal container port to the host). See the [Ports](#ports) section for more details. | ### Environment Variables To customize some properties of the container, the following environment -variables can be passed via the `-e` parameter (one for each variable). Value +variables can be passed via the `-e` parameter (one for each variable). Value of this parameter has the format `=`. | Variable | Description | Default | @@ -112,6 +114,10 @@ of this parameter has the format `=`. |`DISPLAY_WIDTH`| Width (in pixels) of the application's window. | `1920` | |`DISPLAY_HEIGHT`| Height (in pixels) of the application's window. | `1080` | |`DARK_MODE`| When set to `1`, dark mode is enabled for the application. | `0` | +|`WEB_AUDIO`| When set to `1`, audio support is enabled, meaning that any audio produced by the application is played through the browser. Note that audio is not supported for VNC clients. | `0` | +|`WEB_AUTHENTICATION`| When set to `1`, the application' GUI is protected via a login page when accessed via a web browser. Access is allowed only when providing valid credentials. **NOTE**: This feature requires secure connection (`SECURE_CONNECTION` environment variable) to be enabled. | `0` | +|`WEB_AUTHENTICATION_USERNAME`| Optional username to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | +|`WEB_AUTHENTICATION_PASSWORD`| Optional password to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | |`SECURE_CONNECTION`| When set to `1`, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the [Security](#security) section for more details. | `0` | |`SECURE_CONNECTION_VNC_METHOD`| Method used to perform the secure VNC connection. Possible values are `SSL` or `TLS`. See the [Security](#security) section for more details. | `SSL` | |`SECURE_CONNECTION_CERTS_CHECK_INTERVAL`| Interval, in seconds, at which the system verifies if web or VNC certificates have changed. When a change is detected, the affected services are automatically restarted. A value of `0` disables the check. | `60` | @@ -121,11 +127,12 @@ of this parameter has the format `=`. |`ENABLE_CJK_FONT`| When set to `1`, open-source computer font `WenQuanYi Zen Hei` is installed. This font contains a large range of Chinese/Japanese/Korean characters. | `0` | |`FF_OPEN_URL`| The URL to open when Firefox starts. | (no value) | |`FF_KIOSK`| Set to `1` to enable kiosk mode. This mode launches Firefox in a very restricted and limited mode best suitable for public areas or customer-facing displays. | `0` | +|`FF_CUSTOM_ARGS`| Custom argument(s) to pass when launching Firefox. | `0` | #### Deployment Considerations Many tools used to manage Docker containers extract environment variables -defined by the Docker image and use them to create/deploy the container. For +defined by the Docker image and use them to create/deploy the container. For example, this is done by: - The Docker application on Synology NAS - The Container Station on QNAP NAS @@ -137,33 +144,33 @@ variables to fit its needs, it can also be confusing and dangerous to keep all of them. A good practice is to set/keep only the variables that are needed for the -container to behave as desired in a specific setup. If the value of variable is -kept to its default value, it means that it can be removed. Keep in mind that +container to behave as desired in a specific setup. If the value of variable is +kept to its default value, it means that it can be removed. Keep in mind that all variables are optional, meaning that none of them is required for the container to start. Removing environment variables that are not needed provides some advantages: - - Prevents keeping variables that are no longer used by the container. Over + - Prevents keeping variables that are no longer used by the container. Over time, with image updates, some variables might be removed. - - Allows the Docker image to change/fix a default value. Again, with image + - Allows the Docker image to change/fix a default value. Again, with image updates, the default value of a variable might be changed to fix an issue, or to better support a new feature. - Prevents changes to a variable that might affect the correct function of - the container. Some undocumented variables, like `PATH` or `ENV`, are - required to be exposed, but are not meant to be changed by users. However, + the container. Some undocumented variables, like `PATH` or `ENV`, are + required to be exposed, but are not meant to be changed by users. However, container management tools still show these variables to users. - There is a bug with the Container Station on QNAP and the Docker application on Synology, where an environment variable without value might not be - allowed. This behavior is wrong: it's absolutely fine to have a variable - without value. In fact, this container does have variables without value by - default. Thus, removing unneeded variables is a good way to prevent + allowed. This behavior is wrong: it's absolutely fine to have a variable + without value. In fact, this container does have variables without value by + default. Thus, removing unneeded variables is a good way to prevent deployment issue on these devices. ### Data Volumes -The following table describes data volumes used by the container. The mappings -are set via the `-v` parameter. Each mapping is specified with the following +The following table describes data volumes used by the container. The mappings +are set via the `-v` parameter. Each mapping is specified with the following format: `:[:PERMISSIONS]`. | Container path | Permissions | Description | @@ -175,8 +182,8 @@ format: `:[:PERMISSIONS]`. Here is the list of ports used by the container. When using the default bridge network, ports can be mapped to the host via the -`-p` parameter (one per port mapping). Each mapping is defined with the -following format: `:`. The port number used inside +`-p` parameter (one per port mapping). Each mapping is defined with the +following format: `:`. The port number used inside the container might not be changeable, but you are free to use any port on the host side. @@ -194,7 +201,7 @@ As can be seen, environment variables, volume and port mappings are all specifie while creating the container. The following steps describe the method used to add, remove or update -parameter(s) of an existing container. The general idea is to destroy and +parameter(s) of an existing container. The general idea is to destroy and re-create the container: 1. Stop the container (if it is running): @@ -221,7 +228,7 @@ docker rm firefox Here is an example of a `docker-compose.yml` file that can be used with [Docker Compose](https://docs.docker.com/compose/overview/). -Make sure to adjust according to your needs. Note that only mandatory network +Make sure to adjust according to your needs. Note that only mandatory network ports are part of the example. ```yaml @@ -237,11 +244,11 @@ services: ## Docker Image Versioning -Each release of a Docker image is versioned. Prior to october 2022, the +Each release of a Docker image is versioned. Prior to october 2022, the [semantic versioning](https://semver.org) was used as the versioning scheme. Since then, versioning scheme changed to -[calendar versioning](https://calver.org). The format used is `YY.MM.SEQUENCE`, +[calendar versioning](https://calver.org). The format used is `YY.MM.SEQUENCE`, where: - `YY` is the zero-padded year (relative to year 2000). - `MM` is the zero-padded month. @@ -252,10 +259,10 @@ where: Because features are added, issues are fixed, or simply because a new version of the containerized application is integrated, the Docker image is regularly -updated. Different methods can be used to update the Docker image. +updated. Different methods can be used to update the Docker image. The system used to run the container may have a built-in way to update -containers. If so, this could be your primary way to update Docker images. +containers. If so, this could be your primary way to update Docker images. An other way is to have the image be automatically updated with [Watchtower]. Watchtower is a container-based solution for automating Docker image updates. @@ -293,12 +300,12 @@ container image. 2. Click on *Registry* in the left pane. 3. In the search bar, type the name of the container (`jlesage/firefox`). 4. Select the image, click *Download* and then choose the `latest` tag. - 5. Wait for the download to complete. A notification will appear once done. + 5. Wait for the download to complete. A notification will appear once done. 6. Click on *Container* in the left pane. 7. Select your Firefox container. 8. Stop it by clicking *Action*->*Stop*. 9. Clear the container by clicking *Action*->*Reset* (or *Action*->*Clear* if - you don't have the latest *Docker* application). This removes the + you don't have the latest *Docker* application). This removes the container while keeping its configuration. 10. Start the container again by clicking *Action*->*Start*. **NOTE**: The container may temporarily disappear from the list while it is re-created. @@ -314,8 +321,8 @@ For unRAID, a container image can be updated by following these steps: ## User/Group IDs When using data volumes (`-v` flags), permissions issues can occur between the -host and the container. For example, the user within the container may not -exist on the host. This could prevent the host from properly accessing files +host and the container. For example, the user within the container may not +exist on the host. This could prevent the host from properly accessing files and folders on the shared volume. To avoid any problem, you can specify the user the application should run as. @@ -359,15 +366,15 @@ By default, access to the application's GUI is done over an unencrypted connection (HTTP or VNC). Secure connection can be enabled via the `SECURE_CONNECTION` environment -variable. See the [Environment Variables](#environment-variables) section for +variable. See the [Environment Variables](#environment-variables) section for more details on how to set an environment variable. When enabled, application's GUI is performed over an HTTPs connection when -accessed with a browser. All HTTP accesses are automatically redirected to +accessed with a browser. All HTTP accesses are automatically redirected to HTTPs. -When using a VNC client, the VNC connection is performed over SSL. Note that -few VNC clients support this method. [SSVNC] is one of them. +When using a VNC client, the VNC connection is performed over SSL. Note that +few VNC clients support this method. [SSVNC] is one of them. [SSVNC]: http://www.karlrunge.com/x11vnc/ssvnc.html @@ -376,7 +383,7 @@ few VNC clients support this method. [SSVNC] is one of them. [SSVNC] is a VNC viewer that adds encryption security to VNC connections. While the Linux version of [SSVNC] works well, the Windows version has some -issues. At the time of writing, the latest version `1.0.30` is not functional, +issues. At the time of writing, the latest version `1.0.30` is not functional, as a connection fails with the following error: ```text ReadExact: Socket error while reading @@ -392,8 +399,8 @@ problems. ### Certificates -Here are the certificate files needed by the container. By default, when they -are missing, self-signed certificates are generated and used. All files have +Here are the certificate files needed by the container. By default, when they +are missing, self-signed certificates are generated and used. All files have PEM encoded, x509 certificates. | Container Path | Purpose | Content | @@ -412,7 +419,7 @@ PEM encoded, x509 certificates. ### VNC Password -To restrict access to your application, a password can be specified. This can +To restrict access to your application, a password can be specified. This can be done via two methods: * By using the `VNC_PASSWORD` environment variable. * By creating a `.vncpass_clear` file at the root of the `/config` volume. @@ -427,11 +434,55 @@ When using a VNC password, it is highly desirable to enable the secure connection to prevent sending the password in clear over an unencrypted channel. **ATTENTION**: - Password is limited to 8 characters. This limitation comes from + Password is limited to 8 characters. This limitation comes from the Remote Framebuffer Protocol [RFC](https://tools.ietf.org/html/rfc6143) (see section [7.2.2](https://tools.ietf.org/html/rfc6143#section-7.2.2)). Any characters beyond the limit are ignored. +### Web Authentication + +Access to the application's GUI via a web browser can be protected with a login +page. When web authentication is enabled, users have to provide valid +credentials, otherwise access is denied. + +Web authentication can be enabled by setting the `WEB_AUTHENTICATION` +environment variable to `1`. + +See the [Environment Variables](#environment-variables) section for more details +on how to set an environment variable. + +**NOTE**: Secure connection must be also enabled to use web authentication. + See the [Security](#security) section for more details. + +#### Configuring Users Credentials + +Two methods can be used to configure users credentials: + + 1. Via container environment variables. + 2. Via password database. + +Containers environment variables can be used to quickly and easily configure +a single user. Username and pasword are defined via the following environment +variables: + - `WEB_AUTHENTICATION_USERNAME` + - `WEB_AUTHENTICATION_PASSWORD` + +See the [Environment Variables](#environment-variables) section for more details +on how to set an environment variable. + +The second method is more secure and allows multiple users to be configured. +The usernames and password hashes are saved into a password database, located at +`/config/webauth-htpasswd` inside the container. This database file has the +same format as htpasswd files of the Apache HTTP server. Note that password +themselves are not saved into the database, but only their hash. The bcrypt +password hashing function is used to generate hashes. + +Users are managed via the `webauth-user` tool included in the container: + - To add a user password: `docker exec -ti webauth-user add `. + - To update a user password: `docker exec -ti webauth-user update `. + - To remove a user: `docker exec webauth-user del `. + - To list users: `docker exec webauth-user user`. + ## Reverse Proxy The following sections contain NGINX configurations that need to be added in @@ -445,7 +496,7 @@ path. In this scenario, each hostname is routed to a different application/container. For example, let's say the reverse proxy server is running on the same machine -as this container. The server would proxy all HTTP requests sent to +as this container. The server would proxy all HTTP requests sent to `firefox.domain.tld` to the container at `127.0.0.1:5800`. Here are the relevant configuration elements that would be added to the NGINX @@ -491,7 +542,7 @@ In this scenario, the hostname is the same, but different URL paths are used to route to different applications/containers. For example, let's say the reverse proxy server is running on the same machine -as this container. The server would proxy all HTTP requests for +as this container. The server would proxy all HTTP requests for `server.domain.tld/firefox` to the container at `127.0.0.1:5800`. Here are the relevant configuration elements that would be added to the NGINX From 10685cda38b02291bfc6d3217d3b7cda065da9dc Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 2 Jul 2024 07:54:27 -0400 Subject: [PATCH 122/161] Added changelog for version 24.07.1. --- appdefs.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 296cc4c..2391f91 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,18 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.07.1 + date: 2024-07-02 + changes: + - 'Updated Firefox to version 126.0.1-r0.' + - 'Updated baseimage to version 4.6.3, which brings the following changes:' + - '2:Audio support through web browser.' + - '2:Web authentication support.' + - '2:Better support of GTK4 applications.' + - '2:Updated noVNC to version 1.5.0.' + - '2:Updated web UI components (Bootstrap, Font Awesome).' + - '2:When connecting, the control bar is now temporarily shown only once.' + - '2:During package mirror setup, make sure to keep permissions of copied files.' - version: 24.05.1 date: 2024-05-02 changes: From f0965432b3d2212e7ca70ed6f882d06469924d3d Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Tue, 30 Jul 2024 19:50:47 -0400 Subject: [PATCH 123/161] Updated build-push-action to version 6. --- .github/workflows/build-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 98066c3..e1a4542 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -115,7 +115,7 @@ jobs: password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: push: ${{ steps.prep.outputs.is_release == 'yes' }} provenance: false From b55c129451bd4f62fa0f6da480778ee05ab72e83 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 5 Aug 2024 09:35:29 -0400 Subject: [PATCH 124/161] Adjusted link to Firefox. --- DOCKERHUB.md | 4 ++-- README.md | 4 ++-- appdefs.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DOCKERHUB.md b/DOCKERHUB.md index 12e14db..aca92c5 100644 --- a/DOCKERHUB.md +++ b/DOCKERHUB.md @@ -7,14 +7,14 @@ [![Source](https://img.shields.io/badge/Source-GitHub-blue?logo=github&style=for-the-badge)](https://github.com/jlesage/docker-firefox) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?style=for-the-badge)](https://paypal.me/JocelynLeSage) -This is a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). +This is a Docker container for [Firefox](https://www.mozilla.org/firefox/). The GUI of the application is accessed through a modern web browser (no installation or configuration needed on the client side) or via any VNC client. --- -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) +[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/firefox/) Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. diff --git a/README.md b/README.md index 78540ca..6fc5453 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,14 @@ [![Build Status](https://img.shields.io/github/actions/workflow/status/jlesage/docker-firefox/build-image.yml?logo=github&branch=master&style=for-the-badge)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?style=for-the-badge)](https://paypal.me/JocelynLeSage) -This project implements a Docker container for [Firefox](https://www.mozilla.org/en-US/firefox/). +This project implements a Docker container for [Firefox](https://www.mozilla.org/firefox/). The GUI of the application is accessed through a modern web browser (no installation or configuration needed on the client side) or via any VNC client. --- -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/en-US/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/en-US/firefox/) +[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/firefox/) Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. diff --git a/appdefs.yml b/appdefs.yml index 2391f91..27a9950 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -17,7 +17,7 @@ app: description: |- Mozilla Firefox is a free and open-source web browser developed by Mozilla Foundation and its subsidiary, Mozilla Corporation. - url: https://www.mozilla.org/en-US/firefox/ + url: https://www.mozilla.org/firefox/ unraid: support_url: https://forums.unraid.net/topic/69440-support-firefox/ category: "Tools:" From 2220f9f59e14ea9428a1902ae458caab43f176c1 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 5 Aug 2024 09:36:43 -0400 Subject: [PATCH 125/161] Updated Firefox to version 128.0.3-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 35d00cc..49b47bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.20-v4.6.3 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=126.0.1-r0 +ARG FIREFOX_VERSION=128.0.3-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 36de296a7cbcd416b4b47f4a557cc742961b4514 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 5 Aug 2024 09:53:43 -0400 Subject: [PATCH 126/161] Added changelog for version 24.08.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 27a9950..d11e6ab 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.08.1 + date: 2024-08-05 + changes: + - 'Updated Firefox to version 128.0.3-r0.' - version: 24.07.1 date: 2024-07-02 changes: From 0279b73a361761855f29ed45a5aa7be7c13b701f Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 30 Aug 2024 22:26:31 -0400 Subject: [PATCH 127/161] Updated README. --- README.md | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 6fc5453..d30765e 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,9 @@ Foundation and its subsidiary, Mozilla Corporation. ## Quick Start -**NOTE**: - The Docker command provided in this quick start is given as an example - and parameters should be adjusted to your need. +> [!IMPORTANT] +> The Docker command provided in this quick start is given as an example and +> parameters should be adjusted to your need. Launch the Firefox docker container with the following command: ```shell @@ -217,11 +217,11 @@ docker rm firefox 3. Create/start the container using the `docker run` command, by adjusting parameters as needed. -**NOTE**: - Since all application's data is saved under the `/config` container - folder, destroying and re-creating a container is not a problem: nothing is - lost and the application comes back with the same state (as long as the - mapping of the `/config` folder remains the same). +> [!NOTE] +> Since all application's data is saved under the `/config` container folder, +> destroying and re-creating a container is not a problem: nothing is lost and +> the application comes back with the same state (as long as the mapping of the +> `/config` folder remains the same). ## Docker Compose File @@ -409,13 +409,13 @@ PEM encoded, x509 certificates. |`/config/certs/web-privkey.pem` |HTTPs connection encryption.|Web server's private key.| |`/config/certs/web-fullchain.pem`|HTTPs connection encryption.|Web server's certificate, bundled with any root and intermediate certificates.| -**NOTE**: - To prevent any certificate validity warnings/errors from the browser - or VNC client, make sure to supply your own valid certificates. +> [!TIP] +> To prevent any certificate validity warnings/errors from the browser or VNC +> client, make sure to supply your own valid certificates. -**NOTE**: - Certificate files are monitored and relevant daemons are automatically - restarted when changes are detected. +> [!NOTE] +> Certificate files are monitored and relevant daemons are automatically +> restarted when changes are detected. ### VNC Password @@ -433,11 +433,11 @@ The level of security provided by the VNC password depends on two things: When using a VNC password, it is highly desirable to enable the secure connection to prevent sending the password in clear over an unencrypted channel. -**ATTENTION**: - Password is limited to 8 characters. This limitation comes from - the Remote Framebuffer Protocol [RFC](https://tools.ietf.org/html/rfc6143) - (see section [7.2.2](https://tools.ietf.org/html/rfc6143#section-7.2.2)). - Any characters beyond the limit are ignored. +> [!CAUTION] +> Password is limited to 8 characters. This limitation comes from the Remote +> Framebuffer Protocol [RFC](https://tools.ietf.org/html/rfc6143) (see section +> [7.2.2](https://tools.ietf.org/html/rfc6143#section-7.2.2)). Any characters +> beyond the limit are ignored. ### Web Authentication @@ -451,8 +451,9 @@ environment variable to `1`. See the [Environment Variables](#environment-variables) section for more details on how to set an environment variable. -**NOTE**: Secure connection must be also enabled to use web authentication. - See the [Security](#security) section for more details. +> [!IMPORTANT] +> Secure connection must also be enabled to use web authentication. +> See the [Security](#security) section for more details. #### Configuring Users Credentials @@ -568,6 +569,9 @@ server { location = /firefox {return 301 $scheme://$http_host/firefox/;} location /firefox/ { proxy_pass http://docker-firefox/; + # Uncomment the following line if your Nginx server runs on a port that + # differs from the one seen by external clients. + #port_in_redirect off; location /firefox/websockify { proxy_pass http://docker-firefox/websockify/; proxy_http_version 1.1; From cf4c95031a70ae33553387395182ef480f0e7295 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 16 Sep 2024 06:42:22 -0400 Subject: [PATCH 128/161] Updated baseimage to version 4.6.4. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 49b47bd..cd92a01 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.20-v4.6.3 +FROM jlesage/baseimage-gui:alpine-3.20-v4.6.4 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From c6c9fd6d33e59e79c4168f6cbc83bc482e54797a Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 29 Sep 2024 17:34:33 -0400 Subject: [PATCH 129/161] Updated Firefox to verison 130.0.1-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cd92a01..08b5c62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.20-v4.6.4 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=128.0.3-r0 +ARG FIREFOX_VERSION=130.0.1-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 646af130f10d2041f0b78932d0a993ce779dba98 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 29 Sep 2024 17:45:46 -0400 Subject: [PATCH 130/161] Disabled warning message. --- .../firefox/browser/defaults/preferences/firefox-branding.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js b/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js index 9e9e1da..c79e78d 100644 --- a/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js +++ b/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js @@ -3,6 +3,8 @@ pref("browser.download.dir", "/config/downloads"); pref("browser.download.folderList", 2); // Disable the privacy notice page. pref("toolkit.telemetry.reportingpolicy.firstRun", false); +// Disable some warning messages. +pref("security.sandbox.warn_unprivileged_namespaces", false); // Prevent closing Firefox when closing the last tab. pref("browser.tabs.closeWindowWithLastTab", false); // Disable confirmation before quitting with Ctrl+Q. Needed to allow Firefox From d875a6e074e4caec31e8bf05a536ba11ea22ec33 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 29 Sep 2024 17:48:43 -0400 Subject: [PATCH 131/161] Added changelog for version 24.09.1. --- appdefs.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index d11e6ab..5089d51 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,13 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.09.1 + date: 2024-09-29 + changes: + - 'Updated Firefox to verison 130.0.1-r0.' + - 'Updated baseimage to version 4.6.4, which brings the following changes:' + - '2:Fixed web authentication feature with URL path-based reverse proxy.' + - '2:Rebuild against latest distro images to get security fixes.' - version: 24.08.1 date: 2024-08-05 changes: From ef9aab4d272358042dc96f7bda3f28168ed9977c Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 29 Sep 2024 17:55:04 -0400 Subject: [PATCH 132/161] Fixed typo. --- appdefs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appdefs.yml b/appdefs.yml index 5089d51..71c53f5 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -105,7 +105,7 @@ app: - version: 24.09.1 date: 2024-09-29 changes: - - 'Updated Firefox to verison 130.0.1-r0.' + - 'Updated Firefox to version 130.0.1-r0.' - 'Updated baseimage to version 4.6.4, which brings the following changes:' - '2:Fixed web authentication feature with URL path-based reverse proxy.' - '2:Rebuild against latest distro images to get security fixes.' From ef37ee14f084d7827bb8cfd0d28d26f16fc82393 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 20 Oct 2024 19:41:30 -0400 Subject: [PATCH 133/161] Fixed packages URL. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d30765e..66d1df3 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ of this parameter has the format `=`. |`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | |`KEEP_APP_RUNNING`| When set to `1`, the application will be automatically restarted when it crashes or terminates. | `0` | |`APP_NICENESS`| Priority at which the application should run. A niceness value of -20 is the highest priority and 19 is the lowest priority. The default niceness value is 0. **NOTE**: A negative niceness (priority increase) requires additional permissions. In this case, the container should be run with the docker option `--cap-add=SYS_NICE`. | `0` | -|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. List of available packages can be found at https://mirrors.alpinelinux.org. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | +|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. List of available packages can be found at https://pkgs.alpinelinux.org. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | |`PACKAGES_MIRROR`| Mirror of the repository to use when installing packages. List of mirrors is available at https://mirrors.alpinelinux.org. | (no value) | |`CONTAINER_DEBUG`| Set to `1` to enable debug logging. | `0` | |`DISPLAY_WIDTH`| Width (in pixels) of the application's window. | `1920` | From 9f9a15d52c825e7b5849a7e3dd52d44df864ec26 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 28 Oct 2024 20:43:02 -0400 Subject: [PATCH 134/161] Updated Firefox to version 131.0.2-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 08b5c62..c4925cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.20-v4.6.4 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=130.0.1-r0 +ARG FIREFOX_VERSION=131.0.2-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 8e0053eb85f08db5f0380b7a80d5e703e7dd62ff Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 28 Oct 2024 20:50:01 -0400 Subject: [PATCH 135/161] Added changelog for version 24.10.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 71c53f5..bf6125a 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.10.1 + date: 2024-10-28 + changes: + - 'Updated Firefox to version 131.0.2-r0.' - version: 24.09.1 date: 2024-09-29 changes: From 015885f405fedcc00567b409fc30e8e144041973 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 11 Nov 2024 14:12:48 -0500 Subject: [PATCH 136/161] Updated Firefox to version 132.0-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c4925cb..02cd548 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.20-v4.6.4 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=131.0.2-r0 +ARG FIREFOX_VERSION=132.0-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From b0fc38fc50baae989fe61de02b96e73dab2b221b Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 11 Nov 2024 14:17:55 -0500 Subject: [PATCH 137/161] Added changelog for version 24.11.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index bf6125a..bbec493 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.11.1 + date: 2024-11-11 + changes: + - 'Updated Firefox to version 132.0-r0.' - version: 24.10.1 date: 2024-10-28 changes: From b7c4622ec5b4bed080416f4bc885257a9a0ac3d6 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 5 Dec 2024 10:06:06 -0500 Subject: [PATCH 138/161] Upgraded baseimage to version 4.6.6. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 02cd548..93966d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.20-v4.6.4 +FROM jlesage/baseimage-gui:alpine-3.20-v4.6.6 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From a7efaa4cc9d6101bc1feefddb1e4e7053aa59c99 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Thu, 5 Dec 2024 10:14:07 -0500 Subject: [PATCH 139/161] Updated Firefox to version 132.0.2-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 93966d3..138629f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.20-v4.6.6 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=132.0-r0 +ARG FIREFOX_VERSION=132.0.2-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 7bac59e5427cd3481a639058a33816b376ca4836 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 6 Dec 2024 11:56:28 -0500 Subject: [PATCH 140/161] Upgraded baseimage to version 4.6.7. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 138629f..f32eeb5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.20-v4.6.6 +FROM jlesage/baseimage-gui:alpine-3.20-v4.6.7 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From ab4cc0e1e13d7b1d821c73a44f061f9805712074 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 6 Dec 2024 12:31:21 -0500 Subject: [PATCH 141/161] Updated Firefox to version 133.0-r0. --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index f32eeb5..2c19562 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,13 +13,13 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.20-v4.6.7 +FROM jlesage/baseimage-gui:alpine-3.21-v4.6.7 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=132.0.2-r0 +ARG FIREFOX_VERSION=133.0-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 9db4f58a1473a8b08fd104621832f4ffcf928449 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 7 Dec 2024 09:11:20 -0500 Subject: [PATCH 142/161] Use jlumbroso/free-disk-space to free space on the build node. --- .github/workflows/build-image.yml | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index e1a4542..4456421 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -23,23 +23,15 @@ jobs: steps: - name: Free disk space - run: | - # Free disk space. - echo "::group::Before" - df -h / - echo "::endgroup::" - echo "::group::Removing unneeded softwares and files..." - for DIR in /usr/local/lib/android /usr/share/dotnet /opt/ghc - do - if [ -d "$DIR" ]; then - echo "Removing $DIR..." - sudo rm -r "$DIR" - fi - done - echo "::endgroup::" - echo "::group::After" - df -h / - echo "::endgroup::" + uses: jlumbroso/free-disk-space@main + with: + tool-cache: true + android: true + dotnet: true + haskell: true + large-packages: true + docker-images: true + swap-storage: false - name: Prepare id: prep From 2169680cf23d963cc0b5eb55a357bd020082a828 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sat, 7 Dec 2024 12:15:16 -0500 Subject: [PATCH 143/161] Added changelog for version 24.12.1. --- appdefs.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index bbec493..e573f29 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,15 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 24.12.1 + date: 2024-12-07 + changes: + - 'Updated Firefox to version 133.0-r0.' + - 'Updated baseimage to version 4.6.7, which brings the following changes:' + - '2:Fixed web audio feature with URL path-based reverse proxy.' + - '2:Fixed TLS secure connection method for VNC that was preventing web access.' + - '2:Fixed CJK font installation.' + - '2:Rebuild against latest distro images to get security fixes.' - version: 24.11.1 date: 2024-11-11 changes: From b0a8d378a26b544bb5c78bd5c569c152e58140bf Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 19 Jan 2025 20:02:03 -0500 Subject: [PATCH 144/161] Updated Firefox to version 134.0-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 2c19562..04f5559 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.21-v4.6.7 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=133.0-r0 +ARG FIREFOX_VERSION=134.0-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 709b9716137438bd0d39ec8586aeed06e0f6c72d Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 20 Jan 2025 07:30:21 -0500 Subject: [PATCH 145/161] Updated baseimage to version 4.7.0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 04f5559..7aaf268 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.21-v4.6.7 +FROM jlesage/baseimage-gui:alpine-3.21-v4.7.0 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From 27ea8564291aa9e2266dffb1893802ded3a7b4c2 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Mon, 20 Jan 2025 07:44:53 -0500 Subject: [PATCH 146/161] Updated README. --- README.md | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 66d1df3..fde7911 100644 --- a/README.md +++ b/README.md @@ -100,31 +100,32 @@ of this parameter has the format `=`. | Variable | Description | Default | |----------------|----------------------------------------------|---------| -|`USER_ID`| ID of the user the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | -|`GROUP_ID`| ID of the group the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | +|`USER_ID`| ID of the user the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | +|`GROUP_ID`| ID of the group the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | |`SUP_GROUP_IDS`| Comma-separated list of supplementary group IDs of the application. | (no value) | -|`UMASK`| Mask that controls how permissions are set for newly created files and folders. The value of the mask is in octal notation. By default, the default umask value is `0022`, meaning that newly created files and folders are readable by everyone, but only writable by the owner. See the online umask calculator at http://wintelguy.com/umask-calc.pl. | `0022` | -|`LANG`| Set the [locale](https://en.wikipedia.org/wiki/Locale_(computer_software)), which defines the application's language, **if supported**. Format of the locale is `language[_territory][.codeset]`, where language is an [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), territory is an [ISO 3166 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes) and codeset is a character set, like `UTF-8`. For example, Australian English using the UTF-8 encoding is `en_AU.UTF-8`. | `en_US.UTF-8` | -|`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | +|`UMASK`| Mask that controls how permissions are set for newly created files and folders. The value of the mask is in octal notation. By default, the default umask value is `0022`, meaning that newly created files and folders are readable by everyone, but only writable by the owner. See the online umask calculator at http://wintelguy.com/umask-calc.pl. | `0022` | +|`LANG`| Set the [locale](https://en.wikipedia.org/wiki/Locale_(computer_software)), which defines the application's language, **if supported**. Format of the locale is `language[_territory][.codeset]`, where language is an [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), territory is an [ISO 3166 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes) and codeset is a character set, like `UTF-8`. For example, Australian English using the UTF-8 encoding is `en_AU.UTF-8`. | `en_US.UTF-8` | +|`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | |`KEEP_APP_RUNNING`| When set to `1`, the application will be automatically restarted when it crashes or terminates. | `0` | -|`APP_NICENESS`| Priority at which the application should run. A niceness value of -20 is the highest priority and 19 is the lowest priority. The default niceness value is 0. **NOTE**: A negative niceness (priority increase) requires additional permissions. In this case, the container should be run with the docker option `--cap-add=SYS_NICE`. | `0` | -|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. List of available packages can be found at https://pkgs.alpinelinux.org. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | +|`APP_NICENESS`| Priority at which the application should run. A niceness value of -20 is the highest priority and 19 is the lowest priority. The default niceness value is 0. **NOTE**: A negative niceness (priority increase) requires additional permissions. In this case, the container should be run with the docker option `--cap-add=SYS_NICE`. | `0` | +|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. List of available packages can be found at https://pkgs.alpinelinux.org. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | |`PACKAGES_MIRROR`| Mirror of the repository to use when installing packages. List of mirrors is available at https://mirrors.alpinelinux.org. | (no value) | |`CONTAINER_DEBUG`| Set to `1` to enable debug logging. | `0` | |`DISPLAY_WIDTH`| Width (in pixels) of the application's window. | `1920` | |`DISPLAY_HEIGHT`| Height (in pixels) of the application's window. | `1080` | |`DARK_MODE`| When set to `1`, dark mode is enabled for the application. | `0` | |`WEB_AUDIO`| When set to `1`, audio support is enabled, meaning that any audio produced by the application is played through the browser. Note that audio is not supported for VNC clients. | `0` | -|`WEB_AUTHENTICATION`| When set to `1`, the application' GUI is protected via a login page when accessed via a web browser. Access is allowed only when providing valid credentials. **NOTE**: This feature requires secure connection (`SECURE_CONNECTION` environment variable) to be enabled. | `0` | -|`WEB_AUTHENTICATION_USERNAME`| Optional username to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | -|`WEB_AUTHENTICATION_PASSWORD`| Optional password to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | -|`SECURE_CONNECTION`| When set to `1`, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the [Security](#security) section for more details. | `0` | -|`SECURE_CONNECTION_VNC_METHOD`| Method used to perform the secure VNC connection. Possible values are `SSL` or `TLS`. See the [Security](#security) section for more details. | `SSL` | -|`SECURE_CONNECTION_CERTS_CHECK_INTERVAL`| Interval, in seconds, at which the system verifies if web or VNC certificates have changed. When a change is detected, the affected services are automatically restarted. A value of `0` disables the check. | `60` | -|`WEB_LISTENING_PORT`| Port used by the web server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over HTTP/HTTPs. | `5800` | -|`VNC_LISTENING_PORT`| Port used by the VNC server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over VNC. | `5900` | -|`VNC_PASSWORD`| Password needed to connect to the application's GUI. See the [VNC Password](#vnc-password) section for more details. | (no value) | -|`ENABLE_CJK_FONT`| When set to `1`, open-source computer font `WenQuanYi Zen Hei` is installed. This font contains a large range of Chinese/Japanese/Korean characters. | `0` | +|`WEB_AUTHENTICATION`| When set to `1`, the application's GUI is protected via a login page when accessed via a web browser. Access is allowed only when providing valid credentials. **NOTE**: This feature requires secure connection (`SECURE_CONNECTION` environment variable) to be enabled. | `0` | +|`WEB_AUTHENTICATION_TOKEN_VALIDITY_TIME`| The lifetime of a token, in hours. A token is attributed to the user after a successful login. As long as the token is valid, user can access the application's GUI without having to log in again. Once the token expires, the login page is prompted again. | `24` | +|`WEB_AUTHENTICATION_USERNAME`| Optional username to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | +|`WEB_AUTHENTICATION_PASSWORD`| Optional password to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | +|`SECURE_CONNECTION`| When set to `1`, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the [Security](#security) section for more details. | `0` | +|`SECURE_CONNECTION_VNC_METHOD`| Method used to perform the secure VNC connection. Possible values are `SSL` or `TLS`. See the [Security](#security) section for more details. | `SSL` | +|`SECURE_CONNECTION_CERTS_CHECK_INTERVAL`| Interval, in seconds, at which the system verifies if web or VNC certificates have changed. When a change is detected, the affected services are automatically restarted. A value of `0` disables the check. | `60` | +|`WEB_LISTENING_PORT`| Port used by the web server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over HTTP/HTTPs. | `5800` | +|`VNC_LISTENING_PORT`| Port used by the VNC server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over VNC. | `5900` | +|`VNC_PASSWORD`| Password needed to connect to the application's GUI. See the [VNC Password](#vnc-password) section for more details. | (no value) | +|`ENABLE_CJK_FONT`| When set to `1`, open-source computer font `WenQuanYi Zen Hei` is installed. This font contains a large range of Chinese/Japanese/Korean characters. | `0` | |`FF_OPEN_URL`| The URL to open when Firefox starts. | (no value) | |`FF_KIOSK`| Set to `1` to enable kiosk mode. This mode launches Firefox in a very restricted and limited mode best suitable for public areas or customer-facing displays. | `0` | |`FF_CUSTOM_ARGS`| Custom argument(s) to pass when launching Firefox. | `0` | @@ -192,8 +193,8 @@ documentation for more details. | Port | Protocol | Mapping to host | Description | |------|----------|-----------------|-------------| -| 5800 | TCP | Optional | Port to access the application's GUI via the web interface. Mapping to the host is optional if access through the web interface is not wanted. For a container not using the default bridge network, the port can be changed with the `WEB_LISTENING_PORT` environment variable. | -| 5900 | TCP | Optional | Port to access the application's GUI via the VNC protocol. Mapping to the host is optional if access through the VNC protocol is not wanted. For a container not using the default bridge network, the port can be changed with the `VNC_LISTENING_PORT` environment variable. | +| 5800 | TCP | Optional | Port to access the application's GUI via the web interface. Mapping to the host is optional if access through the web interface is not wanted. For a container not using the default bridge network, the port can be changed with the `WEB_LISTENING_PORT` environment variable. | +| 5900 | TCP | Optional | Port to access the application's GUI via the VNC protocol. Mapping to the host is optional if access through the VNC protocol is not wanted. For a container not using the default bridge network, the port can be changed with the `VNC_LISTENING_PORT` environment variable. | ### Changing Parameters of a Running Container From cd8e96dc183273be36e2ac9360137270ac5d0771 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 7 Feb 2025 15:14:46 -0500 Subject: [PATCH 147/161] Also push the Docker image to the GitHub Container Registry. --- .github/workflows/build-image.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 4456421..d5b92a2 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -62,6 +62,7 @@ jobs: if [[ $GITHUB_REF =~ refs/tags/* ]]; then TAGS="$TAGS,${{ env.DOCKER_IMAGE_NAME }}:latest" fi + TAGS="$TAGS,$(echo $TAGS | tr ',' '\n' | sed 's|^|ghcr.io/|' | tr '\n' ',')" # Determine the release type. if [[ $GITHUB_REF =~ refs/tags/* ]]; then IS_RELEASE=yes @@ -106,6 +107,14 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} + - name: Login to GitHub Container Registry + if: ${{ steps.prep.outputs.is_release == 'yes' }} + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push uses: docker/build-push-action@v6 with: From c34a1d7dba125ede66da4a8277d01a04bb5b8369 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Fri, 7 Feb 2025 16:44:04 -0500 Subject: [PATCH 148/161] Updated baseimage to version 4.7.1. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7aaf268..eb32696 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN gcc -static -o membarrier_check membarrier_check.c RUN strip membarrier_check # Pull base image. -FROM jlesage/baseimage-gui:alpine-3.21-v4.7.0 +FROM jlesage/baseimage-gui:alpine-3.21-v4.7.1 # Docker image version is provided via build arg. ARG DOCKER_IMAGE_VERSION= From b53e0f92f4c4b62f431acc0d2beed12d34fea225 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 9 Feb 2025 10:18:06 -0500 Subject: [PATCH 149/161] Update to the README. --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index fde7911..4c29a77 100644 --- a/README.md +++ b/README.md @@ -534,6 +534,15 @@ server { proxy_set_header Connection $connection_upgrade; proxy_read_timeout 86400; } + + # Needed when audio support is enabled. + location /websockify-audio { + proxy_pass http://docker-firefox; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + proxy_read_timeout 86400; + } } ``` From 2ff9c7f7bc3ddfcfc8de36c4c016af2856b60f75 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 9 Feb 2025 13:44:07 -0500 Subject: [PATCH 150/161] Added changelog for version 25.02.1. --- appdefs.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index e573f29..6c5c976 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,15 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 25.02.1 + date: 2025-02-09 + changes: + - 'Updated Firefox to version 134.0-r0.' + - 'Updated baseimage to version 4.7.1, which brings the following changes (since last used version):' + - '2:Added environment variable that allows configuring the web authentication token lifetime.' + - '2:Fixed compatibility issues that were introduced with support of GTK4 applications.' + - '2:Increased the default service ready timeout from 5 seconds to 10 seconds and allow runtime adjustment via environment variable.' + - '2:Rebuild against latest distro images to get security fixes.' - version: 24.12.1 date: 2024-12-07 changes: From 52875c965b4e501b92259ad4d3f6698519f6c580 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 12 Feb 2025 20:16:22 -0500 Subject: [PATCH 151/161] Updated license copyright year. --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 909a57c..2739c00 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Jocelyn Le Sage +Copyright (c) 2025 Jocelyn Le Sage Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 677fce75e91a56dbefc61d683003da8f9af06098 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 16 Feb 2025 12:14:57 -0500 Subject: [PATCH 152/161] Updated Firefox to version 135.0-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index eb32696..e7eeced 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.21-v4.7.1 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=134.0-r0 +ARG FIREFOX_VERSION=135.0-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From a8076d0cf4994595dd4d3f42bbf6541f8b7393d2 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 16 Feb 2025 20:04:23 -0500 Subject: [PATCH 153/161] Added changelog for version 25.02.2. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 6c5c976..b030c7c 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 25.02.2 + date: 2025-02-16 + changes: + - 'Updated Firefox to version 135.0-r0.' - version: 25.02.1 date: 2025-02-09 changes: From 90d9da196c12a875fabe9e7d654e718dc5b0355c Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 19 Mar 2025 21:14:32 -0400 Subject: [PATCH 154/161] Updated Firefox to version 136.0-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e7eeced..f185d51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.21-v4.7.1 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=135.0-r0 +ARG FIREFOX_VERSION=136.0-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 9e00c0a5579ceb09445b633e2e5e92d64b94016c Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Wed, 19 Mar 2025 21:26:42 -0400 Subject: [PATCH 155/161] Added changelog for version 25.03.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index b030c7c..0c52b50 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 25.03.1 + date: 2025-03-19 + changes: + - 'Updated Firefox to version 136.0-r0.' - version: 25.02.2 date: 2025-02-16 changes: From 2bfec8fafbe8b670f44b90619719d13b98bf0d18 Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 6 Apr 2025 11:52:48 -0400 Subject: [PATCH 156/161] Updated Firefox to version 136.0.4-r0. --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f185d51..d33dc14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,7 @@ FROM jlesage/baseimage-gui:alpine-3.21-v4.7.1 ARG DOCKER_IMAGE_VERSION= # Define software versions. -ARG FIREFOX_VERSION=136.0-r0 +ARG FIREFOX_VERSION=136.0.4-r0 #ARG PROFILE_CLEANER_VERSION=2.36 # Define software download URLs. From 26bcee0b9fbbe5cf200599d800f47e64c7884afd Mon Sep 17 00:00:00 2001 From: Jocelyn Le Sage Date: Sun, 6 Apr 2025 12:52:24 -0400 Subject: [PATCH 157/161] Added changelog for version 25.04.1. --- appdefs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/appdefs.yml b/appdefs.yml index 0c52b50..51bc3c0 100644 --- a/appdefs.yml +++ b/appdefs.yml @@ -102,6 +102,10 @@ app: for more details. - Make sure the kernel of your Linux distribution is up-to-date. changelog: + - version: 25.04.1 + date: 2025-04-06 + changes: + - 'Updated Firefox to version 136.0.4-r0.' - version: 25.03.1 date: 2025-03-19 changes: From e9df645b49152a146191fa04c64374783e3caf14 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Sun, 18 May 2025 00:36:19 -0400 Subject: [PATCH 158/161] Update metadata --- .github/FUNDING.yml | 12 - .github/ISSUE_TEMPLATE/bug-report.yml | 93 --- .github/ISSUE_TEMPLATE/config.yml | 8 - .github/ISSUE_TEMPLATE/feature-request.yml | 16 - .github/workflows/build-image.yml | 160 ----- DOCKERHUB.md | 56 -- README.md | 693 +-------------------- appdefs.yml | 493 --------------- 8 files changed, 2 insertions(+), 1529 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature-request.yml delete mode 100644 .github/workflows/build-image.yml delete mode 100644 DOCKERHUB.md delete mode 100644 appdefs.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 653ccc4..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# These are supported funding model platforms - -github: jlesage -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username -ko_fi: # Replace with a single Ko-fi username -tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel -community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry -liberapay: # Replace with a single Liberapay username -issuehunt: # Replace with a single IssueHunt username -otechie: # Replace with a single Otechie username -custom: ["https://paypal.me/JocelynLeSage", "https://www.tesla.com/referral/jocelyn4590"] diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml deleted file mode 100644 index 980fcd5..0000000 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: Bug report -description: File a bug report. -title: "[Bug] Provide a short description of the bug here" -labels: ["bug"] -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to fill out this bug report! - - type: textarea - attributes: - label: Current Behavior - description: A concise description of what you're experiencing. - validations: - required: true - - type: textarea - attributes: - label: Expected Behavior - description: A concise description of what you expected to happen. - validations: - required: false - - type: textarea - attributes: - label: Steps To Reproduce - description: Steps to reproduce the behavior. - validations: - required: false - - type: textarea - attributes: - label: Environment - description: | - Provide details about the host running the container. - Examples: - - Operating system (e.g. Ubuntu, Windows, TrueNAS, openmediavault, unRAID, etc). - - Version of the operating system. - - CPU architecture (x86-64, arm, arm64, etc). - - Model of the device, if applicable (e.g. Raspberry Pi 4B, Synology DS418, QNAP TS-364, etc). - - The Docker version (output of `docker version`). - - Anything else specific to your environment. Examples: - - Network share (NFS, CIFS) mapped to the container. - - Docker running in LXC container. - - etc. - - If applicable, how the UI provided by the container is access: - - Browser (Chrome, Firefox, Edge, etc). - - Version of the browser. - - OS of the browser. - - Is the container accessed through a reverse proxy. - - etc. - value: | - - OS: - - OS version: - - CPU: - - Docker version: - - Device model: - - Browser/OS: - validations: - required: false - - type: textarea - attributes: - label: Container creation - description: | - How did you create the container ? - Examples: - - The `docker run` command used. - - The compose file used. - - Screenshots of the management tool UI (e.g. Portainer, unRAID, etc) showing container settings. - validations: - required: true - - type: textarea - attributes: - label: Container log - description: Please copy/paste the output of `docker logs `. - render: text - validations: - required: true - - type: textarea - attributes: - label: Container inspect - description: | - If the container is running, please provide the output of `docker inspect `. - **Attention**: If you defined passwords, secrets or any sensitive information via environment variables, make sure to remove them from the output. - render: text - validations: - required: false - - type: textarea - attributes: - label: Anything else? - description: | - Anything that will give more context about the issue you are encountering. - - Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. - validations: - required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index 875eb15..0000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask a question, discuss - url: https://github.com/jlesage/docker-firefox/discussions - about: Get help using this Docker container. - - name: Documentation - url: https://github.com/jlesage/docker-firefox#readme - about: Documentation about this Docker container. diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml deleted file mode 100644 index 527b3f0..0000000 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Feature request -description: Suggest an idea for this project. -title: "[Feature request] Provide a short description of the feature here" -labels: ["enhancement"] -body: - - type: markdown - attributes: - value: | - Thank you for suggesting an idea to make this project better. - - type: textarea - attributes: - label: Idea - description: | - Please describe the desired behavior, pitch your idea, or suggest improvements. - validations: - required: true diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml deleted file mode 100644 index d5b92a2..0000000 --- a/.github/workflows/build-image.yml +++ /dev/null @@ -1,160 +0,0 @@ -name: Docker image CI/CD - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - DOCKER_IMAGE_NAME: jlesage/firefox - PLATFORMS: linux/amd64,linux/386,linux/arm/v7,linux/arm64/v8 - -on: - push: - branches: '*' - tags: - - v[0-9][0-9].[0-9][0-9].[0-9]+ - - v[0-9][0-9].[0-9][0-9].[0-9]+-pre.[0-9]+ - pull_request: - -jobs: - build: - name: Build image - runs-on: ubuntu-20.04 - - steps: - - name: Free disk space - uses: jlumbroso/free-disk-space@main - with: - tool-cache: true - android: true - dotnet: true - haskell: true - large-packages: true - docker-images: true - swap-storage: false - - - name: Prepare - id: prep - run: | - # Determine the Docker container version. - VERSION=unknown - if [[ $GITHUB_REF =~ refs/tags/* ]]; then - # Git tag pushed: use tag as the version. - VERSION=${GITHUB_REF#refs/tags/} - elif [[ $GITHUB_REF =~ refs/heads/* ]]; then - # Git commit pushed: use the commit SHA as the version. - VERSION=${GITHUB_SHA::8} - elif [[ $GITHUB_REF =~ refs/pull/* ]]; then - # Pull request: use PR number as the version. - VERSION=pr-${{ github.event.number }} - else - echo "::error::Unexpected GITHUB_REF: $GITHUB_REF" - exit 1 - fi - # Determine the version to put in container label. - LABEL_VERSION=${VERSION} - if [[ $GITHUB_REF =~ refs/tags/* ]]; then - # Do not include the starting 'v' of the version. - LABEL_VERSION=${VERSION:1} - fi - # Determine the Docker container tags. - TAGS="${{ env.DOCKER_IMAGE_NAME }}:${VERSION}" - if [[ $GITHUB_REF =~ refs/tags/* ]]; then - TAGS="$TAGS,${{ env.DOCKER_IMAGE_NAME }}:latest" - fi - TAGS="$TAGS,$(echo $TAGS | tr ',' '\n' | sed 's|^|ghcr.io/|' | tr '\n' ',')" - # Determine the release type. - if [[ $GITHUB_REF =~ refs/tags/* ]]; then - IS_RELEASE=yes - if [[ $GITHUB_REF =~ -pre\.[0-9]+ ]]; then - RELEASE_TYPE="pre" - else - RELEASE_TYPE="standard" - fi - else - IS_RELEASE=no - RELEASE_TYPE="n/a" - fi - # Print results. - echo "::group::Results" - echo "Github reference: $GITHUB_REF" - echo "Release: $IS_RELEASE" - echo "Release type: $RELEASE_TYPE" - echo "Docker container version: $VERSION" - echo "Docker container version label: $LABEL_VERSION" - echo "Docker container tag(s): $TAGS" - echo "::endgroup::" - # Export outputs. - echo "is_release=${IS_RELEASE}" >> $GITHUB_OUTPUT - echo "release_type=${RELEASE_TYPE}" >> $GITHUB_OUTPUT - echo "version=${VERSION}" >> $GITHUB_OUTPUT - echo "label_version=${LABEL_VERSION}" >> $GITHUB_OUTPUT - echo "tags=${TAGS}" >> $GITHUB_OUTPUT - #echo "build_date=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT - - - name: Setup QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: arm,arm64,ppc64le,mips64,s390x - - - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to DockerHub - if: ${{ steps.prep.outputs.is_release == 'yes' }} - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - - - name: Login to GitHub Container Registry - if: ${{ steps.prep.outputs.is_release == 'yes' }} - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v6 - with: - push: ${{ steps.prep.outputs.is_release == 'yes' }} - provenance: false - platforms: ${{ env.PLATFORMS }} - tags: ${{ steps.prep.outputs.tags }} - build-args: | - DOCKER_IMAGE_VERSION=${{ steps.prep.outputs.label_version }} - cache-from: type=gha,scope=${{ env.DOCKER_IMAGE_NAME }} - cache-to: type=gha,mode=max,scope=${{ env.DOCKER_IMAGE_NAME }} - - - name: Inspect - if: ${{ steps.prep.outputs.is_release == 'yes' }} - run: | - docker buildx imagetools inspect ${{ env.DOCKER_IMAGE_NAME }}:${{ steps.prep.outputs.version }} - - - name: Checkout - uses: actions/checkout@v4 - if: ${{ steps.prep.outputs.release_type == 'standard' }} - - - name: Dockerhub description - if: ${{ steps.prep.outputs.release_type == 'standard' }} - uses: peter-evans/dockerhub-description@v4 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_PASSWORD }} - repository: ${{ env.DOCKER_IMAGE_NAME }} - readme-filepath: DOCKERHUB.md - - notification: - name: Notification - needs: [ build ] - runs-on: ubuntu-20.04 - if: ${{ always() && github.event_name != 'pull_request' }} - - steps: - - name: Pushover notification - uses: desiderati/github-action-pushover@v1 - with: - job-status: ${{ needs.build.result }} - pushover-api-token: ${{ secrets.PUSHOVER_API_TOKEN }} - pushover-user-key: ${{ secrets.PUSHOVER_USER_KEY }} diff --git a/DOCKERHUB.md b/DOCKERHUB.md deleted file mode 100644 index aca92c5..0000000 --- a/DOCKERHUB.md +++ /dev/null @@ -1,56 +0,0 @@ -# Docker container for Firefox -[![Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg?logo=github&style=for-the-badge)](https://github.com/jlesage/docker-firefox/releases/latest) -[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest?logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox/tags) -[![Docker Pulls](https://img.shields.io/docker/pulls/jlesage/firefox?label=Pulls&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) -[![Docker Stars](https://img.shields.io/docker/stars/jlesage/firefox?label=Stars&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) -[![Build Status](https://img.shields.io/github/actions/workflow/status/jlesage/docker-firefox/build-image.yml?logo=github&branch=master&style=for-the-badge)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) -[![Source](https://img.shields.io/badge/Source-GitHub-blue?logo=github&style=for-the-badge)](https://github.com/jlesage/docker-firefox) -[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?style=for-the-badge)](https://paypal.me/JocelynLeSage) - -This is a Docker container for [Firefox](https://www.mozilla.org/firefox/). - -The GUI of the application is accessed through a modern web browser (no -installation or configuration needed on the client side) or via any VNC client. - ---- - -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/firefox/) - -Mozilla Firefox is a free and open-source web browser developed by Mozilla -Foundation and its subsidiary, Mozilla Corporation. - ---- - -## Quick Start - -**NOTE**: - The Docker command provided in this quick start is given as an example - and parameters should be adjusted to your need. - -Launch the Firefox docker container with the following command: -```shell -docker run -d \ - --name=firefox \ - -p 5800:5800 \ - -v /docker/appdata/firefox:/config:rw \ - jlesage/firefox -``` - -Where: - - - `/docker/appdata/firefox`: This is where the application stores its configuration, states, log and any files needing persistency. - -Browse to `http://your-host-ip:5800` to access the Firefox GUI. - -## Documentation - -Full documentation is available at https://github.com/jlesage/docker-firefox. - -## Support or Contact - -Having troubles with the container or have questions? Please -[create a new issue]. - -For other great Dockerized applications, see https://jlesage.github.io/docker-apps. - -[create a new issue]: https://github.com/jlesage/docker-firefox/issues diff --git a/README.md b/README.md index 4c29a77..a9633bb 100644 --- a/README.md +++ b/README.md @@ -1,692 +1,3 @@ -# Docker container for Firefox -[![Release](https://img.shields.io/github/release/jlesage/docker-firefox.svg?logo=github&style=for-the-badge)](https://github.com/jlesage/docker-firefox/releases/latest) -[![Docker Image Size](https://img.shields.io/docker/image-size/jlesage/firefox/latest?logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox/tags) -[![Docker Pulls](https://img.shields.io/docker/pulls/jlesage/firefox?label=Pulls&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) -[![Docker Stars](https://img.shields.io/docker/stars/jlesage/firefox?label=Stars&logo=docker&style=for-the-badge)](https://hub.docker.com/r/jlesage/firefox) -[![Build Status](https://img.shields.io/github/actions/workflow/status/jlesage/docker-firefox/build-image.yml?logo=github&branch=master&style=for-the-badge)](https://github.com/jlesage/docker-firefox/actions/workflows/build-image.yml) -[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg?style=for-the-badge)](https://paypal.me/JocelynLeSage) +# Docker container for Chromium -This project implements a Docker container for [Firefox](https://www.mozilla.org/firefox/). - -The GUI of the application is accessed through a modern web browser (no -installation or configuration needed on the client side) or via any VNC client. - ---- - -[![Firefox logo](https://images.weserv.nl/?url=raw.githubusercontent.com/jlesage/docker-templates/master/jlesage/images/firefox-icon.png&w=110)](https://www.mozilla.org/firefox/)[![Firefox](https://images.placeholders.dev/?width=224&height=110&fontFamily=monospace&fontWeight=400&fontSize=52&text=Firefox&bgColor=rgba(0,0,0,0.0)&textColor=rgba(121,121,121,1))](https://www.mozilla.org/firefox/) - -Mozilla Firefox is a free and open-source web browser developed by Mozilla -Foundation and its subsidiary, Mozilla Corporation. - ---- - -## Table of Content - - * [Quick Start](#quick-start) - * [Usage](#usage) - * [Environment Variables](#environment-variables) - * [Deployment Considerations](#deployment-considerations) - * [Data Volumes](#data-volumes) - * [Ports](#ports) - * [Changing Parameters of a Running Container](#changing-parameters-of-a-running-container) - * [Docker Compose File](#docker-compose-file) - * [Docker Image Versioning](#docker-image-versioning) - * [Docker Image Update](#docker-image-update) - * [Synology](#synology) - * [unRAID](#unraid) - * [User/Group IDs](#usergroup-ids) - * [Accessing the GUI](#accessing-the-gui) - * [Security](#security) - * [SSVNC](#ssvnc) - * [Certificates](#certificates) - * [VNC Password](#vnc-password) - * [Web Authentication](#web-authentication) - * [Configuring Users Credentials](#configuring-users-credentials) - * [Reverse Proxy](#reverse-proxy) - * [Routing Based on Hostname](#routing-based-on-hostname) - * [Routing Based on URL Path](#routing-based-on-url-path) - * [Shell Access](#shell-access) - * [Allowing the membarrier System Call](#allowing-the-membarrier-system-call) - * [Sound Support](#sound-support) - * [Setting Firefox Preferences Via Environment Variables](#setting-firefox-preferences-via-environment-variables) - * [Troubleshooting](#troubleshooting) - * [Crashes](#crashes) - * [Support or Contact](#support-or-contact) - -## Quick Start - -> [!IMPORTANT] -> The Docker command provided in this quick start is given as an example and -> parameters should be adjusted to your need. - -Launch the Firefox docker container with the following command: -```shell -docker run -d \ - --name=firefox \ - -p 5800:5800 \ - -v /docker/appdata/firefox:/config:rw \ - jlesage/firefox -``` - -Where: - - - `/docker/appdata/firefox`: This is where the application stores its configuration, states, log and any files needing persistency. - -Browse to `http://your-host-ip:5800` to access the Firefox GUI. - -## Usage - -```shell -docker run [-d] \ - --name=firefox \ - [-e =]... \ - [-v :[:PERMISSIONS]]... \ - [-p :]... \ - jlesage/firefox -``` - -| Parameter | Description | -|-----------|-------------| -| -d | Run the container in the background. If not set, the container runs in the foreground. | -| -e | Pass an environment variable to the container. See the [Environment Variables](#environment-variables) section for more details. | -| -v | Set a volume mapping (allows to share a folder/file between the host and the container). See the [Data Volumes](#data-volumes) section for more details. | -| -p | Set a network port mapping (exposes an internal container port to the host). See the [Ports](#ports) section for more details. | - -### Environment Variables - -To customize some properties of the container, the following environment -variables can be passed via the `-e` parameter (one for each variable). Value -of this parameter has the format `=`. - -| Variable | Description | Default | -|----------------|----------------------------------------------|---------| -|`USER_ID`| ID of the user the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | -|`GROUP_ID`| ID of the group the application runs as. See [User/Group IDs](#usergroup-ids) to better understand when this should be set. | `1000` | -|`SUP_GROUP_IDS`| Comma-separated list of supplementary group IDs of the application. | (no value) | -|`UMASK`| Mask that controls how permissions are set for newly created files and folders. The value of the mask is in octal notation. By default, the default umask value is `0022`, meaning that newly created files and folders are readable by everyone, but only writable by the owner. See the online umask calculator at http://wintelguy.com/umask-calc.pl. | `0022` | -|`LANG`| Set the [locale](https://en.wikipedia.org/wiki/Locale_(computer_software)), which defines the application's language, **if supported**. Format of the locale is `language[_territory][.codeset]`, where language is an [ISO 639 language code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes), territory is an [ISO 3166 country code](https://en.wikipedia.org/wiki/ISO_3166-1#Current_codes) and codeset is a character set, like `UTF-8`. For example, Australian English using the UTF-8 encoding is `en_AU.UTF-8`. | `en_US.UTF-8` | -|`TZ`| [TimeZone](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) used by the container. Timezone can also be set by mapping `/etc/localtime` between the host and the container. | `Etc/UTC` | -|`KEEP_APP_RUNNING`| When set to `1`, the application will be automatically restarted when it crashes or terminates. | `0` | -|`APP_NICENESS`| Priority at which the application should run. A niceness value of -20 is the highest priority and 19 is the lowest priority. The default niceness value is 0. **NOTE**: A negative niceness (priority increase) requires additional permissions. In this case, the container should be run with the docker option `--cap-add=SYS_NICE`. | `0` | -|`INSTALL_PACKAGES`| Space-separated list of packages to install during the startup of the container. List of available packages can be found at https://pkgs.alpinelinux.org. **ATTENTION**: Container functionality can be affected when installing a package that overrides existing container files (e.g. binaries). | (no value) | -|`PACKAGES_MIRROR`| Mirror of the repository to use when installing packages. List of mirrors is available at https://mirrors.alpinelinux.org. | (no value) | -|`CONTAINER_DEBUG`| Set to `1` to enable debug logging. | `0` | -|`DISPLAY_WIDTH`| Width (in pixels) of the application's window. | `1920` | -|`DISPLAY_HEIGHT`| Height (in pixels) of the application's window. | `1080` | -|`DARK_MODE`| When set to `1`, dark mode is enabled for the application. | `0` | -|`WEB_AUDIO`| When set to `1`, audio support is enabled, meaning that any audio produced by the application is played through the browser. Note that audio is not supported for VNC clients. | `0` | -|`WEB_AUTHENTICATION`| When set to `1`, the application's GUI is protected via a login page when accessed via a web browser. Access is allowed only when providing valid credentials. **NOTE**: This feature requires secure connection (`SECURE_CONNECTION` environment variable) to be enabled. | `0` | -|`WEB_AUTHENTICATION_TOKEN_VALIDITY_TIME`| The lifetime of a token, in hours. A token is attributed to the user after a successful login. As long as the token is valid, user can access the application's GUI without having to log in again. Once the token expires, the login page is prompted again. | `24` | -|`WEB_AUTHENTICATION_USERNAME`| Optional username to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | -|`WEB_AUTHENTICATION_PASSWORD`| Optional password to configure for the web authentication. This is a quick and easy way to configure credentials for a single user. To configure credentials in a more secure way, or to add more users, see the [Web Authentication](#web-authentication) section. | (no value) | -|`SECURE_CONNECTION`| When set to `1`, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the [Security](#security) section for more details. | `0` | -|`SECURE_CONNECTION_VNC_METHOD`| Method used to perform the secure VNC connection. Possible values are `SSL` or `TLS`. See the [Security](#security) section for more details. | `SSL` | -|`SECURE_CONNECTION_CERTS_CHECK_INTERVAL`| Interval, in seconds, at which the system verifies if web or VNC certificates have changed. When a change is detected, the affected services are automatically restarted. A value of `0` disables the check. | `60` | -|`WEB_LISTENING_PORT`| Port used by the web server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over HTTP/HTTPs. | `5800` | -|`VNC_LISTENING_PORT`| Port used by the VNC server to serve the UI of the application. This port is used internally by the container and it is usually not required to be changed. By default, a container is created with the default bridge network, meaning that, to be accessible, each internal container port must be mapped to an external port (using the `-p` or `--publish` argument). However, if the container is created with another network type, changing the port used by the container might be useful to prevent conflict with other services/containers. **NOTE**: a value of `-1` disables listening, meaning that the application's UI won't be accessible over VNC. | `5900` | -|`VNC_PASSWORD`| Password needed to connect to the application's GUI. See the [VNC Password](#vnc-password) section for more details. | (no value) | -|`ENABLE_CJK_FONT`| When set to `1`, open-source computer font `WenQuanYi Zen Hei` is installed. This font contains a large range of Chinese/Japanese/Korean characters. | `0` | -|`FF_OPEN_URL`| The URL to open when Firefox starts. | (no value) | -|`FF_KIOSK`| Set to `1` to enable kiosk mode. This mode launches Firefox in a very restricted and limited mode best suitable for public areas or customer-facing displays. | `0` | -|`FF_CUSTOM_ARGS`| Custom argument(s) to pass when launching Firefox. | `0` | - -#### Deployment Considerations - -Many tools used to manage Docker containers extract environment variables -defined by the Docker image and use them to create/deploy the container. For -example, this is done by: - - The Docker application on Synology NAS - - The Container Station on QNAP NAS - - Portainer - - etc. - -While this can be useful for the user to adjust the value of environment -variables to fit its needs, it can also be confusing and dangerous to keep all -of them. - -A good practice is to set/keep only the variables that are needed for the -container to behave as desired in a specific setup. If the value of variable is -kept to its default value, it means that it can be removed. Keep in mind that -all variables are optional, meaning that none of them is required for the -container to start. - -Removing environment variables that are not needed provides some advantages: - - - Prevents keeping variables that are no longer used by the container. Over - time, with image updates, some variables might be removed. - - Allows the Docker image to change/fix a default value. Again, with image - updates, the default value of a variable might be changed to fix an issue, - or to better support a new feature. - - Prevents changes to a variable that might affect the correct function of - the container. Some undocumented variables, like `PATH` or `ENV`, are - required to be exposed, but are not meant to be changed by users. However, - container management tools still show these variables to users. - - There is a bug with the Container Station on QNAP and the Docker application - on Synology, where an environment variable without value might not be - allowed. This behavior is wrong: it's absolutely fine to have a variable - without value. In fact, this container does have variables without value by - default. Thus, removing unneeded variables is a good way to prevent - deployment issue on these devices. - -### Data Volumes - -The following table describes data volumes used by the container. The mappings -are set via the `-v` parameter. Each mapping is specified with the following -format: `:[:PERMISSIONS]`. - -| Container path | Permissions | Description | -|-----------------|-------------|-------------| -|`/config`| rw | This is where the application stores its configuration, states, log and any files needing persistency. | - -### Ports - -Here is the list of ports used by the container. - -When using the default bridge network, ports can be mapped to the host via the -`-p` parameter (one per port mapping). Each mapping is defined with the -following format: `:`. The port number used inside -the container might not be changeable, but you are free to use any port on the -host side. - -See the [Docker Container Networking](https://docs.docker.com/config/containers/container-networking) -documentation for more details. - -| Port | Protocol | Mapping to host | Description | -|------|----------|-----------------|-------------| -| 5800 | TCP | Optional | Port to access the application's GUI via the web interface. Mapping to the host is optional if access through the web interface is not wanted. For a container not using the default bridge network, the port can be changed with the `WEB_LISTENING_PORT` environment variable. | -| 5900 | TCP | Optional | Port to access the application's GUI via the VNC protocol. Mapping to the host is optional if access through the VNC protocol is not wanted. For a container not using the default bridge network, the port can be changed with the `VNC_LISTENING_PORT` environment variable. | - -### Changing Parameters of a Running Container - -As can be seen, environment variables, volume and port mappings are all specified -while creating the container. - -The following steps describe the method used to add, remove or update -parameter(s) of an existing container. The general idea is to destroy and -re-create the container: - - 1. Stop the container (if it is running): -```shell -docker stop firefox -``` - - 2. Remove the container: -```shell -docker rm firefox -``` - - 3. Create/start the container using the `docker run` command, by adjusting - parameters as needed. - -> [!NOTE] -> Since all application's data is saved under the `/config` container folder, -> destroying and re-creating a container is not a problem: nothing is lost and -> the application comes back with the same state (as long as the mapping of the -> `/config` folder remains the same). - -## Docker Compose File - -Here is an example of a `docker-compose.yml` file that can be used with -[Docker Compose](https://docs.docker.com/compose/overview/). - -Make sure to adjust according to your needs. Note that only mandatory network -ports are part of the example. - -```yaml -version: '3' -services: - firefox: - image: jlesage/firefox - ports: - - "5800:5800" - volumes: - - "/docker/appdata/firefox:/config:rw" -``` - -## Docker Image Versioning - -Each release of a Docker image is versioned. Prior to october 2022, the -[semantic versioning](https://semver.org) was used as the versioning scheme. - -Since then, versioning scheme changed to -[calendar versioning](https://calver.org). The format used is `YY.MM.SEQUENCE`, -where: - - `YY` is the zero-padded year (relative to year 2000). - - `MM` is the zero-padded month. - - `SEQUENCE` is the incremental release number within the month (first release - is 1, second is 2, etc). - -## Docker Image Update - -Because features are added, issues are fixed, or simply because a new version -of the containerized application is integrated, the Docker image is regularly -updated. Different methods can be used to update the Docker image. - -The system used to run the container may have a built-in way to update -containers. If so, this could be your primary way to update Docker images. - -An other way is to have the image be automatically updated with [Watchtower]. -Watchtower is a container-based solution for automating Docker image updates. -This is a "set and forget" type of solution: once a new image is available, -Watchtower will seamlessly perform the necessary steps to update the container. - -Finally, the Docker image can be manually updated with these steps: - - 1. Fetch the latest image: -```shell -docker pull jlesage/firefox -``` - - 2. Stop the container: -```shell -docker stop firefox -``` - - 3. Remove the container: -```shell -docker rm firefox -``` - - 4. Create and start the container using the `docker run` command, with the -the same parameters that were used when it was deployed initially. - -[Watchtower]: https://github.com/containrrr/watchtower - -### Synology - -For owners of a Synology NAS, the following steps can be used to update a -container image. - - 1. Open the *Docker* application. - 2. Click on *Registry* in the left pane. - 3. In the search bar, type the name of the container (`jlesage/firefox`). - 4. Select the image, click *Download* and then choose the `latest` tag. - 5. Wait for the download to complete. A notification will appear once done. - 6. Click on *Container* in the left pane. - 7. Select your Firefox container. - 8. Stop it by clicking *Action*->*Stop*. - 9. Clear the container by clicking *Action*->*Reset* (or *Action*->*Clear* if - you don't have the latest *Docker* application). This removes the - container while keeping its configuration. - 10. Start the container again by clicking *Action*->*Start*. **NOTE**: The - container may temporarily disappear from the list while it is re-created. - -### unRAID - -For unRAID, a container image can be updated by following these steps: - - 1. Select the *Docker* tab. - 2. Click the *Check for Updates* button at the bottom of the page. - 3. Click the *update ready* link of the container to be updated. - -## User/Group IDs - -When using data volumes (`-v` flags), permissions issues can occur between the -host and the container. For example, the user within the container may not -exist on the host. This could prevent the host from properly accessing files -and folders on the shared volume. - -To avoid any problem, you can specify the user the application should run as. - -This is done by passing the user ID and group ID to the container via the -`USER_ID` and `GROUP_ID` environment variables. - -To find the right IDs to use, issue the following command on the host, with the -user owning the data volume on the host: - - id - -Which gives an output like this one: -```text -uid=1000(myuser) gid=1000(myuser) groups=1000(myuser),4(adm),24(cdrom),27(sudo),46(plugdev),113(lpadmin) -``` - -The value of `uid` (user ID) and `gid` (group ID) are the ones that you should -be given the container. - -## Accessing the GUI - -Assuming that container's ports are mapped to the same host's ports, the -graphical interface of the application can be accessed via: - - * A web browser: - -```text -http://:5800 -``` - - * Any VNC client: - -```text -:5900 -``` - -## Security - -By default, access to the application's GUI is done over an unencrypted -connection (HTTP or VNC). - -Secure connection can be enabled via the `SECURE_CONNECTION` environment -variable. See the [Environment Variables](#environment-variables) section for -more details on how to set an environment variable. - -When enabled, application's GUI is performed over an HTTPs connection when -accessed with a browser. All HTTP accesses are automatically redirected to -HTTPs. - -When using a VNC client, the VNC connection is performed over SSL. Note that -few VNC clients support this method. [SSVNC] is one of them. - -[SSVNC]: http://www.karlrunge.com/x11vnc/ssvnc.html - -### SSVNC - -[SSVNC] is a VNC viewer that adds encryption security to VNC connections. - -While the Linux version of [SSVNC] works well, the Windows version has some -issues. At the time of writing, the latest version `1.0.30` is not functional, -as a connection fails with the following error: -```text -ReadExact: Socket error while reading -``` -However, for your convenience, an unofficial and working version is provided -here: - -https://github.com/jlesage/docker-baseimage-gui/raw/master/tools/ssvnc_windows_only-1.0.30-r1.zip - -The only difference with the official package is that the bundled version of -`stunnel` has been upgraded to version `5.49`, which fixes the connection -problems. - -### Certificates - -Here are the certificate files needed by the container. By default, when they -are missing, self-signed certificates are generated and used. All files have -PEM encoded, x509 certificates. - -| Container Path | Purpose | Content | -|---------------------------------|----------------------------|---------| -|`/config/certs/vnc-server.pem` |VNC connection encryption. |VNC server's private key and certificate, bundled with any root and intermediate certificates.| -|`/config/certs/web-privkey.pem` |HTTPs connection encryption.|Web server's private key.| -|`/config/certs/web-fullchain.pem`|HTTPs connection encryption.|Web server's certificate, bundled with any root and intermediate certificates.| - -> [!TIP] -> To prevent any certificate validity warnings/errors from the browser or VNC -> client, make sure to supply your own valid certificates. - -> [!NOTE] -> Certificate files are monitored and relevant daemons are automatically -> restarted when changes are detected. - -### VNC Password - -To restrict access to your application, a password can be specified. This can -be done via two methods: - * By using the `VNC_PASSWORD` environment variable. - * By creating a `.vncpass_clear` file at the root of the `/config` volume. - This file should contain the password in clear-text. During the container - startup, content of the file is obfuscated and moved to `.vncpass`. - -The level of security provided by the VNC password depends on two things: - * The type of communication channel (encrypted/unencrypted). - * How secure the access to the host is. - -When using a VNC password, it is highly desirable to enable the secure -connection to prevent sending the password in clear over an unencrypted channel. - -> [!CAUTION] -> Password is limited to 8 characters. This limitation comes from the Remote -> Framebuffer Protocol [RFC](https://tools.ietf.org/html/rfc6143) (see section -> [7.2.2](https://tools.ietf.org/html/rfc6143#section-7.2.2)). Any characters -> beyond the limit are ignored. - -### Web Authentication - -Access to the application's GUI via a web browser can be protected with a login -page. When web authentication is enabled, users have to provide valid -credentials, otherwise access is denied. - -Web authentication can be enabled by setting the `WEB_AUTHENTICATION` -environment variable to `1`. - -See the [Environment Variables](#environment-variables) section for more details -on how to set an environment variable. - -> [!IMPORTANT] -> Secure connection must also be enabled to use web authentication. -> See the [Security](#security) section for more details. - -#### Configuring Users Credentials - -Two methods can be used to configure users credentials: - - 1. Via container environment variables. - 2. Via password database. - -Containers environment variables can be used to quickly and easily configure -a single user. Username and pasword are defined via the following environment -variables: - - `WEB_AUTHENTICATION_USERNAME` - - `WEB_AUTHENTICATION_PASSWORD` - -See the [Environment Variables](#environment-variables) section for more details -on how to set an environment variable. - -The second method is more secure and allows multiple users to be configured. -The usernames and password hashes are saved into a password database, located at -`/config/webauth-htpasswd` inside the container. This database file has the -same format as htpasswd files of the Apache HTTP server. Note that password -themselves are not saved into the database, but only their hash. The bcrypt -password hashing function is used to generate hashes. - -Users are managed via the `webauth-user` tool included in the container: - - To add a user password: `docker exec -ti webauth-user add `. - - To update a user password: `docker exec -ti webauth-user update `. - - To remove a user: `docker exec webauth-user del `. - - To list users: `docker exec webauth-user user`. - -## Reverse Proxy - -The following sections contain NGINX configurations that need to be added in -order to reverse proxy to this container. - -A reverse proxy server can route HTTP requests based on the hostname or the URL -path. - -### Routing Based on Hostname - -In this scenario, each hostname is routed to a different application/container. - -For example, let's say the reverse proxy server is running on the same machine -as this container. The server would proxy all HTTP requests sent to -`firefox.domain.tld` to the container at `127.0.0.1:5800`. - -Here are the relevant configuration elements that would be added to the NGINX -configuration: - -```nginx -map $http_upgrade $connection_upgrade { - default upgrade; - '' close; -} - -upstream docker-firefox { - # If the reverse proxy server is not running on the same machine as the - # Docker container, use the IP of the Docker host here. - # Make sure to adjust the port according to how port 5800 of the - # container has been mapped on the host. - server 127.0.0.1:5800; -} - -server { - [...] - - server_name firefox.domain.tld; - - location / { - proxy_pass http://docker-firefox; - } - - location /websockify { - proxy_pass http://docker-firefox; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_read_timeout 86400; - } - - # Needed when audio support is enabled. - location /websockify-audio { - proxy_pass http://docker-firefox; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_read_timeout 86400; - } -} - -``` - -### Routing Based on URL Path - -In this scenario, the hostname is the same, but different URL paths are used to -route to different applications/containers. - -For example, let's say the reverse proxy server is running on the same machine -as this container. The server would proxy all HTTP requests for -`server.domain.tld/firefox` to the container at `127.0.0.1:5800`. - -Here are the relevant configuration elements that would be added to the NGINX -configuration: - -```nginx -map $http_upgrade $connection_upgrade { - default upgrade; - '' close; -} - -upstream docker-firefox { - # If the reverse proxy server is not running on the same machine as the - # Docker container, use the IP of the Docker host here. - # Make sure to adjust the port according to how port 5800 of the - # container has been mapped on the host. - server 127.0.0.1:5800; -} - -server { - [...] - - location = /firefox {return 301 $scheme://$http_host/firefox/;} - location /firefox/ { - proxy_pass http://docker-firefox/; - # Uncomment the following line if your Nginx server runs on a port that - # differs from the one seen by external clients. - #port_in_redirect off; - location /firefox/websockify { - proxy_pass http://docker-firefox/websockify/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection $connection_upgrade; - proxy_read_timeout 86400; - } - } -} - -``` -## Shell Access - -To get shell access to the running container, execute the following command: - -```shell -docker exec -ti CONTAINER sh -``` - -Where `CONTAINER` is the ID or the name of the container used during its -creation. - -## Allowing the membarrier System Call - -To properly work, recent versions of Firefox need the -`membarrier` system call. Without it, tabs would frequently crash. - -Docker uses [seccomp profile] to restrict system calls available to the -container. Before Docker version `20.10.0`, the `membarrier` system call was -not allowed in the default profile. If you run a such version, you can use one -of the following solutions, from the most to the least secure, to provide the -container permission to use this sytem call: - - 1. Run the container with a custom seccomp profile allowing the `membarrier` - system call. The [latest official seccomp profile] can be used. Download - the file and then add the following parameter when creating the container: - `--security-opt seccomp=/path/to/seccomp_profile.json`. - 2. Run the container without the default seccomp profile (thus allowing all - system calls). Use the following parameter when creating the container: - `--security-opt seccomp=unconfined`. - 3. Run the container in privileged mode. This effectively disables usage of - seccomp. Add the `--privileged` parameter when creating the container. - - [here]: https://bugzilla.mozilla.org/show_bug.cgi?id=1338771#c10 - [latest official seccomp profile]: https://github.com/moby/moby/blob/master/profiles/seccomp/default.json - [seccomp profile]: https://docs.docker.com/engine/security/seccomp/ - -## Sound Support - -For Firefox to be able to use the audio device available on -the host, `/dev/snd` must be exposed to the container by adding the -`--device /dev/snd` parameter to the `docker run` command. - -## Setting Firefox Preferences Via Environment Variables - -Firefox preferences can be set via environment variables -passed to the container. During the startup, a script process all these -variables and modify the preference file accordingly. - -The name of the environment variable must start with `FF_PREF_`, followed by a -string of your choice. For example, `FF_PREF_MY_PREF` is a valid name. - -The content of the variable should be in the format `NAME=VAL`, where `NAME` is -the name of the preference (as found in the `about:config` page) and `VAL` is -its value. A value can be one of the following types: - - string - - integer - - boolean - -It is important to note that a value of type `string` should be surrounded by -double quotes. Other types don't need them. - -For example, to set the `network.proxy.http` preference, one would pass the -environment variable to the container by adding the following argument to the -`docker run` command: - -``` --e "FF_PREF_HTTP_PROXY=network.proxy.http=\"proxy.example.com\"" -``` - -If a preference needs to be *removed*, its value should be set to `UNSET`. For -example: - -``` --e "FF_PREF_HTTP_PROXY=network.proxy.http=UNSET" -``` - -**NOTE**: This is an advanced usage and it is recommended to set preferences -via Firefox directly. - -## Troubleshooting - -### Crashes - -If Firefox is crashing frequently, make sure that: - - The `membarrier` system call is not blocked by Docker. See the - [Allowing the membarrier System Call](#allowing-the-membarrier-system-call) - for more details. - - Make sure the kernel of your Linux distribution is up-to-date. - -## Support or Contact - -Having troubles with the container or have questions? Please -[create a new issue]. - -For other great Dockerized applications, see https://jlesage.github.io/docker-apps. - -[create a new issue]: https://github.com/jlesage/docker-firefox/issues +Based off of [jlesage/docker-firefox](https://github.com/jlesage/docker-firefox/) diff --git a/appdefs.yml b/appdefs.yml deleted file mode 100644 index 51bc3c0..0000000 --- a/appdefs.yml +++ /dev/null @@ -1,493 +0,0 @@ ---- - -# -# Definitions for Firefox docker container. -# -# This file is used as data source to generate README.md and unRAID template files -# from Jinja2 templates. -# - -app: - id: 14 - name: firefox - friendly_name: Firefox - gui_type: x11 - base_os: alpine - project: - description: |- - Mozilla Firefox is a free and open-source web browser developed by Mozilla - Foundation and its subsidiary, Mozilla Corporation. - url: https://www.mozilla.org/firefox/ - unraid: - support_url: https://forums.unraid.net/topic/69440-support-firefox/ - category: "Tools:" - documentation: - sections: - - title: Allowing the membarrier System Call - level: 2 - content: |- - To properly work, recent versions of {{ app.friendly_name }} need the - `membarrier` system call. Without it, tabs would frequently crash. - - Docker uses [seccomp profile] to restrict system calls available to the - container. Before Docker version `20.10.0`, the `membarrier` system call was - not allowed in the default profile. If you run a such version, you can use one - of the following solutions, from the most to the least secure, to provide the - container permission to use this sytem call: - - 1. Run the container with a custom seccomp profile allowing the `membarrier` - system call. The [latest official seccomp profile] can be used. Download - the file and then add the following parameter when creating the container: - `--security-opt seccomp=/path/to/seccomp_profile.json`. - 2. Run the container without the default seccomp profile (thus allowing all - system calls). Use the following parameter when creating the container: - `--security-opt seccomp=unconfined`. - 3. Run the container in privileged mode. This effectively disables usage of - seccomp. Add the `--privileged` parameter when creating the container. - - [here]: https://bugzilla.mozilla.org/show_bug.cgi?id=1338771#c10 - [latest official seccomp profile]: https://github.com/moby/moby/blob/master/profiles/seccomp/default.json - [seccomp profile]: https://docs.docker.com/engine/security/seccomp/ - - title: Sound Support - level: 2 - content: |- - For {{ app.friendly_name }} to be able to use the audio device available on - the host, `/dev/snd` must be exposed to the container by adding the - `--device /dev/snd` parameter to the `docker run` command. - - title: Setting {{ app.friendly_name }} Preferences Via Environment Variables - level: 2 - content: |- - {{ app.friendly_name }} preferences can be set via environment variables - passed to the container. During the startup, a script process all these - variables and modify the preference file accordingly. - - The name of the environment variable must start with `FF_PREF_`, followed by a - string of your choice. For example, `FF_PREF_MY_PREF` is a valid name. - - The content of the variable should be in the format `NAME=VAL`, where `NAME` is - the name of the preference (as found in the `about:config` page) and `VAL` is - its value. A value can be one of the following types: - - string - - integer - - boolean - - It is important to note that a value of type `string` should be surrounded by - double quotes. Other types don't need them. - - For example, to set the `network.proxy.http` preference, one would pass the - environment variable to the container by adding the following argument to the - `docker run` command: - - ``` - -e "FF_PREF_HTTP_PROXY=network.proxy.http=\"proxy.example.com\"" - ``` - - If a preference needs to be *removed*, its value should be set to `UNSET`. For - example: - - ``` - -e "FF_PREF_HTTP_PROXY=network.proxy.http=UNSET" - ``` - - **NOTE**: This is an advanced usage and it is recommended to set preferences - via {{ app.friendly_name }} directly. - - title: Troubleshooting - level: 2 - - title: Crashes - level: 3 - content: |- - If {{ app.friendly_name }} is crashing frequently, make sure that: - - The `membarrier` system call is not blocked by Docker. See the - [Allowing the membarrier System Call](#allowing-the-membarrier-system-call) - for more details. - - Make sure the kernel of your Linux distribution is up-to-date. - changelog: - - version: 25.04.1 - date: 2025-04-06 - changes: - - 'Updated Firefox to version 136.0.4-r0.' - - version: 25.03.1 - date: 2025-03-19 - changes: - - 'Updated Firefox to version 136.0-r0.' - - version: 25.02.2 - date: 2025-02-16 - changes: - - 'Updated Firefox to version 135.0-r0.' - - version: 25.02.1 - date: 2025-02-09 - changes: - - 'Updated Firefox to version 134.0-r0.' - - 'Updated baseimage to version 4.7.1, which brings the following changes (since last used version):' - - '2:Added environment variable that allows configuring the web authentication token lifetime.' - - '2:Fixed compatibility issues that were introduced with support of GTK4 applications.' - - '2:Increased the default service ready timeout from 5 seconds to 10 seconds and allow runtime adjustment via environment variable.' - - '2:Rebuild against latest distro images to get security fixes.' - - version: 24.12.1 - date: 2024-12-07 - changes: - - 'Updated Firefox to version 133.0-r0.' - - 'Updated baseimage to version 4.6.7, which brings the following changes:' - - '2:Fixed web audio feature with URL path-based reverse proxy.' - - '2:Fixed TLS secure connection method for VNC that was preventing web access.' - - '2:Fixed CJK font installation.' - - '2:Rebuild against latest distro images to get security fixes.' - - version: 24.11.1 - date: 2024-11-11 - changes: - - 'Updated Firefox to version 132.0-r0.' - - version: 24.10.1 - date: 2024-10-28 - changes: - - 'Updated Firefox to version 131.0.2-r0.' - - version: 24.09.1 - date: 2024-09-29 - changes: - - 'Updated Firefox to version 130.0.1-r0.' - - 'Updated baseimage to version 4.6.4, which brings the following changes:' - - '2:Fixed web authentication feature with URL path-based reverse proxy.' - - '2:Rebuild against latest distro images to get security fixes.' - - version: 24.08.1 - date: 2024-08-05 - changes: - - 'Updated Firefox to version 128.0.3-r0.' - - version: 24.07.1 - date: 2024-07-02 - changes: - - 'Updated Firefox to version 126.0.1-r0.' - - 'Updated baseimage to version 4.6.3, which brings the following changes:' - - '2:Audio support through web browser.' - - '2:Web authentication support.' - - '2:Better support of GTK4 applications.' - - '2:Updated noVNC to version 1.5.0.' - - '2:Updated web UI components (Bootstrap, Font Awesome).' - - '2:When connecting, the control bar is now temporarily shown only once.' - - '2:During package mirror setup, make sure to keep permissions of copied files.' - - version: 24.05.1 - date: 2024-05-02 - changes: - - 'Updated Firefox to version 125.0.3-r0.' - - version: 24.04.1 - date: 2024-04-12 - changes: - - 'Updated Firefox to version 124.0.1-r0.' - - version: 24.01.1 - date: 2024-01-20 - changes: - - 'Updated Firefox to version 120.0.1-r0.' - - 'Updated baseimage to version 4.5.3, based on Alpine Linux 3.19, which brings the following changes:' - - '2:Disabled fullscreen support when page is loaded into an iFrame.' - - '2:Rebuilt against latest distro images to get security fixes.' - - version: 23.11.3 - date: 2023-11-19 - changes: - - 'Updated baseimage to version 4.5.2, which brings the following changes:' - - '2:Fixed issue that would cause the helper that takes ownership of a directory to fail when using a very high user or group ID.' - - version: 23.11.2 - date: 2023-11-10 - changes: - - 'Updated baseimage to version 4.5.1, which brings the following changes:' - - '2:Mirror for packages installation can be set via the `PACKAGES_MIRROR` environment variable.' - - '2:Improved the way the `take-ownership` script is working.' - - '2:Readiness and minimum running time checks should not be done for a service defined with an interval.' - - '2:Raise an error when a synched service fails to start.' - - '2:Minimum running time check of a service was using an incorrect way to verify if process is still alive.' - - '2:Fixed installation of CJK font.' - - version: 23.11.1 - date: 2023-11-09 - changes: - - 'Updated Firefox to version 119.0-r0.' - - version: 23.08.2 - date: 2023-08-20 - changes: - - 'Updated Firefox to version 116.0.3-r0.' - - version: 23.08.1 - date: 2023-08-04 - changes: - - 'Updated Firefox to version 116.0-r0.' - - version: 23.06.1 - date: 2023-06-24 - changes: - - 'Updated Firefox to version 114.0.2-r0.' - - 'Fixed issue caused by the presence slash or backslash characters in Firefox preference''s value set via environment variable.' - - version: 23.05.2 - date: 2023-05-27 - changes: - - 'Updated Firefox to version 113.0.2-r1.' - - version: 23.05.1 - date: 2023-05-19 - changes: - - 'Updated Firefox to version 113.0.1-r1.' - - 'Updated baseimage to version 4.4.2, based on Alpine Linux 3.18, which brings the following changes:' - - '2:Rebuilt against latest distro images to get security fixes.' - - '2:Updated X server to version 1.20.14.' - - version: 23.04.1 - date: 2023-04-29 - changes: - - 'Fixed WebGL (software) support.' - - 'Reverted to using a font with better UTF-8 characters support.' - - 'Improved graceful shutdown of Firefox.' - - 'Updated baseimage to version 4.4.1, which brings the following changes:' - - '2:Updated TigerVNC to version 1.13.1.' - - version: 23.03.1 - date: 2023-03-05 - changes: - - 'Updated baseimage to version 4.4.0, which brings the following changes:' - - '2:Updated components providing access to application''s UI over web.' - - '2:Improved web UI usage with touch devices.' - - '2:Fixed issue with initialization of Linux users and groups when the `GROUP_ID` is also part of `SUP_GROUP_IDS`.' - - version: 23.02.3 - date: 2023-02-13 - changes: - - 'Updated baseimage to version 4.3.6, which brings the following changes:' - - '2:Limit the maximum number of opened files on system having a very large, unlimited value. This prevents unnecessary waste of CPU resources and time for applications trying to close all possible file descriptors.' - - 'Added default preference to prevent closing Firefox when closing the last tab.' - - version: 23.02.2 - date: 2023-02-08 - changes: - - 'Updated baseimage to version 4.3.4, which brings the following changes:' - - '2:Fixed error message from openbox about missing Fontconfig cache directory.' - - 'Do not use the OCI Docker image format yet to keep better compatibility (e.g with older docker clients).' - - version: 23.02.1 - date: 2023-02-04 - changes: - - 'Updated Firefox to version 109.0.1-r0.' - - 'Updated baseimage to version 4.3.3, which brings robustness related enhancements.' - - version: 23.01.1 - date: 2023-01-04 - changes: - - 'Updated Firefox to version 108.0.1-r1.' - - 'Update of the baseimage to version 4.3.1 brings the following changes:' - - '2:Control menu can be moved to the right side of the screen.' - - '2:Automatic focus of the clipboard text box when opening the control menu.' - - '2:Automatic close of the control menu when clicking into the application.' - - '2:Rotation of the internal web server log files.' - - version: 22.12.2 - date: 2022-12-11 - changes: - - 'Implemented workaround for issue seen with Synology devices where container would not start after an image update. The problem is caused by Synology explicitly setting all environment variables and keeping values from the old version.' - - version: 22.12.1 - date: 2022-12-09 - changes: - - 'Updated Firefox to version 107.0.1-r1.' - - 'Updated baseimage to version `4.2.1`, which brings multiple internal enhancements.' - - version: 22.10.4 - date: 2022-10-24 - changes: - - 'Update of the baseimage to version 4.1.1 brings the following changes:' - - '2:Collapse the setting section of the control panel by default on touch devices to accommodate the size taken by the on-screen keyboard.' - - '2:Include the Docker image platform in informational box printed during container startup.' - - '2:Fixed logmonitor crash on arm64 platform.' - - '2:A umask value of `0000` was not properly applied.' - - '2:Fixed issue where the window manager configuration may fail to load.' - - '2:Fixed errors from yad caused by usage of wrong fontconfig related files.' - - version: 22.10.3 - date: 2022-10-14 - changes: - - 'Fixed scenario where a reverse proxy with routing based un URL path is used.' - - version: 22.10.2 - date: 2022-10-10 - changes: - - 'Fixed an issue where taking ownership of `/config` would fail if a subfolder is mapped to a network share.' - - 'Fixed handling of exposed sound device.' - - 'Fixed handling of the VNC password.' - - version: 22.10.1 - date: 2022-10-09 - changes: - - 'Versioning scheme of the Docker image changed to `YY.MM.SEQUENCE`.' - - 'Updated Firefox to version 101.0.1-r0.' - - 'Added support for kiosk mode.' - - 'Added support for URL opening at launch.' - - 'Update of the baseimage to version 4.0.1 brings the following nbew features:' - - '2:Multi-arch image support.' - - '2:Support for dark mode.' - - '2:Support for remote window resize.' - - '2:Updated the web UI with a new, simplified and less intrusive look.' - - version: 1.18.0 - date: 2021-12-30 - changes: - - 'Updated Firefox to version 94.0-r0.' - - 'Now using baseimage version 3.5.8, based on Alpine 3.15, which brings the following change:' - - '2:Updated installed packages to get latest security fixes.' - - version: 1.17.1 - date: 2021-04-13 - changes: - - 'Now using baseimage version 3.5.7, which brings the following change:' - - '2:Updated installed packages to get latest security fixes.' - - version: 1.17.0 - date: 2021-02-06 - changes: - - 'Updated Firefox to version 84.0.2-r0.' - - version: 1.16.0 - date: 2020-12-16 - changes: - - 'Updated Firefox to version 83.0-r1.' - - version: 1.15.0 - date: 2020-10-01 - changes: - - 'Updated Firefox to version 81.0-r0' - - version: 1.14.0 - date: 2020-08-05 - changes: - - 'Upgraded Firefox to version 79.0-r0.' - - 'Now using baseimage to version 3.5.6, which brings the following changes:' - - '2:Other small adjustments for the YAD log monitor target.' - - version: 1.13.0 - date: 2020-07-19 - changes: - - 'Upgraded Firefox to version 78.0.2-r1.' - - 'Added check for missing `membarrier` system call support.' - - 'Now using baseimage v3.5.5, based on Alpine 3.12, which brings the following changes:' - - '2:Upgraded glibc to version 2.31 on Alpine Linux images with glibc integrated.' - - '2:Updated installed packages to get latest security fixes.' - - '2:Adjusted the log monitor target for recent versions of YAD.' - - version: 1.12.0 - date: 2020-06-24 - changes: - - 'Upgraded Firefox to version 77.0.1-r2.' - - version: 1.11.0 - date: 2020-04-25 - changes: - - 'Upgraded Firefox to version 75.0-r2.' - - version: 1.10.0 - date: 2020-03-15 - changes: - - 'Upgraded Firefox to version 74.0-r0.' - - version: 1.9.1 - date: 2020-02-10 - changes: - - 'Upgraded Firefox to version 72.0.2-r0.' - - version: 1.9.0 - date: 2020-01-14 - changes: - - 'Upgraded Firefox to version 72.0.1-r0.' - - version: 1.8.0 - date: 2019-12-25 - changes: - - 'Upgraded Firefox to version 71.0-r0.' - - 'Now using baseimage v3.5.3, which brings the following changes:' - - '2:Updated installed packages to get latest security fixes.' - - '2:Make sure the tzdata is installed.' - - 'Use baseimage based on Alpine Linux 3.10.' - - version: 1.7.1 - date: 2019-08-26 - changes: - - 'Upgraded Firefox to version 68.0.2-r0.' - - version: 1.7.0 - date: 2019-08-05 - changes: - - 'Upgraded Firefox to version 68.0.r0.' - - version: 1.6.0 - date: 2019-07-17 - changes: - - 'Upgraded Firefox to version 67.0.4-r0.' - - version: 1.5.1 - date: 2019-05-12 - changes: - - 'Upgraded Firefox to version 66.0.5-r1.' - - version: 1.5.0 - date: 2019-05-09 - changes: - - 'Upgraded Firefox to version 66.0.4-r0.' - - 'Print the Firefox version during the container startup.' - - version: 1.4.1 - date: 2019-04-24 - changes: - - 'Upgraded Firefox to version 62.0.3-r4.' - - 'Now using baseimage v3.5.2, which brings the following changes:' - - '2:Updated installed packages to get latest security fixes.' - - '2:Fixed issue where the container could have a zombie process.' - - '2:Fixed issue where the password would not be submitted when pressing the enter key in the password modal.' - - '2:Use relative path for favicon ressources to be more friendly with reverse proxy senarios.' - - version: 1.4.0 - date: 2019-02-24 - changes: - - 'Upgraded Firefox to version 62.0.3-r2.' - - 'Preferences can now be set via environment variables.' - - 'Use baseimage based on Alpine Linux 3.9.' - - version: 1.3.1 - date: 2018-09-18 - changes: - - 'Now using baseimage v3.5.1, which brings the following changes:' - - '2:Updated installed packages to get latest security fixes.' - - version: 1.3.0 - date: 2018-07-27 - changes: - - 'Added support for more playable video formats.' - - 'Added support for sound in Firefox.' - - version: 1.2.0 - date: 2018-07-12 - changes: - - 'Now using baseimage v3.4.0, which is based on Alpine Linux 3.8.' - - 'Upgraded Firefox to version 61.0.1-r0.' - - version: 1.1.0 - date: 2018-05-31 - changes: - - 'Upgraded Firefox to version 60.0.1-r0.' - - version: 1.0.2 - date: 2018-03-15 - changes: - - 'Fixed issue where Firefox would not gracefully terminate.' - - 'Fixed an issue where restoring session would resize window to the wrong dimensions.' - - version: 1.0.1 - date: 2018-03-02 - changes: - - 'Now using baseimage v3.3.4, which brings the following changes:' - - '2:Fixed issue where log monitor states were not cleared during container startup.' - - 'Updated Firefox to version 58.0.1-r2.' - - version: 1.0.0 - date: 2018-02-16 - changes: - - 'Initial release.' - -container: - unsupported_volume: /storage - - # Environment variables. - environment_variables: - - name: FF_OPEN_URL - description: >- - The URL to open when {{ app.friendly_name }} starts. - type: public - unraid_template: - title: "Open URL" - display: advanced - required: false - mask: false - - name: FF_KIOSK - description: >- - Set to `1` to enable kiosk mode. This mode launches Firefox in a very - restricted and limited mode best suitable for public areas or - customer-facing displays. - type: public - default: 0 - unraid_template: - title: "Kiosk Mode" - description: >- - Set to 1 to enable kiosk mode. This mode launches Firefox in a very - restricted and limited mode best suitable for public areas or - customer-facing displays. - display: advanced - required: false - mask: false - - name: FF_CUSTOM_ARGS - description: >- - Custom argument(s) to pass when launching {{ app.friendly_name }}. - type: public - default: 0 - unraid_template: - title: "Custom Arguments" - display: advanced - required: false - mask: false - - # Volumes - volumes: [] - - # Network ports - ports: [] - - # Devices - devices: - - path: /dev/snd - description: Optional Linux device to expose to have sound. From d9fc5df080fa4c9316200059bdb943d67204aea2 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Sun, 18 May 2025 00:36:49 -0400 Subject: [PATCH 159/161] Switch to Chromium --- Dockerfile | 63 ++++--------------- rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH | 10 --- .../{55-firefox.sh => 55-chromium.sh} | 11 +--- .../56-firefox-set-prefs-from-env.sh | 47 -------------- rootfs/etc/services.d/app/kill | 6 +- rootfs/etc/services.d/app/params | 25 ++------ rootfs/startapp.sh | 4 +- .../defaults/preferences/firefox-branding.js | 12 ---- 8 files changed, 24 insertions(+), 154 deletions(-) delete mode 100755 rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH rename rootfs/etc/cont-init.d/{55-firefox.sh => 55-chromium.sh} (60%) delete mode 100755 rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh delete mode 100644 rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js diff --git a/Dockerfile b/Dockerfile index d33dc14..432cfe7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # -# firefox Dockerfile +# Chromium Dockerfile # -# https://github.com/jlesage/docker-firefox +# https://git.mmbradley.ca/MichaelBradley/docker-chromium # # Build the membarrier check tool. @@ -16,24 +16,20 @@ RUN strip membarrier_check FROM jlesage/baseimage-gui:alpine-3.21-v4.7.1 # Docker image version is provided via build arg. -ARG DOCKER_IMAGE_VERSION= +ARG DOCKER_IMAGE_VERSION=v0.1.0 # Define software versions. -ARG FIREFOX_VERSION=136.0.4-r0 -#ARG PROFILE_CLEANER_VERSION=2.36 - -# Define software download URLs. -#ARG PROFILE_CLEANER_URL=https://github.com/graysky2/profile-cleaner/raw/v${PROFILE_CLEANER_VERSION}/common/profile-cleaner.in +ARG CHROMIUM_VERSION=136.0.7103.113-r0 # Define working directory. WORKDIR /tmp -# Install Firefox. +# Install Chromium. RUN \ # add-pkg --repository http://dl-cdn.alpinelinux.org/alpine/edge/main \ # --repository http://dl-cdn.alpinelinux.org/alpine/edge/community \ -# --upgrade firefox=${FIREFOX_VERSION} - add-pkg firefox=${FIREFOX_VERSION} +# --upgrade chromium=${CHROMIUM_VERSION} + add-pkg chromium=${CHROMIUM_VERSION} # Install extra packages. RUN \ @@ -47,34 +43,7 @@ RUN \ # A font is needed. font-dejavu \ # The following package is used to send key presses to the X process. - xdotool \ - && \ - # Remove unneeded icons. - find /usr/share/icons/Adwaita -type d -mindepth 1 -maxdepth 1 -not -name 16x16 -not -name scalable -exec rm -rf {} ';' && \ - true - -# Install profile-cleaner. -#RUN \ -# add-pkg --virtual build-dependencies curl && \ -# curl -# -L -o /usr/bin/profile-cleaner {$PROFILE_CLEANER_URL} && \ -# sed-patch 's/@VERSION@/'${PROFILE_CLEANER_VERSION}'/' /usr/bin/profile-cleaner && \ -# chmod +x /usr/bin/profile-cleaner && \ -# add-pkg \ -# bash \ -# file \ -# coreutils \ -# bc \ -# parallel \ -# sqlite \ -# && \ -# # Cleanup. -# del-pkg build-dependencies && \ -# rm -rf /tmp/* /tmp/.[!.]* - -# Generate and install favicons. -RUN \ - APP_ICON_URL=https://github.com/jlesage/docker-templates/raw/master/jlesage/images/firefox-icon.png && \ - install_app_icon.sh "$APP_ICON_URL" + xdotool # Add files. COPY rootfs/ / @@ -82,21 +51,15 @@ COPY --from=membarrier /tmp/membarrier_check /usr/bin/ # Set internal environment variables. RUN \ - set-cont-env APP_NAME "Firefox" && \ - set-cont-env APP_VERSION "$FIREFOX_VERSION" && \ + set-cont-env APP_NAME "Chromium" && \ + set-cont-env APP_VERSION "$CHROMIUM_VERSION" && \ set-cont-env DOCKER_IMAGE_VERSION "$DOCKER_IMAGE_VERSION" && \ true -# Set public environment variables. -ENV \ - FF_OPEN_URL= \ - FF_KIOSK=0 \ - FF_CUSTOM_ARGS= - # Metadata. LABEL \ - org.label-schema.name="firefox" \ - org.label-schema.description="Docker container for Firefox" \ + org.label-schema.name="chromium" \ + org.label-schema.description="Docker container for Chromium" \ org.label-schema.version="${DOCKER_IMAGE_VERSION:-unknown}" \ - org.label-schema.vcs-url="https://github.com/jlesage/docker-firefox" \ + org.label-schema.vcs-url="https://git.mmbradley.ca/MichaelBradley/docker-chromium" \ org.label-schema.schema-version="1.0" diff --git a/rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH b/rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH deleted file mode 100755 index 192fbcc..0000000 --- a/rootfs/etc/cont-env.d/LIBGL_DRIVERS_PATH +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -set -e # Exit immediately if a command exits with a non-zero status. -set -u # Treat unset variables as an error. - -# Override what is set by the baseimage and do not set the variable. Needed for -# WebGL support. -exit 100 - -# vim:ft=sh:ts=4:sw=4:et:sts=4 diff --git a/rootfs/etc/cont-init.d/55-firefox.sh b/rootfs/etc/cont-init.d/55-chromium.sh similarity index 60% rename from rootfs/etc/cont-init.d/55-firefox.sh rename to rootfs/etc/cont-init.d/55-chromium.sh index 1beb953..4fffa68 100755 --- a/rootfs/etc/cont-init.d/55-firefox.sh +++ b/rootfs/etc/cont-init.d/55-chromium.sh @@ -5,8 +5,7 @@ set -u # Treat unset variables as an error. # Make sure some directories are created. mkdir -p /config/downloads -mkdir -p /config/log/firefox -mkdir -p /config/profile +mkdir -p /config/log/chromium # Generate machine id. if [ ! -f /config/machine-id ]; then @@ -14,14 +13,8 @@ if [ ! -f /config/machine-id ]; then cat /proc/sys/kernel/random/uuid | tr -d '-' > /config/machine-id fi -# Clean/optimize Firefox databases. -#if [ -d /config/.mozilla/firefox ] && [ -d /config/profile ]; then -# [ -f /config/.mozilla/firefox/profiles.ini ] || cp /defaults/profiles.ini /config/.mozilla/firefox/ -# env HOME=/config /usr/bin/profile-cleaner f -#fi - # Initialize log files. -for LOG_FILE in /config/log/firefox/output.log /config/log/firefox/error.log +for LOG_FILE in /config/log/chromium/output.log /config/log/chromium/error.log do touch "$LOG_FILE" diff --git a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh b/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh deleted file mode 100755 index 8da148a..0000000 --- a/rootfs/etc/cont-init.d/56-firefox-set-prefs-from-env.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh - -set -e - -PREF_FILE="${1:-/config/profile/prefs.js}" - -if [ -z "$PREF_FILE" ]; then - echo "ERROR: Preference file not set." - exit 1 -fi - -mkdir -p "$(dirname "$PREF_FILE")" -[ -f "$PREF_FILE" ] || touch "$PREF_FILE" - -env | grep "^FF_PREF_" | while read -r ENV -do - ENAME="$(echo "$ENV" | cut -d '=' -f1)" - EVAL="$(echo "$ENV" | cut -d '=' -f2-)" - - if [ -z "$EVAL" ]; then - echo "Skipping environment variable '$ENAME': no value set." - continue - fi - - if echo "$EVAL" | grep -q "="; then - PNAME="$(echo "$EVAL" | cut -d '=' -f1)" - PVAL="$(echo "$EVAL" | cut -d '=' -f2-)" - [ -n "$PVAL" ] || PVAL='""' - else - PNAME="$EVAL" - PVAL='""' - fi - - if [ "$PVAL" = "UNSET" ]; then - echo "Removing preference '$PNAME'..." - sed -i "/user_pref(\"$PNAME\",.*);/d" "$PREF_FILE" - elif grep -q "user_pref(\"$PNAME\"," "$PREF_FILE"; then - echo "Setting preference '$PNAME'..." - sed -i "/user_pref(\"$PNAME\",.*);/d" "$PREF_FILE" - echo "user_pref(\"$PNAME\", $(echo "$PVAL" | sed 's|\\|\\\\|g'));" >> "$PREF_FILE" - else - echo "Setting new preference '$PNAME'..." - echo "user_pref(\"$PNAME\", $(echo "$PVAL" | sed 's|\\|\\\\|g'));" >> "$PREF_FILE" - fi -done - -# vim:ft=sh:ts=4:sw=4:et:sts=4 diff --git a/rootfs/etc/services.d/app/kill b/rootfs/etc/services.d/app/kill index f26848a..8279f34 100755 --- a/rootfs/etc/services.d/app/kill +++ b/rootfs/etc/services.d/app/kill @@ -1,7 +1,7 @@ #!/bin/sh # -# Firefox doesn't gracefully shutdown when receiving SIGTERM. For example, last -# opened tabs may not be saved. Instead, terminate Firefox by sending the +# Chromium doesn't gracefully shutdown when receiving SIGTERM. For example, last +# opened tabs may not be saved. Instead, terminate Chromium by sending the # CTRL+q key presses. # @@ -14,7 +14,7 @@ xdotool key "ctrl+q" for i in $(seq 1 10) do - if ! ps | grep "/usr/lib/firefox/firefox" | grep -q -v grep + if ! ps | grep "/usr/lib/chromium/chromium" | grep -q -v grep then break fi diff --git a/rootfs/etc/services.d/app/params b/rootfs/etc/services.d/app/params index 46c42d9..9e13408 100755 --- a/rootfs/etc/services.d/app/params +++ b/rootfs/etc/services.d/app/params @@ -3,25 +3,8 @@ set -e # Exit immediately if a command exits with a non-zero status. set -u # Treat unset variables as an error. -# Set location of profile. -echo "--profile" -echo "/config/profile" +# Always make browser take up full screen +echo "--start-maximized" -# Make sure we don't get ask to be the default browser. -echo "--setDefaultBrowser" - -# Check if kiosk mode is enabled. -if is-bool-val-true "${FF_KIOSK:-0}"; then - echo "--kiosk" -fi - -# URL to open. -# NOTE: This should be the last argument. -if [ -n "${FF_OPEN_URL:-}" ]; then - echo "$FF_OPEN_URL" -fi - -# Custom arguments. -if [ -n "${FF_CUSTOM_ARGS:-}" ]; then - eval 'for word in '$FF_CUSTOM_ARGS'; do echo "$word"; done' -fi +# Disable sandboxing, which isn't supported in containers +echo "--no-sandbox" diff --git a/rootfs/startapp.sh b/rootfs/startapp.sh index ea263e9..97de430 100755 --- a/rootfs/startapp.sh +++ b/rootfs/startapp.sh @@ -27,7 +27,7 @@ for PID in "$PIDS"; do done set -e -/usr/bin/firefox --version -exec /usr/bin/firefox "$@" >> /config/log/firefox/output.log 2>> /config/log/firefox/error.log +/usr/bin/chromium --version +exec /usr/bin/chromium "$@" >> /config/log/chromium/output.log 2>> /config/log/chromium/error.log # vim:ft=sh:ts=4:sw=4:et:sts=4 diff --git a/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js b/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js deleted file mode 100644 index c79e78d..0000000 --- a/rootfs/usr/lib/firefox/browser/defaults/preferences/firefox-branding.js +++ /dev/null @@ -1,12 +0,0 @@ -// Default download directory. -pref("browser.download.dir", "/config/downloads"); -pref("browser.download.folderList", 2); -// Disable the privacy notice page. -pref("toolkit.telemetry.reportingpolicy.firstRun", false); -// Disable some warning messages. -pref("security.sandbox.warn_unprivileged_namespaces", false); -// Prevent closing Firefox when closing the last tab. -pref("browser.tabs.closeWindowWithLastTab", false); -// Disable confirmation before quitting with Ctrl+Q. Needed to allow Firefox -// to quit cleanly when container is shutted down. -pref("browser.warnOnQuitShortcut", false); From 36db42f89b1a5eeffb38feb9b6c34c23bcda7267 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Sun, 18 May 2025 00:37:30 -0400 Subject: [PATCH 160/161] Add Docker compose file example --- .gitignore | 1 + compose.yaml | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 .gitignore create mode 100644 compose.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f733c4b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +config/ diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..648edde --- /dev/null +++ b/compose.yaml @@ -0,0 +1,20 @@ +--- +services: + docker-chromium: + image: git.mmbradley.ca/michaelbradley/docker-chromium:latest + container_name: docker-chromium + restart: unless-stopped + shm_size: 2gb + ports: + - '5800:5800' + volumes: + - ./config:/config + environment: + LANG: en_CA.UTF-8 + TZ: America/Toronto + KEEP_APP_RUNNING: 1 + WEB_AUDIO: 1 + WEB_AUTHENTICATION: 1 + WEB_AUTHENTICATION_USERNAME: username + WEB_AUTHENTICATION_PASSWORD: password + SECURE_CONNECTION: 1 From 8b19e3e5c34eb59ea1fe6ede72f1ffe875bb2019 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Sun, 18 May 2025 00:58:30 -0400 Subject: [PATCH 161/161] Try to mitigate restart breakage --- compose.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compose.yaml b/compose.yaml index 648edde..84b61ce 100644 --- a/compose.yaml +++ b/compose.yaml @@ -7,8 +7,9 @@ services: shm_size: 2gb ports: - '5800:5800' - volumes: - - ./config:/config + # Seems to break on restarts, recommend only using for debugging + # volumes: + # - ./config:/config environment: LANG: en_CA.UTF-8 TZ: America/Toronto