Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
399be36
Add iputils-ping to debian
hardillb Jul 19, 2024
81af525
Merge branch 'node-red:dev' into dev
hardillb Jun 11, 2025
7a37e1d
Merge branch 'node-red:dev' into dev
hardillb Jun 11, 2025
432037f
Merge branch 'node-red:dev' into dev
hardillb Jun 26, 2025
1f906ad
Merge branch 'node-red:dev' into dev
hardillb Jul 27, 2025
b8aaa18
Bump debian to Bookworm
hardillb Jul 27, 2025
8784843
Sync master back to dev (#491)
hardillb Jul 29, 2025
b256886
Merge branch 'master' into dev
hardillb Dec 4, 2025
472d29f
Merge branch 'dev' of github.com:hardillb/node-red-docker into dev
hardillb Dec 4, 2025
3cc0aad
Update README and NodeJS version
hardillb Dec 4, 2025
2349d58
Update README.md
knolleary Dec 5, 2025
3d6b569
Update README.md
knolleary Dec 5, 2025
5fef381
Merge pull request #496 from hardillb/5.0-beta-setup
knolleary Dec 5, 2025
c0552f1
Remove Arm 32 containers (#497)
hardillb Dec 5, 2025
2720d82
Bump version to 5.0.0-beta.0 in package.json
hardillb Dec 5, 2025
dc7be9b
Update for 5.0.0-beta.1 (#498)
hardillb Dec 12, 2025
90971c8
bump for beta
knolleary Jan 21, 2026
a354e27
Merge pull request #501 from node-red/rel5b2
knolleary Jan 21, 2026
f3840cd
Bump for 5.beta.3
knolleary Mar 5, 2026
606e7e1
Merge pull request #505 from node-red/rel50b3
knolleary Mar 5, 2026
196390e
Update README to remove unsupported architectures
hardillb Mar 6, 2026
be3a6b7
Merge pull request #509 from node-red/hardillb-patch-7
knolleary Mar 10, 2026
2301a86
Update Node-RED version to 5.0.0-beta.4
knolleary Mar 17, 2026
51821c1
Bump version to 5.0.0-beta.4 in package.json
knolleary Mar 17, 2026
50f0f7b
Update Node-RED version to 5.0.0-beta.5
knolleary Apr 16, 2026
d56b2bc
Update version to 5.0.0-beta.5 in package.json
knolleary Apr 16, 2026
882b26d
Merge pull request #512 from node-red/knolleary-patch-1
knolleary Apr 16, 2026
fef0e30
Bump for beta.6
knolleary Apr 30, 2026
3ac548e
Merge pull request #514 from node-red/rel5b6
knolleary Apr 30, 2026
da8602f
Merge branch 'dev' of github.com:hardillb/node-red-docker into dev
hardillb May 4, 2026
65924a5
Tidy up dev for merging into master for 5.0.0 release
hardillb May 23, 2026
3d18a9b
Merge pull request #518 from hardillb/dev-5.0.0-release
knolleary Jun 9, 2026
fa2298a
Merge branch 'master' into dev
hardillb Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .docker/Dockerfile.alpine
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ARG NODE_VERSION=20
ARG NODE_VERSION=24
ARG OS=alpine

#### Stage BASE ########################################################################################################
Expand Down
4 changes: 2 additions & 2 deletions .docker/Dockerfile.debian
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ARG NODE_VERSION=20
ARG OS=bookworm-slim
ARG NODE_VERSION=24
ARG OS=trixie-slim

#### Stage BASE ########################################################################################################
FROM node:${NODE_VERSION}-${OS} AS base
Expand Down
49 changes: 19 additions & 30 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
alpine:
env:
# Setting the defaults up front
LATEST_NODE: 20
LATEST_NODE: 24
DEFAULT_IMAGE: nodered/node-red
GH_IMAGE: ghcr.io/node-red/node-red
DEV_IMAGE: nodered/node-red-dev
Expand All @@ -30,20 +30,20 @@ jobs:
strategy:
max-parallel: 2
matrix:
node: [18, 20, 22]
node: [24]
suffix: ["", "-minimal"]

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
-
name: Checkout
uses: actions/checkout@v4.1.2
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Show Env
run: env
-
name: Docker Metadata
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
with:
flavor: |
latest=false
Expand All @@ -57,7 +57,7 @@ jobs:

-
name: Setup QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
with:
platforms: arm64
-
Expand All @@ -78,7 +78,7 @@ jobs:
port: 2023
-
name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
with:
append: |
- endpoint: ssh://nr@${{ secrets.SSH_REMOTE_HOST }}:2023
Expand Down Expand Up @@ -155,18 +155,7 @@ jobs:
fi
fi

# if [[ "${{ matrix.node }}" == "18"]]; then
# echo "platforms=linux/amd64,linux/arm/v7,linux/arm64" >> $GITHUB_OUTPUT
# else
# echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
# fi

# if [[ "${{ matrix.suffix }}" == "-minimal" ]]; then
# echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT
# else
# echo "platforms=linux/amd64,linux/arm/v7,linux/arm64" >> $GITHUB_OUTPUT
# fi
echo "platforms=linux/amd64,linux/arm/v7,linux/arm64" >> $GITHUB_OUTPUT
echo "platforms=linux/amd64,linux/arm64" >> $GITHUB_OUTPUT

echo $TAGS
echo "tags=$TAGS" >> $GITHUB_OUTPUT
Expand All @@ -182,21 +171,21 @@ jobs:
# echo "::set-output name=buildVersion::$VERSION"
-
name: Login to DockerHub
uses: docker/login-action@v3
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and push
id: build-push
uses: docker/build-push-action@v5
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
platforms: ${{ steps.nrVersion.outputs.platforms }}
Expand All @@ -215,7 +204,7 @@ jobs:
debian:
env:
# Setting the defaults up front
LATEST_NODE: 20
LATEST_NODE: 24
DEFAULT_IMAGE: nodered/node-red
GH_IMAGE: ghcr.io/node-red/node-red
DEV_IMAGE: nodered/node-red-dev
Expand All @@ -224,20 +213,20 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4.1.2
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v3.7.0
with:
image: tonistiigi/binfmt:qemu-v7.0.0-28
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3.11.1
- name: Login to DockerHub
uses: docker/login-action@v3
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
Expand All @@ -248,7 +237,7 @@ jobs:
run : echo "date=$(date +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
- name: Docker Metadata
id: meta
uses: docker/metadata-action@v5
uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051 # v5.10.0
with:
flavor: |
latest=false
Expand Down Expand Up @@ -318,10 +307,10 @@ jobs:

- name: Build and push
id: build-push
uses: docker/build-push-action@v5
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v6.18.0
with:
context: .
platforms: linux/amd64, linux/arm64, linux/arm/v7
platforms: linux/amd64, linux/arm64
file: .docker/Dockerfile.debian
push: ${{ steps.nrVersion.outputs.push }}
build-args: |
Expand Down
80 changes: 18 additions & 62 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Let's dissect that command:
-p 1880:1880 - connect local port 1880 to the exposed internal port 1880
-v node_red_data:/data - mount the host node_red_data directory to the container /data directory so any changes made to flows are persisted
--name mynodered - give this machine a friendly local name
nodered/node-red - the image to base it on - currently Node-RED v4.1.11
nodered/node-red - the image to base it on - currently Node-RED v5.0.0



Expand All @@ -37,9 +37,9 @@ Running that command should give a terminal window with a running instance of No
Welcome to Node-RED
===================

10 Oct 12:57:10 - [info] Node-RED version: v4.1.11
10 Oct 12:57:10 - [info] Node.js version: v18.19.0
10 Oct 12:57:10 - [info] Linux 6.6.13-100.fc38.x86_64 x64 LE
10 Oct 12:57:10 - [info] Node-RED version: v5.0.0
10 Oct 12:57:10 - [info] Node.js version: v24.11.1
10 Oct 12:57:10 - [info] Linux 6.17.5-200.fc42.x86_64 x64 LE
10 Oct 12:57:11 - [info] Loading palette nodes
10 Oct 12:57:16 - [info] Settings file : /data/settings.js
10 Oct 12:57:16 - [info] Context store : 'default' [module=memory]
Expand Down Expand Up @@ -114,79 +114,35 @@ Using Alpine Linux reduces the built image size, but removes standard dependenci

The following table shows the variety of provided Node-RED images.

| **Tag** |**Node**| **Arch** | **Python** |**Dev**| **Base Image** |
|----------------------------|--------|----------|------------|-------|----------------------------|
| 4.1.11-18 | 18 | amd64 | 3.x | yes | amd64/node:18-alpine |
| | 18 | arm32v7 | 3.x | yes | arm32v7/node:18-alpine |
| | 18 | arm64v8 | 3.x | yes | arm64v8/node:18-alpine |
| | | | | | |
| 4.1.11-18-minimal | 18 | amd64 | no | no | amd64/node:18-alpine |
| | 18 | arm32v7 | no | no | arm32v7/node:18-alpine |
| | 18 | arm64v8 | no | no | arm64v8/node:18-alpine |

| **Tag** |**Node**| **Arch** | **Python** |**Dev**| **Base Image** |
|----------------------------|--------|----------|------------|-------|----------------------------|
| 4.1.11-20 | 20 | amd64 | 3.x | yes | amd64/node:20-alpine |
| | 20 | arm32v7 | 3.x | yes | arm32v7/node:20-alpine |
| | 20 | arm64v8 | 3.x | yes | arm64v8/node:20-alpine |
| | | | | | |
| 4.1.11-20-minimal | 20 | amd64 | no | no | amd64/node:20-alpine |
| | 20 | arm32v7 | no | no | arm32v7/node:20-alpine |
| | 20 | arm64v8 | no | no | arm64v8/node:20-alpine |
| | | | | | |
| 4.1.11-debian | 20 | amd64 | 3.x | yes | amd64/node:20-buster-slim |
| | 20 | arm32v7 | 3.x | yes | amd64/node:20-buster-slim |
| | 20 | arm64v8 | 3.x | yes | amd64/node:20-buster-slim |

| **Tag** |**Node**| **Arch** | **Python** |**Dev**| **Base Image** |
|----------------------------|--------|----------|------------|-------|----------------------------|
| 4.1.11-22 | 22 | amd64 | 3.x | yes | amd64/node:22-alpine |
| | 22 | arm32v7 | 3.x | yes | arm32v7/node:22-alpine |
| | 22 | arm64v8 | 3.x | yes | arm64v8/node:22-alpine |
| | | | | | |
| 4.1.11-22-minimal | 22 | amd64 | no | no | amd64/node:22-alpine |
| | 22 | arm32v7 | no | no | arm32v7/node:22-alpine |
| | 22 | arm64v8 | no | no | arm64v8/node:22-alpine |

| **Tag** |**Node**| **Arch** | **Python** |**Dev**| **Base Image** |
|:---------------------------|:------:|:--------:|:----------:|:-----:|:-----------------------------|
| 5.0.0-24 | 24 | amd64 | 3.x | yes | amd64/node:24-alpine |
| | 24 | arm64v8 | 3.x | yes | arm64v8/node:24-alpine |
| | | | | | |
| 5.0.0-24-minimal | 24 | amd64 | no | no | amd64/node:24-alpine |
| | 24 | arm64v8 | no | no | arm64v8/node:24-alpine |
| | | | | | |
| 5.0.0-debian | 24 | amd64 | 3.x | yes | amd64/node:24-trixie-slim |
| | 24 | arm64v8 | 3.x | yes | arm64v8/node:24-trixie-slim |

- All images have bash, tzdata, nano, curl, git, openssl and openssh-client pre-installed to support Node-RED's Projects feature.

## Manifest Lists
The following table shows the provided Manifest Lists.

| **Tag** | **Node-RED Base Image** |
|----------------------------------------|--------------------------------------------|
| latest, 4.1.11, | nodered/node-red:4.1.11-20 |
| latest-20, 4.1.11-20 | |
| | |
| | |
| latest-minimal, 4.1.11-minimal, | nodered/node-red:4.1.11-20-minimal |
| latest-20-minimal, 4.1.11-20-minimal | |
| | |
| latest-debian | nodered/node-red:latest-debian |


| **Tag** | **Node-RED Base Image** |
|----------------------------------------|--------------------------------------------|
| latest-18, 4.1.11-18 | nodered/node-red:4.1.11-18 |
| | |
| latest-18-minimal, 4.1.11-18-minimal | nodered/node-red:4.1.11-18-minimal |


| **Tag** | **Node-RED Base Image** |
|----------------------------------------|--------------------------------------------|
| latest-22, 4.1.11-22 | nodered/node-red:4.1.11-22 |
| | |
| latest-22-minimal, 4.1.11-22-minimal | nodered/node-red:4.1.11-22-minimal

| latest, latest-24, 5.0.0-24 | nodered/node-red:5.0.0-24 |
| latest-24-minimal, 5.0.0-24-minimal | nodered/node-red:5.0.0.6-24-minimal |

With the support of Docker manifest list, there is no need to explicitly add the tag for the architecture to use.
When a docker run command or docker service command or docker stack command is executed, docker checks which architecture is required and verifies if it is available in the docker repository. If it does, docker pulls the matching image for it.

Therefore all tags regarding Raspberry PI's are dropped.

For example: suppose you are running on a Raspberry PI 3B, which has `arm32v7` as architecture. Then just run the following command to pull the image (tagged by `4.1.11-20`), and run the container.

For example: suppose you are running on a Raspberry PI 4B, which has `arm64v8` as architecture. Then just run the following command to pull the image (tagged by `5.0.0-24`), and run the container.

```
docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red:latest
Expand Down Expand Up @@ -325,7 +281,7 @@ Docker build process, the dependencies are installed under `/usr/src/node-red`.
The main sections to modify are

"dependencies": {
"node-red": "^4.1.11", <-- set the version of Node-RED here
"node-red": "^5.0.0", <-- set the version of Node-RED here
"node-red-dashboard": "*" <-- add any extra npm packages here
},

Expand Down
2 changes: 1 addition & 1 deletion docker-custom/Dockerfile.custom
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
ARG ARCH=amd64
ARG NODE_VERSION=20
ARG NODE_VERSION=24
ARG OS=alpine

#### Stage BASE ########################################################################################################
Expand Down
4 changes: 2 additions & 2 deletions docker-custom/Dockerfile.debian
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ARG ARCH=amd64
ARG NODE_VERSION=20
ARG OS=bookworm-slim
ARG NODE_VERSION=24
ARG OS=trixie-slim

#### Stage BASE ########################################################################################################
FROM ${ARCH}/node:${NODE_VERSION}-${OS} AS base
Expand Down
4 changes: 2 additions & 2 deletions docker-custom/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ The `docker-alpine.sh` and `docker-debian.sh` are helper scripts to build a cust

Change the build arguments as needed:

- `--build-arg ARCH=amd64` : architecture your are building for (arm32v6, arm32v7, arm64v8, amd64)
- `--build-arg NODE_VERSION=20` : NodeJS version you like to use
- `--build-arg ARCH=amd64` : architecture your are building for (arm64v8, amd64)
- `--build-arg NODE_VERSION=24` : NodeJS version you like to use
- `--build-arg NODE_RED_VERSION=${NODE_RED_VERSION}` : don't change this, ${NODE_RED_VERSION} gets populated from package.json
- `--build-arg OS=alpine` : the linux distro to use (alpine)
- `--build-arg BUILD_DATE="$(date +"%Y-%m-%dT%H:%M:%SZ")"` : don't change this
Expand Down
2 changes: 1 addition & 1 deletion docker-custom/docker-alpine.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ echo "#########################################################################"

docker build --rm --no-cache \
--build-arg ARCH=amd64 \
--build-arg NODE_VERSION=20 \
--build-arg NODE_VERSION=24 \
--build-arg NODE_RED_VERSION=${NODE_RED_VERSION} \
--build-arg OS=alpine \
--build-arg BUILD_DATE="$(date +"%Y-%m-%dT%H:%M:%SZ")" \
Expand Down
2 changes: 1 addition & 1 deletion docker-custom/docker-debian.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ echo "#########################################################################"

docker build --rm --no-cache \
--build-arg ARCH=amd64 \
--build-arg NODE_VERSION=20 \
--build-arg NODE_VERSION=24 \
--build-arg NODE_RED_VERSION=${NODE_RED_VERSION} \
--build-arg OS=bookworm-slim \
--build-arg BUILD_DATE="$(date +"%Y-%m-%dT%H:%M:%SZ")" \
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "node-red-docker",
"version": "4.1.11",
"version": "5.0.0-beta.6",

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Suggested change
"version": "5.0.0-beta.6",
"version": "5.0.0",

"description": "Low-code programming for event-driven applications",
"homepage": "http://nodered.org",
"license": "Apache-2.0",
Expand Down Expand Up @@ -29,7 +29,7 @@
}
],
"dependencies": {
"node-red": "4.1.11"
"node-red": "5.0.0"
},
"engines": {
"node": ">=18"
Expand Down