diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1a5b71e2378fe3b8676b5cf93f0a8400d8fef626..2a95a53c90720027eddd71410db110050eadd66b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,7 +17,7 @@ variables:
   # Use faster docker driver
   DOCKER_DRIVER: overlay2
   # Images
-  NODE_IMAGE: node:16-slim
+  NODE_IMAGE: node:18-slim
   # Directories
   CACHE_DIR: .caches
   REPORT_DIR: .reports
diff --git a/docker/studip/Dockerfile b/docker/studip/Dockerfile
index 0689c3acd6739c840baf4ff9d90acf259e635520..fe9fc8cb0861888914b6d016d091645a97753725 100644
--- a/docker/studip/Dockerfile
+++ b/docker/studip/Dockerfile
@@ -19,7 +19,7 @@ RUN apt update && apt install -y --no-install-recommends \
 RUN docker-php-ext-configure gd --with-jpeg --with-webp
 RUN docker-php-ext-install gettext gd zip pdo_mysql mysqli intl
 
-FROM node:16 as nodejs
+FROM node:18 as nodejs
 
 # Install node modules
 COPY . /studip
diff --git a/docker/tests/php74/Dockerfile b/docker/tests/php74/Dockerfile
index b982414bca7244cc60664b510e09020167f0bc96..17d404aa108e5641a250fb4caa8423019d0e4a85 100644
--- a/docker/tests/php74/Dockerfile
+++ b/docker/tests/php74/Dockerfile
@@ -14,8 +14,8 @@ RUN apt update && apt install -y  --no-install-recommends \
 RUN docker-php-ext-configure gd --with-jpeg --with-webp
 RUN docker-php-ext-install pdo gettext curl gd mbstring zip pdo pdo_mysql mysqli intl json
 
-# Install npm using nvm
-RUN curl -sL https://deb.nodesource.com/setup_16.x | bash -
+# Install node
+RUN curl -sL https://deb.nodesource.com/setup_18.x | bash -
 RUN apt update && apt install -y --no-install-recommends nodejs \
         curl apt-transport-https ca-certificates gnupg unzip git \
     && rm -rf /var/lib/apt/lists/*
diff --git a/docker/tests/php81/Dockerfile b/docker/tests/php81/Dockerfile
index 7d0478e72f97ab9dab00bd8d1c627aed3da21f19..ceb1d2d337bd265bd5061214cabcb38335c0d6cc 100644
--- a/docker/tests/php81/Dockerfile
+++ b/docker/tests/php81/Dockerfile
@@ -16,7 +16,7 @@ RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ --with-webp
 RUN docker-php-ext-install -j$(nproc) gd gettext intl mysqli pdo pdo_mysql zip
 
 # Install node/npm
-COPY --from=node:16-slim /usr/local/bin /usr/local/bin
+COPY --from=node:18-slim /usr/local/bin /usr/local/bin
 
 # Install composer
 COPY --from=composer /usr/bin/composer /usr/bin/composer
diff --git a/docker/tests/php82/Dockerfile b/docker/tests/php82/Dockerfile
index c8abd9de79fea833e00b14acfd4a6aed505c1e8d..eee9aad0024caff4a85ffc2e2627c5f3589422b8 100644
--- a/docker/tests/php82/Dockerfile
+++ b/docker/tests/php82/Dockerfile
@@ -16,7 +16,7 @@ RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ --with-webp
 RUN docker-php-ext-install -j$(nproc) gd gettext intl mysqli pdo pdo_mysql zip
 
 # Install node/npm
-COPY --from=node:16-slim /usr/local/bin /usr/local/bin
+COPY --from=node:18-slim /usr/local/bin /usr/local/bin
 
 # Install composer
 COPY --from=composer /usr/bin/composer /usr/bin/composer
diff --git a/docker/tests/php83/Dockerfile b/docker/tests/php83/Dockerfile
index 68d1764dee7b031e099e42a27fee72907017539d..b93795ae4f06f20e47a1b21e44ff831de2f21258 100644
--- a/docker/tests/php83/Dockerfile
+++ b/docker/tests/php83/Dockerfile
@@ -16,7 +16,7 @@ RUN docker-php-ext-configure gd --with-jpeg=/usr/include/ --with-webp
 RUN docker-php-ext-install -j$(nproc) gd gettext intl mysqli pdo_mysql zip
 
 # Install node/npm
-COPY --from=node:16-slim /usr/local/bin /usr/local/bin
+COPY --from=node:18-slim /usr/local/bin /usr/local/bin
 
 # Install composer
 COPY --from=composer /usr/bin/composer /usr/bin/composer
diff --git a/package.json b/package.json
index 3d382e5aa1a4b0e77e04f4cf8d6406f2bc5d9f99..16574bf66417b86a53ec99441cc78b1ed15a6872 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
         "url": "https://develop.studip.de/svn/studip"
     },
     "engines": {
-        "node": ">=16"
+        "node": ">=18"
     },
     "devDependencies": {
         "@axe-core/playwright": "^4.6.1",