Problem
In the template Dockerfile, Node.js is installed by piping the NodeSource setup script into bash:
# Node.js 22 LTS
RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
Two weaknesses:
- Loose version pin.
setup_22.x pins only the major version — the subsequent apt-get install nodejs pulls the latest 22.x available at build time, so the exact Node minor/patch varies build-to-build with no record of what shipped.
- No integrity check. The setup script is fetched and executed via
curl … | bash with no checksum, so a changed or compromised script runs undetected.
Proposed change
Declare the Node.js version in .config.rde.qovery.yml — the documented source of truth for component versions in the RDE install flow (see Qovery/documentation#143). The nodejs key accepts a version string (default 22):
# .config.rde.qovery.yml
nodejs: "22" # pin to the intended major; pin tighter if the install path allows
Where the install path allows, also tighten reproducibility and integrity: pin the installed nodejs apt package to an exact version, and prefer a verified keyring-based NodeSource apt setup over piping the setup script straight into bash.
Acceptance criteria
Problem
In the template
Dockerfile, Node.js is installed by piping the NodeSource setup script intobash:Two weaknesses:
setup_22.xpins only the major version — the subsequentapt-get install nodejspulls the latest 22.x available at build time, so the exact Node minor/patch varies build-to-build with no record of what shipped.curl … | bashwith no checksum, so a changed or compromised script runs undetected.Proposed change
Declare the Node.js version in
.config.rde.qovery.yml— the documented source of truth for component versions in the RDE install flow (see Qovery/documentation#143). Thenodejskey accepts a version string (default22):Where the install path allows, also tighten reproducibility and integrity: pin the installed
nodejsapt package to an exact version, and prefer a verified keyring-based NodeSource apt setup over piping the setup script straight intobash.Acceptance criteria
.config.rde.qovery.yml, not hardcoded inline in the Dockerfilecurl … | bash(use a checksum or keyring-verified apt source)node/npmrun in the container