Skip to content

Node: feat: Node.js 26.11.1 - #22448

Merged
tianon merged 1 commit into
docker-library:masterfrom
nodejs:node
Oct 8, 2026
Merged

tianon merged 1 commit into
docker-library:masterfrom
nodejs:node

Conversation

@nodejs-github-bot

@nodejs-github-bot nodejs-github-bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

@github-actions

This comment has been minimized.

@MikeMcC399

This comment was marked as outdated.

@nodejs-github-bot nodejs-github-bot changed the title Node: feat: Node.js 26.11.0 Node: feat: Node.js 26.11.1 Oct 8, 2026
@github-actions

github-actions Bot commented Oct 8, 2026

Copy link
Copy Markdown
Diff for 1da0e2d:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index 1f0f693..c44138a 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -62,32 +62,32 @@ Architectures: amd64, arm64v8, ppc64le, s390x
 GitCommit: 93a7bafc324a85ac1ee461604cff87cffacb6d7a
 Directory: 24/trixie-slim
 
-Tags: 26, 26-trixie, 26.10, 26.10-trixie, 26.10.0, 26.10.0-trixie, current, current-trixie, latest, trixie
+Tags: 26, 26-trixie, 26.11, 26.11-trixie, 26.11.1, 26.11.1-trixie, current, current-trixie, latest, trixie
 Architectures: amd64, arm64v8, ppc64le, s390x
-GitCommit: 33161d6f1329b30670bd3259c8db7bbe7da072c8
+GitCommit: 108ae4a54c51371afe90401b0050f206e97b4690
 Directory: 26/trixie
 
-Tags: 26-alpine, 26-alpine3.24, 26.10-alpine, 26.10-alpine3.24, 26.10.0-alpine, 26.10.0-alpine3.24, alpine, alpine3.24, current-alpine, current-alpine3.24
+Tags: 26-alpine, 26-alpine3.24, 26.11-alpine, 26.11-alpine3.24, 26.11.1-alpine, 26.11.1-alpine3.24, alpine, alpine3.24, current-alpine, current-alpine3.24
 Architectures: amd64, arm64v8
-GitCommit: 33161d6f1329b30670bd3259c8db7bbe7da072c8
+GitCommit: 108ae4a54c51371afe90401b0050f206e97b4690
 Directory: 26/alpine3.24
 
-Tags: 26-alpine3.23, 26.10-alpine3.23, 26.10.0-alpine3.23, alpine3.23, current-alpine3.23
+Tags: 26-alpine3.23, 26.11-alpine3.23, 26.11.1-alpine3.23, alpine3.23, current-alpine3.23
 Architectures: amd64, arm64v8
-GitCommit: 33161d6f1329b30670bd3259c8db7bbe7da072c8
+GitCommit: 108ae4a54c51371afe90401b0050f206e97b4690
 Directory: 26/alpine3.23
 
-Tags: 26-bookworm, 26.10-bookworm, 26.10.0-bookworm, bookworm, current-bookworm
+Tags: 26-bookworm, 26.11-bookworm, 26.11.1-bookworm, bookworm, current-bookworm
 Architectures: amd64, arm64v8, ppc64le
-GitCommit: 33161d6f1329b30670bd3259c8db7bbe7da072c8
+GitCommit: 108ae4a54c51371afe90401b0050f206e97b4690
 Directory: 26/bookworm
 
-Tags: 26-bookworm-slim, 26.10-bookworm-slim, 26.10.0-bookworm-slim, bookworm-slim, current-bookworm-slim
+Tags: 26-bookworm-slim, 26.11-bookworm-slim, 26.11.1-bookworm-slim, bookworm-slim, current-bookworm-slim
 Architectures: amd64, arm64v8, ppc64le
-GitCommit: 33161d6f1329b30670bd3259c8db7bbe7da072c8
+GitCommit: 108ae4a54c51371afe90401b0050f206e97b4690
 Directory: 26/bookworm-slim
 
-Tags: 26-slim, 26-trixie-slim, 26.10-slim, 26.10-trixie-slim, 26.10.0-slim, 26.10.0-trixie-slim, current-slim, current-trixie-slim, slim, trixie-slim
+Tags: 26-slim, 26-trixie-slim, 26.11-slim, 26.11-trixie-slim, 26.11.1-slim, 26.11.1-trixie-slim, current-slim, current-trixie-slim, slim, trixie-slim
 Architectures: amd64, arm64v8, ppc64le, s390x
-GitCommit: 33161d6f1329b30670bd3259c8db7bbe7da072c8
+GitCommit: 108ae4a54c51371afe90401b0050f206e97b4690
 Directory: 26/trixie-slim
diff --git a/_bashbrew-list b/_bashbrew-list
index 4a6b6fe..46999c9 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -61,24 +61,24 @@ node:26-bookworm-slim
 node:26-slim
 node:26-trixie
 node:26-trixie-slim
-node:26.10
-node:26.10-alpine
-node:26.10-alpine3.23
-node:26.10-alpine3.24
-node:26.10-bookworm
-node:26.10-bookworm-slim
-node:26.10-slim
-node:26.10-trixie
-node:26.10-trixie-slim
-node:26.10.0
-node:26.10.0-alpine
-node:26.10.0-alpine3.23
-node:26.10.0-alpine3.24
-node:26.10.0-bookworm
-node:26.10.0-bookworm-slim
-node:26.10.0-slim
-node:26.10.0-trixie
-node:26.10.0-trixie-slim
+node:26.11
+node:26.11-alpine
+node:26.11-alpine3.23
+node:26.11-alpine3.24
+node:26.11-bookworm
+node:26.11-bookworm-slim
+node:26.11-slim
+node:26.11-trixie
+node:26.11-trixie-slim
+node:26.11.1
+node:26.11.1-alpine
+node:26.11.1-alpine3.23
+node:26.11.1-alpine3.24
+node:26.11.1-bookworm
+node:26.11.1-bookworm-slim
+node:26.11.1-slim
+node:26.11.1-trixie
+node:26.11.1-trixie-slim
 node:alpine
 node:alpine3.23
 node:alpine3.24
diff --git a/node_current-alpine3.23/Dockerfile b/node_current-alpine3.23/Dockerfile
index 8f209ab..4ff9087 100644
--- a/node_current-alpine3.23/Dockerfile
+++ b/node_current-alpine3.23/Dockerfile
@@ -1,43 +1,25 @@
 FROM alpine:3.23
 
-ENV NODE_VERSION=26.10.0
+ENV NODE_VERSION=26.11.1
 
 RUN addgroup -g 1000 node \
     && adduser -u 1000 -G node -s /bin/sh -D node \
     && apk add --no-cache \
+        libatomic \
         libstdc++ \
     && apk add --no-cache --virtual .build-deps \
+        gnupg \
         curl \
     && ARCH= OPENSSL_ARCH='linux*' && alpineArch="$(apk --print-arch)" \
       && case "${alpineArch##*-}" in \
-        x86_64) ARCH='x64' CHECKSUM="e91679de73f48e4f107fc968bec351dea6676c7f54af004280a7baaf5c6d88c5" OPENSSL_ARCH=linux-x86_64;; \
+        x86_64) ARCH='x64' OPENSSL_ARCH=linux-x86_64;; \
         aarch64) OPENSSL_ARCH=linux-aarch64;; \
         *) echo "unsupported architecture"; exit 1 ;; \
       esac \
-  && if [ -n "${CHECKSUM}" ]; then \
-    set -eu; \
-    curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \
-    echo "$CHECKSUM  node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
-      && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
-      && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
-  else \
-    echo "Building from source" \
-    # backup build
-    && apk add --no-cache --virtual .build-deps-full \
-        binutils-gold \
-        g++ \
-        gcc \
-        gnupg \
-        libgcc \
-        linux-headers \
-        make \
-        python3 \
-        py-setuptools \
-        rust \
-        cargo \
     # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
     && export GNUPGHOME="$(mktemp -d)" \
     # gpg keys listed at https://github.com/nodejs/node#release-keys
+    && set -ex \
     && for key in \
       5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 \
       DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \
@@ -51,6 +33,29 @@ RUN addgroup -g 1000 node \
         { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || \
         { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; \
     done \
+  && if [ "$ARCH" = "x64" ]; then \
+    curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
+    && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
+    && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
+    && gpgconf --kill all \
+    && rm -rf "$GNUPGHOME" \
+    && grep " node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
+    && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
+    && rm "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
+    && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
+  else \
+    echo "Building from source" \
+    && apk add --no-cache --virtual .build-deps-full \
+        binutils-gold \
+        g++ \
+        gcc \
+        libgcc \
+        linux-headers \
+        make \
+        python3 \
+        py-setuptools \
+        rust \
+        cargo \
     && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
     && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
     && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
@@ -67,7 +72,6 @@ RUN addgroup -g 1000 node \
     && rm -Rf "node-v$NODE_VERSION" \
     && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
   fi \
-  && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
   # Remove unused OpenSSL headers to save ~34MB. See this NodeJS issue: https://github.com/nodejs/node/issues/46451
   && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; \
   && apk del .build-deps \
diff --git a/node_current-alpine3.24/Dockerfile b/node_current-alpine3.24/Dockerfile
index dd62409..3fb20c8 100644
--- a/node_current-alpine3.24/Dockerfile
+++ b/node_current-alpine3.24/Dockerfile
@@ -1,43 +1,25 @@
 FROM alpine:3.24
 
-ENV NODE_VERSION=26.10.0
+ENV NODE_VERSION=26.11.1
 
 RUN addgroup -g 1000 node \
     && adduser -u 1000 -G node -s /bin/sh -D node \
     && apk add --no-cache \
+        libatomic \
         libstdc++ \
     && apk add --no-cache --virtual .build-deps \
+        gnupg \
         curl \
     && ARCH= OPENSSL_ARCH='linux*' && alpineArch="$(apk --print-arch)" \
       && case "${alpineArch##*-}" in \
-        x86_64) ARCH='x64' CHECKSUM="e91679de73f48e4f107fc968bec351dea6676c7f54af004280a7baaf5c6d88c5" OPENSSL_ARCH=linux-x86_64;; \
+        x86_64) ARCH='x64' OPENSSL_ARCH=linux-x86_64;; \
         aarch64) OPENSSL_ARCH=linux-aarch64;; \
         *) echo "unsupported architecture"; exit 1 ;; \
       esac \
-  && if [ -n "${CHECKSUM}" ]; then \
-    set -eu; \
-    curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \
-    echo "$CHECKSUM  node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \
-      && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
-      && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
-  else \
-    echo "Building from source" \
-    # backup build
-    && apk add --no-cache --virtual .build-deps-full \
-        binutils-gold \
-        g++ \
-        gcc \
-        gnupg \
-        libgcc \
-        linux-headers \
-        make \
-        python3 \
-        py-setuptools \
-        rust \
-        cargo \
     # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
     && export GNUPGHOME="$(mktemp -d)" \
     # gpg keys listed at https://github.com/nodejs/node#release-keys
+    && set -ex \
     && for key in \
       5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 \
       DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 \
@@ -51,6 +33,29 @@ RUN addgroup -g 1000 node \
         { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } || \
         { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ; \
     done \
+  && if [ "$ARCH" = "x64" ]; then \
+    curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
+    && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
+    && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
+    && gpgconf --kill all \
+    && rm -rf "$GNUPGHOME" \
+    && grep " node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz\$" SHASUMS256.txt | sha256sum -c - \
+    && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
+    && rm "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt \
+    && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \
+  else \
+    echo "Building from source" \
+    && apk add --no-cache --virtual .build-deps-full \
+        binutils-gold \
+        g++ \
+        gcc \
+        libgcc \
+        linux-headers \
+        make \
+        python3 \
+        py-setuptools \
+        rust \
+        cargo \
     && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \
     && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \
     && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \
@@ -67,7 +72,6 @@ RUN addgroup -g 1000 node \
     && rm -Rf "node-v$NODE_VERSION" \
     && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \
   fi \
-  && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \
   # Remove unused OpenSSL headers to save ~34MB. See this NodeJS issue: https://github.com/nodejs/node/issues/46451
   && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \; \
   && apk del .build-deps \
diff --git a/node_current-bookworm-slim/Dockerfile b/node_current-bookworm-slim/Dockerfile
index 1845303..5523829 100644
--- a/node_current-bookworm-slim/Dockerfile
+++ b/node_current-bookworm-slim/Dockerfile
@@ -3,7 +3,7 @@ FROM debian:bookworm-slim
 RUN groupadd --gid 1000 node \
   && useradd --uid 1000 --gid node --shell /bin/bash --create-home node
 
-ENV NODE_VERSION=26.10.0
+ENV NODE_VERSION=26.11.1
 
 RUN ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" \
     && case "${dpkgArch##*-}" in \
@@ -13,7 +13,6 @@ RUN ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" \
       *) echo "unsupported architecture"; exit 1 ;; \
     esac \
     && set -ex \
-    # libatomic1 for arm
     && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends \
     && rm -rf /var/lib/apt/lists/* \
     # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
diff --git a/node_current-bookworm/Dockerfile b/node_current-bookworm/Dockerfile
index b946c0e..695ea3a 100644
--- a/node_current-bookworm/Dockerfile
+++ b/node_current-bookworm/Dockerfile
@@ -3,7 +3,7 @@ FROM buildpack-deps:bookworm
 RUN groupadd --gid 1000 node \
   && useradd --uid 1000 --gid node --shell /bin/bash --create-home node
 
-ENV NODE_VERSION=26.10.0
+ENV NODE_VERSION=26.11.1
 
 RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \
   && case "${dpkgArch##*-}" in \
diff --git a/node_trixie-slim/Dockerfile b/node_trixie-slim/Dockerfile
index 7332081..1f94a3e 100644
--- a/node_trixie-slim/Dockerfile
+++ b/node_trixie-slim/Dockerfile
@@ -3,7 +3,7 @@ FROM debian:trixie-slim
 RUN groupadd --gid 1000 node \
   && useradd --uid 1000 --gid node --shell /bin/bash --create-home node
 
-ENV NODE_VERSION=26.10.0
+ENV NODE_VERSION=26.11.1
 
 RUN ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" \
     && case "${dpkgArch##*-}" in \
@@ -14,7 +14,6 @@ RUN ARCH= OPENSSL_ARCH= && dpkgArch="$(dpkg --print-architecture)" \
       *) echo "unsupported architecture"; exit 1 ;; \
     esac \
     && set -ex \
-    # libatomic1 for arm
     && apt-get update && apt-get install -y ca-certificates curl wget gnupg dirmngr xz-utils libatomic1 --no-install-recommends \
     && rm -rf /var/lib/apt/lists/* \
     # use pre-existing gpg directory, see https://github.com/nodejs/docker-node/pull/1895#issuecomment-1550389150
diff --git a/node_trixie/Dockerfile b/node_trixie/Dockerfile
index 7d83461..c1f037b 100644
--- a/node_trixie/Dockerfile
+++ b/node_trixie/Dockerfile
@@ -3,7 +3,7 @@ FROM buildpack-deps:trixie
 RUN groupadd --gid 1000 node \
   && useradd --uid 1000 --gid node --shell /bin/bash --create-home node
 
-ENV NODE_VERSION=26.10.0
+ENV NODE_VERSION=26.11.1
 
 RUN ARCH= && dpkgArch="$(dpkg --print-architecture)" \
   && case "${dpkgArch##*-}" in \

Relevant Maintainers:

@nschonni

nschonni commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

New 26.11.1 release is out, and this PR is updated

@tianon tianon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It'd be great if we could have this also embed the checksums from SHASUMS256 (since signature and checksum verify different things, but only if you don't get them from the same potentially compromised source). However, I'm not going to hold this up for that.

@tianon
tianon merged commit 5756643 into docker-library:master Oct 8, 2026
23 checks passed
@nschonni

nschonni commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

All the tar and SHASUM256 are coming from the same "official" source/folder now. If that is compromised, the only "external" bit in the images is the GPG signiture checks like you mention.
I had thought about doing what I thing you are getting at before, but I didn't pursue it.
If you think it's a good idea, it would be good to open an issue on the repo, and maybe point to one of the other official images to use as an exemplar.

@MikeMcC399
MikeMcC399 deleted the node branch October 9, 2026 05:11
@MikeMcC399

Copy link
Copy Markdown
Contributor

@tianon

It'd be great if we could have this also embed the checksums from SHASUMS256 (since signature and checksum verify different things, but only if you don't get them from the same potentially compromised source). However, I'm not going to hold this up for that.

The difference between the Dockerfile structure for Node.js 26.11.1 and Node.js 26.10.0 affects only Alpine builds, such that the linux-x64-musl build is being pulled from the official https://nodejs.org/dist site instead of from https://unofficial-builds.nodejs.org/download/release, so I'm not sure why there would suddenly be an issue with the CHECKSUM usage.

The previously embedded CHECKSUM in Alpine builds was for unofficial-builds only, not for the official builds. That one has been removed since it is no longer relevant.

Debian Dockerfile instances haven't had a CHECKSUM embedded, so there is no change in that respect between the previous release and this one.

If there is a need for improvement here, a new issue in https://github.com/nodejs/docker-node/issues would be helpful as already suggested by @nschonni

@tianon

tianon commented Oct 12, 2026

Copy link
Copy Markdown
Member

It's not a "new" issue, and not a blocker -- just a suggestion for improvement that I noticed while reviewing this.

@MikeMcC399

Copy link
Copy Markdown
Contributor

It's not a "new" issue, and not a blocker -- just a suggestion for improvement that I noticed while reviewing this.

Thanks for the clarification!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants