From 3633f6447bbda339c8a91937b36c1aaee312c21a Mon Sep 17 00:00:00 2001 From: James Campbell Date: Sat, 28 Feb 2026 22:37:20 +0000 Subject: [PATCH 1/4] docker --- Dockerfile | 17 ++++------------- Dockerfile.aarch64 | 17 ++++------------- 2 files changed, 8 insertions(+), 26 deletions(-) diff --git a/Dockerfile b/Dockerfile index c2fa225..8432cfd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,12 +4,14 @@ FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.22 ARG BUILD_DATE ARG VERSION -ARG SPEEDTEST_TRACKER_VERSION LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="thespad" ENV HOME=/config +# Copy local speedtest-tracker source instead of downloading from GitHub +COPY speedtest-tracker/ /app/www/ + RUN \ apk add --no-cache \ iputils \ @@ -43,17 +45,6 @@ RUN \ if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ echo "*** install speedtest-tracker ***" && \ - if [ -z ${SPEEDTEST_TRACKER_VERSION+x} ]; then \ - SPEEDTEST_TRACKER_VERSION=$(curl -sX GET "https://api.github.com/repos/alexjustesen/speedtest-tracker/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]'); \ - fi && \ - curl -o \ - /tmp/speedtest-tracker.tar.gz -L \ - "https://github.com/alexjustesen/speedtest-tracker/archive/${SPEEDTEST_TRACKER_VERSION}.tar.gz" && \ - mkdir -p /app/www && \ - tar xzf \ - /tmp/speedtest-tracker.tar.gz -C \ - /app/www/ --strip-components=1 && \ cd /app/www && \ composer install \ --no-interaction \ @@ -80,6 +71,6 @@ RUN \ /app/www/node_modules \ /tmp/* -COPY root/ / +COPY docker-speedtest-tracker/root/ / VOLUME /config diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index 1a55bfc..277e934 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -4,12 +4,14 @@ FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.22 ARG BUILD_DATE ARG VERSION -ARG SPEEDTEST_TRACKER_VERSION LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL maintainer="thespad" ENV HOME=/config +# Copy local speedtest-tracker source instead of downloading from GitHub +COPY speedtest-tracker/ /app/www/ + RUN \ apk add --no-cache \ iputils \ @@ -43,17 +45,6 @@ RUN \ if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ echo "*** install speedtest-tracker ***" && \ - if [ -z ${SPEEDTEST_TRACKER_VERSION+x} ]; then \ - SPEEDTEST_TRACKER_VERSION=$(curl -sX GET "https://api.github.com/repos/alexjustesen/speedtest-tracker/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]'); \ - fi && \ - curl -o \ - /tmp/speedtest-tracker.tar.gz -L \ - "https://github.com/alexjustesen/speedtest-tracker/archive/${SPEEDTEST_TRACKER_VERSION}.tar.gz" && \ - mkdir -p /app/www && \ - tar xzf \ - /tmp/speedtest-tracker.tar.gz -C \ - /app/www/ --strip-components=1 && \ cd /app/www && \ composer install \ --no-interaction \ @@ -80,6 +71,6 @@ RUN \ /app/www/node_modules \ /tmp/* -COPY root/ / +COPY docker-speedtest-tracker/root/ / VOLUME /config From 0096782c0d84e088791f03399c04a6092a4ae0a5 Mon Sep 17 00:00:00 2001 From: James Campbell Date: Sat, 28 Feb 2026 23:04:59 +0000 Subject: [PATCH 2/4] make node perm --- Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8432cfd..10ba1a6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,8 @@ RUN \ apk add --no-cache \ iputils \ grep \ + nodejs \ + npm \ php84-gd \ php84-intl \ php84-pdo_mysql \ @@ -26,8 +28,8 @@ RUN \ php84-xmlreader \ postgresql16-client \ ssmtp && \ - apk add --no-cache --virtual=build-dependencies \ - npm && \ + echo "*** install fast-cli ***" && \ + npm install -g fast-cli && \ echo "*** install speedtest-cli ***" && \ if [ -z ${CLI_VERSION+x} ]; then \ CLI_VERSION=$(curl -Ls https://packagecloud.io/ookla/speedtest-cli/debian/dists/bookworm/main/binary-amd64/Packages \ @@ -64,7 +66,6 @@ RUN \ } > /etc/php84/conf.d/php-misc.ini && \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ echo "**** cleanup ****" && \ - apk del --purge build-dependencies && \ rm -rf \ $HOME/.cache \ $HOME/.npm \ From 731b8af14851335b9594230629a8a3b745c7d0b0 Mon Sep 17 00:00:00 2001 From: James Campbell Date: Sun, 1 Mar 2026 01:16:02 +0000 Subject: [PATCH 3/4] puppet --- Dockerfile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 10ba1a6..10084ca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,8 +12,16 @@ ENV HOME=/config # Copy local speedtest-tracker source instead of downloading from GitHub COPY speedtest-tracker/ /app/www/ +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ + PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser + RUN \ apk add --no-cache \ + chromium \ + nss \ + freetype \ + harfbuzz \ + ttf-freefont \ iputils \ grep \ nodejs \ @@ -46,6 +54,7 @@ RUN \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \ if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ + echo "env[PUPPETEER_EXECUTABLE_PATH] = /usr/bin/chromium-browser" >> /etc/php84/php-fpm.conf && \ echo "*** install speedtest-tracker ***" && \ cd /app/www && \ composer install \ @@ -67,7 +76,6 @@ RUN \ printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \ echo "**** cleanup ****" && \ rm -rf \ - $HOME/.cache \ $HOME/.npm \ /app/www/node_modules \ /tmp/* From 1a74ee53c02e05dd8f0751611cb12e65bd22bb4e Mon Sep 17 00:00:00 2001 From: James Campbell Date: Sun, 1 Mar 2026 01:24:24 +0000 Subject: [PATCH 4/4] puppet --- .puppeteerrc.cjs | 4 ++++ Dockerfile | 12 +++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 .puppeteerrc.cjs diff --git a/.puppeteerrc.cjs b/.puppeteerrc.cjs new file mode 100644 index 0000000..3cef53b --- /dev/null +++ b/.puppeteerrc.cjs @@ -0,0 +1,4 @@ +/** @type {import("puppeteer").Configuration} */ +module.exports = { + cacheDirectory: '/opt/puppeteer-cache', +}; diff --git a/Dockerfile b/Dockerfile index 10084ca..8adde97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,8 +12,12 @@ ENV HOME=/config # Copy local speedtest-tracker source instead of downloading from GitHub COPY speedtest-tracker/ /app/www/ -ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ - PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser +# Puppeteer config: use a cache dir outside /config volume so installed +# Chrome persists across container recreations. +COPY docker-speedtest-tracker/.puppeteerrc.cjs /config/.puppeteerrc.cjs +COPY docker-speedtest-tracker/.puppeteerrc.cjs /app/www/.puppeteerrc.cjs + +ENV PUPPETEER_CACHE_DIR=/opt/puppeteer-cache RUN \ apk add --no-cache \ @@ -38,6 +42,8 @@ RUN \ ssmtp && \ echo "*** install fast-cli ***" && \ npm install -g fast-cli && \ + echo "*** install puppeteer chrome into persistent cache ***" && \ + npx puppeteer browsers install chrome && \ echo "*** install speedtest-cli ***" && \ if [ -z ${CLI_VERSION+x} ]; then \ CLI_VERSION=$(curl -Ls https://packagecloud.io/ookla/speedtest-cli/debian/dists/bookworm/main/binary-amd64/Packages \ @@ -54,7 +60,7 @@ RUN \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php84/php-fpm.d/www.conf && \ if ! grep -qxF 'clear_env = no' /etc/php84/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php84/php-fpm.d/www.conf; fi && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php84/php-fpm.conf && \ - echo "env[PUPPETEER_EXECUTABLE_PATH] = /usr/bin/chromium-browser" >> /etc/php84/php-fpm.conf && \ + echo "env[PUPPETEER_CACHE_DIR] = /opt/puppeteer-cache" >> /etc/php84/php-fpm.conf && \ echo "*** install speedtest-tracker ***" && \ cd /app/www && \ composer install \