From 0a506aeaaeaab4208466a9295d72a903bae6d4e8 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:52:57 +0200 Subject: [PATCH 1/7] Upgrade Node.js to version 24 --- .github/workflows/build-code.yml | 2 +- .nvmrc | 2 +- DEVELOPMENT.md | 2 +- Dockerfile | 4 ++-- package-lock.json | 18 +++++++++--------- package.json | 4 ++-- tsconfig.base.json | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build-code.yml b/.github/workflows/build-code.yml index bd5d1efdc..dfef9e74e 100644 --- a/.github/workflows/build-code.yml +++ b/.github/workflows/build-code.yml @@ -13,7 +13,7 @@ jobs: strategy: matrix: node_version: - - 22.22.1 + - 24.19.0 steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.nvmrc b/.nvmrc index 53d1c14db..54c65116f 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v22 +v24 diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 5b1b36afb..a4f7ff0f8 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -5,7 +5,7 @@ ### Prerequisites - [Docker](https://www.docker.com/products/docker-desktop) -- [Node.js](https://nodejs.org/en/download) (version `>=22.18.0`) +- [Node.js](https://nodejs.org/en/download) (version `>=24.19.0`) - Create a local copy of this Git repository (clone) - Copy the file `.env.dev` to `.env` and populate it with your data (`cp .env.dev .env`) diff --git a/Dockerfile b/Dockerfile index e73cd73e6..a2331ec62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM --platform=$BUILDPLATFORM node:22-slim AS builder +FROM --platform=$BUILDPLATFORM node:24-slim AS builder # Build application and add additional files WORKDIR /ghostfolio @@ -49,7 +49,7 @@ COPY package.json /ghostfolio/dist/apps/api/ RUN npm run database:generate-typings # Image to run, copy everything needed from builder -FROM node:22-slim +FROM node:24-slim LABEL org.opencontainers.image.source="https://github.com/ghostfolio/ghostfolio" ENV NODE_ENV=production diff --git a/package-lock.json b/package-lock.json index 270171969..e9c0e33f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -141,7 +141,7 @@ "@types/jest": "30.0.0", "@types/jsonpath": "0.2.4", "@types/lodash": "4.17.24", - "@types/node": "22.15.17", + "@types/node": "24.13.3", "@types/papaparse": "5.5.2", "@types/passport-google-oauth20": "2.0.17", "@types/passport-openidconnect": "0.1.3", @@ -171,7 +171,7 @@ "webpack-cli": "7.1.0" }, "engines": { - "node": ">=22.18.0" + "node": ">=24.19.0" } }, "node_modules/@adobe/css-tools": { @@ -12257,12 +12257,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz", - "integrity": "sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw==", + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", + "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/oauth": { @@ -32871,9 +32871,9 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index a6c09c1d0..3df800d0d 100644 --- a/package.json +++ b/package.json @@ -185,7 +185,7 @@ "@types/jest": "30.0.0", "@types/jsonpath": "0.2.4", "@types/lodash": "4.17.24", - "@types/node": "22.15.17", + "@types/node": "24.13.3", "@types/papaparse": "5.5.2", "@types/passport-google-oauth20": "2.0.17", "@types/passport-openidconnect": "0.1.3", @@ -215,6 +215,6 @@ "webpack-cli": "7.1.0" }, "engines": { - "node": ">=22.18.0" + "node": ">=24.19.0" } } diff --git a/tsconfig.base.json b/tsconfig.base.json index f831040a0..d012da282 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -12,7 +12,7 @@ "target": "es2015", "module": "esnext", "typeRoots": ["node_modules/@types"], - "lib": ["es2017", "dom"], + "lib": ["dom", "es2022"], "skipLibCheck": true, "skipDefaultLibCheck": true, "baseUrl": ".", From 0998ed8ff4d97fee1a4616e9fffbbde1b952786c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:53:42 +0200 Subject: [PATCH 2/7] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f55eb8e7e..1ea513023 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved the support to edit an activity in the holding detail dialog from experimental to general availability - Removed the deprecated `isDraft` attribute of the activity in favor of the _Draft_ tag - Improved the language localization for German (`de`) +- Upgraded `Node.js` from version `22` to `24` (`Dockerfile`) +- Upgraded the `Node.js` engine from version `>=22.18.0` to `>=24.19.0` (`package.json`) ## 3.48.1 - 2026-08-11 From f37b9eede332db80d3effeca354705948ea96ef1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:56:00 +0200 Subject: [PATCH 3/7] Update changelog --- CHANGELOG.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ea513023..d3a827d92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Changed + +- Upgraded `Node.js` from version `22` to `24` (`Dockerfile`) +- Upgraded the `Node.js` engine from version `>=22.18.0` to `>=24.19.0` (`package.json`) + ## 3.49.0 - 2026-08-12 ### Changed @@ -17,8 +24,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Moved the support to edit an activity in the holding detail dialog from experimental to general availability - Removed the deprecated `isDraft` attribute of the activity in favor of the _Draft_ tag - Improved the language localization for German (`de`) -- Upgraded `Node.js` from version `22` to `24` (`Dockerfile`) -- Upgraded the `Node.js` engine from version `>=22.18.0` to `>=24.19.0` (`package.json`) ## 3.48.1 - 2026-08-11 From 1e73fc861f75734bac0485c7170b17100c492f47 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 12 Aug 2026 17:56:55 +0200 Subject: [PATCH 4/7] Upgrade Node.js to version 24 --- package-lock.json | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/package-lock.json b/package-lock.json index e9c0e33f7..a0d554e90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6246,7 +6246,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6260,7 +6259,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6274,7 +6272,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6288,7 +6285,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6302,7 +6298,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6316,7 +6311,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6330,7 +6324,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -7206,24 +7199,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@nestjs/schematics/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@nestjs/schematics/node_modules/cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -7311,22 +7286,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@nestjs/schematics/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@nestjs/schematics/node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", From 5bcf46ac1f6c39f9b5b41e028f42348609a0b802 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 12 Aug 2026 20:30:53 +0200 Subject: [PATCH 5/7] Upgrade Node.js to version 24 --- .github/workflows/docker-image.yml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 6b4601733..4436c8688 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -42,7 +42,7 @@ jobs: uses: docker/build-push-action@v3 with: context: . - platforms: linux/amd64,linux/arm/v7,linux/arm64 + platforms: linux/amd64,linux/arm64 push: ${{ github.event_name != 'pull_request' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.output.labels }} diff --git a/README.md b/README.md index 69192124f..24d7e9608 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ The frontend is built with [Angular](https://angular.dev) and uses [Angular Mate ## Self-hosting -We provide official container images hosted on [Docker Hub](https://hub.docker.com/r/ghostfolio/ghostfolio) for `linux/amd64`, `linux/arm/v7` and `linux/arm64`. +We provide official container images hosted on [Docker Hub](https://hub.docker.com/r/ghostfolio/ghostfolio) for `linux/amd64` and `linux/arm64`. Find answers to commonly asked questions about self-hosting Ghostfolio in our [Frequently Asked Questions (FAQ)](https://ghostfol.io/en/faq/self-hosting) section. From 3059d8eafca905ec68db13e39e06e180a10cef56 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 12 Aug 2026 20:31:20 +0200 Subject: [PATCH 6/7] Update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3a827d92..611849b7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,9 +9,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Removed the support for the `linux/arm/v7` platform of the _Docker_ image - Upgraded `Node.js` from version `22` to `24` (`Dockerfile`) - Upgraded the `Node.js` engine from version `>=22.18.0` to `>=24.19.0` (`package.json`) +### Todo + +- **Breaking Change**: The `linux/arm/v7` (32-bit `ARM`) platform of the _Docker_ image is no longer supported, since `Node.js` version `24` does not provide builds for it. Please switch to a 64-bit operating system (`linux/arm64`) to keep using _Ghostfolio_ on `ARM` devices. + ## 3.49.0 - 2026-08-12 ### Changed From ce0032c974290bf080b6c99327b680193f8a09f3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 12 Aug 2026 21:05:11 +0200 Subject: [PATCH 7/7] Upgrade Node.js to version 24 --- Dockerfile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Dockerfile b/Dockerfile index a2331ec62..1c52650b5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -40,6 +40,12 @@ WORKDIR /ghostfolio/dist/apps/api COPY ./package-lock.json /ghostfolio/dist/apps/api/ RUN npm install + +# The Prisma CLI is a dev dependency and therefore not part of the generated +# package.json, but prisma generate needs to resolve it from the same +# node_modules directory as @prisma/client +RUN npm install prisma@$(node -p "require('/ghostfolio/package.json').devDependencies.prisma") + COPY .config /ghostfolio/dist/apps/api/.config/ COPY prisma /ghostfolio/dist/apps/api/prisma/