#97

fix: move Docker image to Node 22 LTS

Openlinusxiongwants to merge intofrom

Summary

The Docker image is built on node:20-alpine. Node 20 reached end-of-life on 2026-04-30, so it does not get the October 2026 security release. That release fixes ten issues. One of them is CVE-2026-111497, an out-of-bounds write in the Brotli decoder that can lead to remote code execution. The fixed versions are 22.23.4, 24.22.1 and 26.12.1.

This PR moves all three Dockerfile stages to node:22-alpine, which currently resolves to 22.23.4. The image keeps a major-version tag, as before, so later Node 22 security releases are picked up on rebuild.

Changes

  • Dockerfile: node:20-alpine → node:22-alpine for the frontend build, backend build and runtime stages.

Why 22 and not 24

Node 22 is the smallest jump from 20 and is supported until April 2027. Moving to node:24-alpine would also fix the CVE. I can switch the PR to it if you prefer the longer support window.

Testing

All on node:22-alpine (22.23.4):

  • npm run format:check passes.
  • cd backend && npx vitest run: 49 tests pass. The sinfInjector tests need the zip binary, which the runtime image installs.
  • cd frontend && npx vitest run: 167 tests pass.
  • Frontend and backend builds pass.
  • docker build . on linux/amd64 succeeds. In the resulting container node -v reports v22.23.4, and /, /api/settings and /wisp/ return 200.