diff --git a/image/base/Dockerfile b/image/base/Dockerfile index 3dd0a400d..43ec04fa7 100644 --- a/image/base/Dockerfile +++ b/image/base/Dockerfile @@ -147,7 +147,12 @@ COPY --from=cjpegli-builder /usr/local/bin/cjpegli /usr/local/bin ADD install-redis /tmp/install-redis -RUN gem install pups --force &&\ +# version check: https://rubygems.org/gems/pups +RUN cd /tmp &&\ + gem fetch pups --version 1.4.0 &&\ + echo "5809731d6f4819defe1aac694e614c4b3d9958b5f378a70edf761f3808877052 pups-1.4.0.gem" | sha256sum -c &&\ + gem install --local --force pups-1.4.0.gem &&\ + rm pups-1.4.0.gem &&\ mkdir -p /pups/bin/ &&\ ln -s /usr/local/bin/pups /pups/bin/pups @@ -159,14 +164,20 @@ COPY etc/ /etc COPY sbin/ /sbin FROM discourse-runtime-base AS discourse-build-base +# From https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key +# fingerprint: 6F71 F525 2828 41EE DAF8 51B4 2F59 B5F9 9B1B E0B4 +ADD nodesource-repo.gpg.key /usr/share/keyrings/nodesource.asc +# From https://dl.yarnpkg.com/debian/pubkey.gpg +# fingerprint: 72EC F46A 56B4 AD39 C907 BBB7 1646 B01B 86E5 0310 +ADD yarn-pubkey.gpg.key /usr/share/keyrings/yarn.asc RUN --mount=type=tmpfs,target=/var/log \ --mount=type=tmpfs,target=/var/cache/apt \ --mount=type=tmpfs,target=/var/lib/apt \ # yarn packages - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -; \ - echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list; \ + echo "deb [signed-by=/usr/share/keyrings/yarn.asc] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list; \ # node packages - curl --silent --location https://deb.nodesource.com/setup_22.x | sudo bash -; \ + printf 'Types: deb\nURIs: https://deb.nodesource.com/node_22.x\nSuites: nodistro\nComponents: main\nSigned-By: /usr/share/keyrings/nodesource.asc\n' > /etc/apt/sources.list.d/nodesource.sources; \ + printf 'Package: nodejs\nPin: origin deb.nodesource.com\nPin-Priority: 600\n' > /etc/apt/preferences.d/nodejs; \ echo "debconf debconf/frontend select Teletype" | debconf-set-selections; \ apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install \ # gem build dependencies diff --git a/image/base/install-imagemagick b/image/base/install-imagemagick index 150336b61..0ab822074 100755 --- a/image/base/install-imagemagick +++ b/image/base/install-imagemagick @@ -2,8 +2,8 @@ set -e # version check: https://github.com/ImageMagick/ImageMagick/releases -IMAGE_MAGICK_VERSION="7.1.2-3" -IMAGE_MAGICK_HASH="b16415e8694a2e15e5282d64fc7b358f309ff3a514a90eb5da268676c772de3d" +IMAGE_MAGICK_VERSION="7.1.2-25" +IMAGE_MAGICK_HASH="ff33d227d2e1744327280e956ec9f7abaebbd8f48277d16cdad906e05e4794b6" LIBJPEGTURBO=$(cat /etc/issue | grep -qi Debian && echo 'libjpeg62-turbo libjpeg62-turbo-dev' || echo 'libjpeg-turbo8 libjpeg-turbo8-dev') diff --git a/image/base/install-jemalloc b/image/base/install-jemalloc index 5ff997514..a3bb11302 100755 --- a/image/base/install-jemalloc +++ b/image/base/install-jemalloc @@ -12,10 +12,10 @@ if uname -m | grep -qi 'aarch64'; then mkdir /jemalloc-new cd /jemalloc-new - wget -q https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2 - sha256sum jemalloc-5.3.0.tar.bz2 - echo "2db82d1e7119df3e71b7640219b6dfe84789bc0537983c3b7ac4f7189aecfeaa jemalloc-5.3.0.tar.bz2" | sha256sum -c - tar --strip-components=1 -xjf jemalloc-5.3.0.tar.bz2 + wget -q https://github.com/jemalloc/jemalloc/releases/download/5.3.1/jemalloc-5.3.1.tar.bz2 + sha256sum jemalloc-5.3.1.tar.bz2 + echo "3826bc80232f22ed5c4662f3034f799ca316e819103bdc7bb99018a421706f92 jemalloc-5.3.1.tar.bz2" | sha256sum -c + tar --strip-components=1 -xjf jemalloc-5.3.1.tar.bz2 ./configure --prefix=/usr --with-lg-page=16 && make build_lib -j"$(nproc)" && make install_lib_shared cd / && rm -rf /jemalloc-new else @@ -29,15 +29,4 @@ else tar --strip-components=1 -xjf jemalloc-3.6.0.tar.bz2 ./configure --prefix=/usr $EXTRA_CONF && make -j"$(nproc)" && make install_lib_shared cd / && rm -rf /jemalloc-stable - - # jemalloc new - mkdir /jemalloc-new - cd /jemalloc-new - - wget -q https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2 - sha256sum jemalloc-5.3.0.tar.bz2 - echo "2db82d1e7119df3e71b7640219b6dfe84789bc0537983c3b7ac4f7189aecfeaa jemalloc-5.3.0.tar.bz2" | sha256sum -c - tar --strip-components=1 -xjf jemalloc-5.3.0.tar.bz2 - ./configure --prefix=/usr --with-install-suffix=5.3.0 && make build_lib -j"$(nproc)" && make install_lib_shared - cd / && rm -rf /jemalloc-new fi diff --git a/image/base/install-nginx b/image/base/install-nginx index 295bc4ab3..7795cb92b 100755 --- a/image/base/install-nginx +++ b/image/base/install-nginx @@ -16,7 +16,11 @@ apt install -y nginx-common cd /tmp # this is the reason we are compiling by hand... -git clone https://github.com/google/ngx_brotli.git +# master commit, pinned; it also pins the brotli submodule (v1.1.0) +NGX_BROTLI_COMMIT="a71f9312c2deb28875acc7bacfdd5695a111aa53" +git init -q /tmp/ngx_brotli +git -C /tmp/ngx_brotli fetch -q --depth 1 https://github.com/google/ngx_brotli.git "$NGX_BROTLI_COMMIT" +git -C /tmp/ngx_brotli checkout -q "$NGX_BROTLI_COMMIT" # now ngx_brotli has brotli as a submodule cd /tmp/ngx_brotli git submodule update --init diff --git a/image/base/install-oxipng b/image/base/install-oxipng index c27804c5c..7e4f88ecd 100755 --- a/image/base/install-oxipng +++ b/image/base/install-oxipng @@ -1,27 +1,31 @@ #!/bin/bash set -e -# version check: https://github.com/shssoichiro/oxipng/releases -OXIPNG_VERSION="9.1.2" +# version check: https://github.com/oxipng/oxipng/releases +OXIPNG_VERSION="10.1.1" dpkgArch="$(dpkg --print-architecture)" case "${dpkgArch##*-}" in - amd64) OXIPNG_FILE="oxipng-${OXIPNG_VERSION}-x86_64-unknown-linux-musl.tar.gz"; OXIPNG_HASH='211d53f3781be4a71566fbaad6611a3da018ac9b22d500651b091c2b42ebe318' ;; - arm64) OXIPNG_FILE="oxipng-${OXIPNG_VERSION}-aarch64-unknown-linux-musl.tar.gz"; OXIPNG_HASH='818d47d7195e1e0c4d58a9f3b6fd84aa3cd21770c60c876e73e2e6a17ca69b52' ;; + amd64) OXIPNG_FILE="oxipng-${OXIPNG_VERSION}-x86_64-unknown-linux-musl.tar.gz"; OXIPNG_HASH='a7e13e06040dea5fe1298668ac99afbe0ed781610a9e4b27d62a8850b3fdf273' ;; + arm64) OXIPNG_FILE="oxipng-${OXIPNG_VERSION}-aarch64-unknown-linux-musl.tar.gz"; OXIPNG_HASH='d8b599202378b038fc7571ba6ffd5f65592529a694f0315a7d436863c56029ed' ;; *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; esac # Install other deps apt -y -q install advancecomp jpegoptim libjpeg-turbo-progs -git clone --depth 1 --branch "3.08" https://github.com/Matthias-Wandel/jhead.git /tmp/jhead +# jhead tag 3.08, fetched by commit since tags are mutable +JHEAD_COMMIT="4d04ac965632e35a65709c7f92a857a749e71811" +git init -q /tmp/jhead +git -C /tmp/jhead fetch -q --depth 1 https://github.com/Matthias-Wandel/jhead.git "$JHEAD_COMMIT" +git -C /tmp/jhead checkout -q "$JHEAD_COMMIT" cd /tmp/jhead && make && cp /tmp/jhead/jhead /usr/local/bin/jhead cd / && rm -rf /tmp/jhead mkdir /oxipng-install cd /oxipng-install -wget -q https://github.com/shssoichiro/oxipng/releases/download/v${OXIPNG_VERSION}/${OXIPNG_FILE} +wget -q https://github.com/oxipng/oxipng/releases/download/v${OXIPNG_VERSION}/${OXIPNG_FILE} sha256sum ${OXIPNG_FILE} echo "${OXIPNG_HASH} ${OXIPNG_FILE}" | sha256sum -c tar --strip-components=1 -xzf $OXIPNG_FILE diff --git a/image/base/install-redis b/image/base/install-redis index f26e06929..748181d6a 100755 --- a/image/base/install-redis +++ b/image/base/install-redis @@ -2,12 +2,12 @@ set -e # version check: https://redis.io/ -REDIS_VERSION=7.4.7 -REDIS_HASH="c97e57b0df330a9e091cacff012bebe763c275398cf36ff44cdba876814b595b" +REDIS_VERSION=7.4.9 +REDIS_HASH="a71a67b47b2705d3448f0400573e3ad5c4c9f8c18236f426dc6acc7284bf42ad" cd /tmp # Prepare Redis source. -wget -q http://download.redis.io/releases/redis-$REDIS_VERSION.tar.gz +wget -q https://download.redis.io/releases/redis-$REDIS_VERSION.tar.gz sha256sum redis-$REDIS_VERSION.tar.gz echo "$REDIS_HASH redis-$REDIS_VERSION.tar.gz" | sha256sum -c diff --git a/image/base/nodesource-repo.gpg.key b/image/base/nodesource-repo.gpg.key new file mode 100644 index 000000000..ca8b338b8 --- /dev/null +++ b/image/base/nodesource-repo.gpg.key @@ -0,0 +1,30 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mQENBFdDN1ABCADaNd/I3j3tn40deQNgz7hB2NvT+syXe6k4ZmdiEcOfBvFrkS8B +hNS67t93etHsxEy7E0qwsZH32bKazMqe9zDwoa3aVImryjh6SHC9lMtW27JPHFeM +Srkt9YmH1WMwWcRO6eSY9B3PpazquhnvbammLuUojXRIxkDroy6Fw4UKmUNSRr32 +9Ej87jRoR1B2/57Kfp2Y4+vFGGzSvh3AFQpBHq51qsNHALU6+8PjLfIt+5TPvaWR +TB+kAZnQZkaIQM2nr1n3oj6ak2RATY/+kjLizgFWzgEfbCrbsyq68UoY5FPBnu4Z +E3iDZpaIqwKr0seUC7iA1xM5eHi5kty1oB7HABEBAAG0Ik5Tb2xpZCA8bnNvbGlk +LWdwZ0Bub2Rlc291cmNlLmNvbT6JAU4EEwEKADgCGwMCHgECF4AWIQRvcfUlKChB +7tr4UbQvWbX5mxvgtAUCaWfGnwULCQgHAgYVCgkICwIEFgIDAQAKCRAvWbX5mxvg +tL0CB/0TTur63uXTPbq+JBQET6jnEVaDrNmpHI/z2RMuj163gmy9CtCwG060c+TI +qzmzlPacbTkGc5C50teX2mhs+5JIthfhMibR6Dgy0zeSVuvt9WJ3TNWBpoW5Ezka +17SA3Xv9UEJS2eyRd7ALf7TGGAj8DG+xRABXl6bJIXh1s7Hki7kwgVrpNxm/EqyX +OrzExm0g2UjgdkbnZrnTyZMB6X8f8fZPo0QcByPvLee2DtkKeE+SZlFXyvnCzcw0 +94K45vlWkEdRzmiiWAG7guzZyZYGcCO5EoJ3LUP90qhrmQUfsbtczeoEW17EW1jM +RohLo8BqVyYc1CAFlULIDNeS3aipuQENBFdDN1ABCACq02gutmss6jiD2u50vdAR +x3JOGd92trWRf7qH9/MTToslhoU/LiXhaE0x5+UkKuRbcruCtytn226brvwD0BdO +QGpY81ZAxjTFuKUpIDmrHcrI/N9XLrLKx19kWEttsIPNJOgvx8JoeReOX2hLjcbF +fmz8e6D1K7eZ+hjMfOLxD94tfhQwYtKbfwf0JwxQV5ItQRryd+X+TcA3nyvFWiJ8 +Vz92Tf1iG7Z+XasaaZFf2JDuxoiZaSZY7va395ClCEMykFsRbGwgDyB6Fr+6x/UU +sYA4rYV7RumIOUdWngWyWjzVy/cKSWASW4jI5ABWs+AfeRTqmZt6+6B7oIghrB19 +ABEBAAGJAR8EGAECAAkFAldDN1ACGwwACgkQL1m1+Zsb4LRPzgf9FTfPA0d2N37q +su5av3bYZJ+w6pvWF3aK2Zdy9ednhCBfPNmhvBRN6mXWixo0DuKEoQMjVpkX0hrq +B9FxEVwCPZ9K/JuJgzMROq7T+7R3rcv+TPMdwk8rjIMeRiw2hFLwbrJ0w/v7/3wT +MESv3GfXbuT0huEedK7bLfqGMgtmqMeCNkoI7Rf3GO2xArGQ6Zc2rTd4L9+D5HHS +IPEixwFZS+Debc7pg3os0bKXEsqMtitvocClOAuPnXpCy04PK450UTr6ZVdirWhJ +Oq8SrSERQwqEJ4PMHybiDKwzSr6mcBURre3G71uTAp7h/DISLTpfVMadcB6eoLWr +/4fBqejAWg== +=wh5k +-----END PGP PUBLIC KEY BLOCK----- diff --git a/image/base/yarn-pubkey.gpg.key b/image/base/yarn-pubkey.gpg.key new file mode 100644 index 000000000..36bff3110 --- /dev/null +++ b/image/base/yarn-pubkey.gpg.key @@ -0,0 +1,239 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +4OCGPjTRTqmNJRbdsgL88g== +=6NPT +-----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEaXpj0BYJKwYBBAHaRw8BAQdAwGyeCSTYStlwsa6UqBUbwNBt6/OChW1Yd5UQ +ZSBfIo60I1lhcm4gUGFja2FnaW5nICgyMDI2KSA8eWFybkBkYW4uY3g+iI0EExYK +ADUCGwMCF4AWIQRO+BUPTy195E8d/wu0KHnMazjhGAUCaXpj9QMLCQgEFQoJCAUW +AgMBAAIeBQAKCRC0KHnMazjhGI+PAP9/RethU7WKc7rpXMChZTsP2K+SS1amLmTE +S1AjOhYncwEA1GEwkTnvdjZ5wjHzEoPlBwSldfeGe1tjjyCcLDtPtwG4MwRpemRz +FgkrBgEEAdpHDwEBB0AuAR1W6iEp8IZurRTTI4EfWbxE3VUfkBUVm3IyUg2Dboj1 +BBgWCgAmFiEETvgVD08tfeRPHf8LtCh5zGs44RgFAml6ZHMCGwIFCQeEzgAAgQkQ +tCh5zGs44Rh2IAQZFgoAHRYhBP98tWZ7VCCSCEu9xWLVT9QAP2UlBQJpemRzAAoJ +EGLVT9QAP2UlMsYA/18AOfbemgoy1NLDaLYIfu2vf2miVnPszmmMmK6TEJvwAQCR ++Mh3MuKInPY+/HVenyCnxEc4utAt8yljWTzXo+/tBzKTAQD2XT6tc4eknyeoZWMw +t4VaOv5ygSKcnFfi/84WZm1mFQD/VYXBA2pLP5W6o7NKfPaXCRbhn4dsubvYo4V/ +s/jmAAc= +=qQN5 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/image/discourse_test/Dockerfile b/image/discourse_test/Dockerfile index c5c4de797..ab90890d6 100644 --- a/image/discourse_test/Dockerfile +++ b/image/discourse_test/Dockerfile @@ -24,14 +24,19 @@ RUN chown -R discourse . &&\ FROM base AS with_browsers ENV TESTEM_DEFAULT_BROWSER Chrome +# From https://dl.google.com/linux/linux_signing_key.pub +# fingerprint: EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796 +ADD google-linux-signing-key.pub /usr/share/keyrings/google-chrome.asc ADD install-chrome /tmp/install-chrome +# From https://archive.mozilla.org/pub/firefox/releases//KEY +# fingerprint: 14F2 6682 D091 6CDD 81E3 7B6D 61B7 B526 D98F 0353 +ADD mozilla-release-key.asc /tmp/mozilla-release-key.asc +ADD install-firefox /tmp/install-firefox RUN /tmp/install-chrome &&\ apt update &&\ apt install -y libgconf-2-4 libxss1 firefox-esr &&\ - cd /tmp && wget -q "https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US" -O firefox.tar.xz &&\ - tar xJvf firefox.tar.xz && mv /tmp/firefox /opt/firefox-evergreen &&\ - apt clean &&\ - rm /tmp/firefox.tar.xz + /tmp/install-firefox &&\ + apt clean FROM with_browsers AS release diff --git a/image/discourse_test/google-linux-signing-key.pub b/image/discourse_test/google-linux-signing-key.pub new file mode 100644 index 000000000..839f8a235 --- /dev/null +++ b/image/discourse_test/google-linux-signing-key.pub @@ -0,0 +1,305 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=CkA1 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/image/discourse_test/install-chrome b/image/discourse_test/install-chrome index 5b9127771..915ba006b 100755 --- a/image/discourse_test/install-chrome +++ b/image/discourse_test/install-chrome @@ -7,8 +7,7 @@ set -e if [ "$(dpkg --print-architecture)" = "arm64" ]; then apt update && apt install -y chromium-driver else - wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - &&\ - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list &&\ + echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.asc] https://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list &&\ apt update &&\ apt install -y google-chrome-stable fi diff --git a/image/discourse_test/install-firefox b/image/discourse_test/install-firefox new file mode 100755 index 000000000..43631796c --- /dev/null +++ b/image/discourse_test/install-firefox @@ -0,0 +1,30 @@ +#!/bin/bash +set -e + +# Installs the latest Firefox release ("evergreen") into /opt/firefox-evergreen, +# verified against Mozilla's GPG-signed SHA256SUMS using the release key +# vendored in this repo as mozilla-release-key.asc. +# key check (Mozilla rolls signing subkeys ~every 2 years): +# https://archive.mozilla.org/pub/firefox/releases//KEY + +FIREFOX_VERSION=$(wget -qO- https://product-details.mozilla.org/1.0/firefox_versions.json | grep -oE '"LATEST_FIREFOX_VERSION": *"[^"]+"' | cut -d'"' -f4) +test -n "$FIREFOX_VERSION" +echo "Installing Firefox $FIREFOX_VERSION" + +cd /tmp +wget -q "https://archive.mozilla.org/pub/firefox/releases/$FIREFOX_VERSION/linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.xz" -O firefox.tar.xz +wget -q "https://archive.mozilla.org/pub/firefox/releases/$FIREFOX_VERSION/SHA256SUMS" -O SHA256SUMS +wget -q "https://archive.mozilla.org/pub/firefox/releases/$FIREFOX_VERSION/SHA256SUMS.asc" -O SHA256SUMS.asc + +GNUPGHOME=$(mktemp -d) +export GNUPGHOME +gpg -q --import /tmp/mozilla-release-key.asc +gpg --verify SHA256SUMS.asc SHA256SUMS + +FIREFOX_HASH=$(grep " linux-x86_64/en-US/firefox-$FIREFOX_VERSION.tar.xz\$" SHA256SUMS | cut -d' ' -f1) +echo "$FIREFOX_HASH firefox.tar.xz" | sha256sum -c + +tar xJf firefox.tar.xz +mv /tmp/firefox /opt/firefox-evergreen + +rm -rf "$GNUPGHOME" /tmp/firefox.tar.xz /tmp/SHA256SUMS /tmp/SHA256SUMS.asc /tmp/mozilla-release-key.asc diff --git a/image/discourse_test/mozilla-release-key.asc b/image/discourse_test/mozilla-release-key.asc new file mode 100644 index 000000000..5f9bba401 --- /dev/null +++ b/image/discourse_test/mozilla-release-key.asc @@ -0,0 +1,453 @@ +This file contains the public PGP key that is used to sign builds and +artifacts of Mozilla projects (such as Firefox and Thunderbird). + +Please realize that this file itself or the public key servers may be +compromised. You are encouraged to validate the authenticity of these +keys in an out-of-band manner. + +gpg --show-keys < KEY + +pub rsa4096 2015-07-17 [SC] + 14F26682D0916CDD81E37B6D61B7B526D98F0353 +uid Mozilla Software Releases +sub rsa4096 2021-05-17 [S] [expired: 2023-05-17] +sub rsa4096 2015-07-17 [S] [expired: 2017-07-16] +sub rsa4096 2017-06-22 [S] [expired: 2019-06-22] +sub rsa4096 2019-05-30 [S] [expired: 2021-05-29] +sub rsa4096 2023-05-05 [S] [expires: 2025-05-04] +sub rsa4096 2025-03-13 [S] [expires: 2027-03-13] + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=3/pg +-----END PGP PUBLIC KEY BLOCK-----