diff --git a/.nvmrc b/.nvmrc
index 3f430af82..9a2a0e219 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v18
+v20
diff --git a/backend/docker/Dockerfile b/backend/docker/Dockerfile
index fc3656b58..9262b703e 100644
--- a/backend/docker/Dockerfile
+++ b/backend/docker/Dockerfile
@@ -10,7 +10,7 @@
 #    DOCKER_BUILDKIT=1 docker build -f docker/Dockerfile .
 
 ## Stage 0: Base image with only yarn and package.json
-FROM docker.io/node:19-alpine@sha256:53741c7511b1836b5eb7e788a7b399c058b0b549f205d2c6af831ec1a9a81c31 as base
+FROM docker.io/node:20-alpine@sha256:cc4e8f3d78a276fa05eae1803b6f8cbb43145441f54c828ab14e0c19dd95c6fd as base
 # Add tini to handle signals
 # https://github.com/nodejs/docker-node/blob/main/docs/BestPractices.md#handling-kernel-signals
 RUN apk add --no-cache tini
diff --git a/frontend/docker/Dockerfile b/frontend/docker/Dockerfile
index 2feda08cc..5c598a1f1 100644
--- a/frontend/docker/Dockerfile
+++ b/frontend/docker/Dockerfile
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: CC-BY-SA-4.0
 
 # BASE
-FROM docker.io/node:18-alpine@sha256:ca5d399560a9d239cbfa28eec00417f1505e5e108f3ec6938d230767eaa81f61 AS base
+FROM docker.io/node:20-alpine@sha256:cc4e8f3d78a276fa05eae1803b6f8cbb43145441f54c828ab14e0c19dd95c6fd AS base
 RUN apk add --no-cache tini
 ENTRYPOINT ["tini", "--"]