{"slug":"nodejs","tag":"26.13.0-CE-ubuntu24.04-r1","current":true,"account":false,"tarball":"ReadyStack-nodejs-26.13.0-CE-ubuntu24.04-r1.tar.gz","tarball_sha256":"25b1f778a50aeb19332eea96203c0ad6d5c6c80b977f94597d1b74a3b34de517","generated_at":"2026-11-08T22:58:27Z","dockerfile":"Dockerfile.offline.pinned","build_script":"BUILD_OFFLINE.sh","pins":{"upstream":{"repo":"https://github.com/nodejs/node","ref":"v26.13.0","commit":"18b32a3b1552e199a01f1a8d9fd64aa756d3b75b","url":"https://github.com/nodejs/node/tree/18b32a3b1552e199a01f1a8d9fd64aa756d3b75b"},"fetches":[{"kind":"git","url":"https://github.com/nodejs/node","ref":"v26.13.0"},{"kind":"http","url":"https://registry.npmjs.org/npm/-/npm-11.21.2.tgz"}],"bases":[{"image":"ubuntu:24.04","digest":"sha256:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852"}],"toolchain":{"buildkit":"moby/buildkit:v0.31.2","buildkit_image_digest":"sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0","builder_images":["ubuntu:24.04@sha256:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852"]},"build_method":"source-rebuild-c","source_date_epoch":1792774666,"source_date_epoch_utc":"2026-10-23T16:57:46Z","target":{"image":"readystack/nodejs:26.13.0-CE-ubuntu24.04-r1","image_manifest_digest":"sha256:9eef4e36180646c91b9f0ccccc2ed60a341e1dd2f16b530ecb64bde999912943","config_digest":"sha256:1f067194e12f7751577288ba203856282c6617d8fea63f07aedc0dab42b35f6a"},"checksummed_files":104538},"files":[{"path":"BASES.tsv","size":121,"sha256":"63822800fc2b89e7b38d1fbaaad6f0c80c9a91a0176ebe7d935c08b0cdd6b4fa","public":"full","lines":1,"url":"/api/recipe/nodejs/26.13.0-CE-ubuntu24.04-r1/files/BASES.tsv","text":"ubuntu:24.04@sha256:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852\tbases/ubuntu_24.04_fe81560990fa.oci\n"},{"path":"BUILD_OFFLINE.sh","size":6756,"sha256":"6633aa31b6b40dc4a75c83de0272269acbb86e82f3bcfa7fdd202d1642a6780a","public":"preview","lines":125,"preview":{"text":"#!/usr/bin/env bash\n# =============================================================================\n# ReadyStack — offline reproducible rebuild.\n#\n# Rebuilds this product's image from THIS ARCHIVE ALONE, with no network access\n# of any kind, and prints the resulting linux/amd64 image-manifest digest.\n# Run ./VERIFY_OFFLINE.sh afterwards to assert it equals the published digest.\n#\n# Requirements: linux/amd64 Docker host, docker buildx >= 0.30, jq, tar.\n# No git, no registry access, no additional tooling.\n#\n#   ./BUILD_OFFLINE.sh                the rebuild (OCI image + a docker-loadable copy)\n#   ./BUILD_OFFLINE.sh --provenance   the same rebuild with SLSA v1 build provenance (mode=max) attached to the OCI\n#                                     image, generated by BuildKit, not by any build step. Your build platform runs\n#                                     the build and signs that provenance with a key the build steps cannot reach\n#                                     (see REBUILD.md). Any SLSA build level is your platform's; this archive claims\n#                                     none. The image digest is the same either way.\n# =============================================================================\nset -euo pipefail\nPROVENANCE=0\nfor arg in \"$@\"; do\n  case \"$arg\" in\n    --provenance) PROVENANCE=1 ;;\n    -h|--help) sed -n '2,20p' \"$0\"; exit 0 ;;","lines_shown":24,"lines_total":125}},{"path":"CHECKSUMS.sha256","size":15329147,"sha256":"3ecd4e02a84b3ea7f87187ead8c6ab1bd7d043f0c6eebe2ea337e26d80013c0b","public":"account","lines":104538},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/nodejs/26.13.0-CE-ubuntu24.04-r1/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":3890,"sha256":"d2898dc26c8b0f68e119e952a5b726b5e009a5dac65dec521eff77cd6dfaece0","public":"account","lines":51},{"path":"Dockerfile.offline","size":3890,"sha256":"d2898dc26c8b0f68e119e952a5b726b5e009a5dac65dec521eff77cd6dfaece0","public":"account","lines":51},{"path":"Dockerfile.offline.pinned","size":3890,"sha256":"d2898dc26c8b0f68e119e952a5b726b5e009a5dac65dec521eff77cd6dfaece0","public":"preview","lines":51,"preview":{"text":"# GENERATED L-009 hermetic C build (--network=none, SBOM+SLSA-attestation-producing).\n# Pinned bases; vendored source (in-tree deps) + extra build debs + runtime debs from Dockerfile.vendor.\nFROM ubuntu:24.04@sha256:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852 AS cbuild\n# dpkg-install the vendored EXTRA build debs (pkg-config/libssl-dev/...) — gcc/make are in the builder.\nRUN --mount=type=bind,source=vendored/build-debs,target=/tmp/bdebs \\\n    set --; for f in /tmp/bdebs/*.deb; do [ -e \"$f\" ] && set -- \"$@\" \"$f\"; done; \\\n    for pass in 1 2 3 4 5; do [ $# -eq 0 ] || dpkg -i --skip-same-version \"$@\" >/dev/null 2>&1 && break; done; \\\n    dpkg --configure -a && bad= && for d in \"$@\"; do p=$(dpkg-deb -f \"$d\" Package) v=$(dpkg-deb -f \"$d\" Version); \\\n      case \"$(dpkg-query -W -f='${Version} ${db:Status-Abbrev}' \"$p\" 2>/dev/null)\" in \"$v ii\"*) ;; *) bad=\"$bad $p=$v\" ;; esac; done && \\\n    { [ -z \"$bad\" ] || { echo \"vendored debs not installed at their vendored version:$bad\" >&2; false; }; }\nWORKDIR /src\nCOPY vendored/nodejs-src/ .\nARG SOURCE_DATE_EPOCH=1792774666\nENV SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH}\nRUN ./configure --prefix=/opt/node\nRUN make -j\"$(nproc)\"\nRUN make install\nRUN /opt/node/bin/node -v | grep -qx v26.13.0 && /opt/node/bin/node /opt/node/lib/node_modules/npm/bin/npm-cli.js -v | grep -qx 11.21.2\nRUN /opt/node/bin/node -e \"const c=require('crypto');if(c.createHash('sha256').update('readystack').digest('hex').length!==64)process.exit(1);if(new Intl.DateTimeFormat('de-DE',{month:'long'}).format(new Date(Date.UTC(2026,10,8)))!=='November')process.exit(1)\"\nFROM ubuntu:24.04@sha256:fe81560990fae86dc4743202b2cb4d3df98d0bcf949173cecef15ce1127ef852\nENV DEBIAN_FRONTEND=noninteractive PATH=/home/node/.npm-global/bin:/opt/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NPM_CONFIG_PREFIX=/home/node/.npm-global LANG=C.UTF-8\nRUN --mount=type=bind,source=vendored/debs,target=/tmp/debs \\\n    set --; for f in /tmp/debs/*.deb; do [ -e \"$f\" ] && set -- \"$@\" \"$f\"; done; \\\n    for pass in 1 2 3 4 5; do [ $# -eq 0 ] || dpkg -i --skip-same-version \"$@\" >/dev/null 2>&1 && break; done; \\","lines_shown":24,"lines_total":51}},{"path":"Dockerfile.vendor","size":2381,"sha256":"33b79261ac0b9b65a2abd6280e6af09eb410a8fba9d17f06cf1241e956c5bdf1","public":"account","lines":26},{"path":"MANIFEST.txt","size":8220593,"sha256":"a60a6d006af366b876387143313e990da3ac65e228522cdb22b28ae9d1661b12","public":"account","lines":104540},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"b98b4c78174590fc5527ba2eec09bd795e7bde12a78e92ba5174ba6afb0b822c","public":"full","lines":1,"url":"/api/recipe/nodejs/26.13.0-CE-ubuntu24.04-r1/files/SOURCE_DATE_EPOCH.txt","text":"1792774666\n"},{"path":"TARGET_DIGEST.txt","size":498,"sha256":"62d0104777497cd9a0c9b3346470f00335943cbe60e45189f8ada3c29e2a8dc1","public":"full","lines":9,"url":"/api/recipe/nodejs/26.13.0-CE-ubuntu24.04-r1/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:9eef4e36180646c91b9f0ccccc2ed60a341e1dd2f16b530ecb64bde999912943\nconfig_digest=sha256:1f067194e12f7751577288ba203856282c6617d8fea63f07aedc0dab42b35f6a\ntag=readystack/nodejs:26.13.0-CE-ubuntu24.04-r1\nprobe_port=80\nprobe_path=/\nprobe_timeout=180\nprobe_exec=node -e 'process.exit(0)'\nverify_boot=skip\nverify_boot_reason=this image is a language runtime with no long-running service; the digest match above proves the rebuild, and `docker run --rm <image> node -v` runs it\n"},{"path":"VERIFY_OFFLINE.sh","size":10153,"sha256":"3e8184ea230cfd8f41f977e26be6bf7bd03112c396c517837ce0c7de4f7399dd","public":"account","lines":165},{"path":"docs/PROVENANCE.md","size":2542,"sha256":"1e68fe8437e8d467c32b904c9c226013b8cb09a49fe2d8689ded3dd8cad78637","public":"account","lines":36},{"path":"docs/REBUILD.md","size":5167,"sha256":"2005835418c1ffae879750f6c872360efc868eba4749fe9d803dcc92d7ea1e9f","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1956,"sha256":"ddee4e2ea3ec73bed510fe5634a19a8e824732f8b00e37b509f51e9c09bb6305","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":61,"sha256":"b15471b4464592173d168605ff1f82c43e1b6dd2b79b4f48da113fefc1ef0ce9","public":"full","lines":2,"url":"/api/recipe/nodejs/26.13.0-CE-ubuntu24.04-r1/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for nodejs (resolve at build_kit)\nubuntu:24.04\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":4315,"sha256":"fc049e026002ab4509b5d65bf68e48b86e1570aa0591f16298a2ebbdc6f88bc0","public":"account","lines":41},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":644,"sha256":"fafb226f0f3fbf1bbf3ef648f949fcaaecc99401c00cb5a6436e484207002403","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":287305,"sha256":"7156e96295fcafdbaa97c83d33186ddd4e028de4673c1caeb6143517b408ff6f","public":"account","lines":5007},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":303,"sha256":"d3b42bb570542d1c6477f35d41935459423366e2b2901db5a34815e6d89bfaea","public":"full","lines":9,"url":"/api/recipe/nodejs/26.13.0-CE-ubuntu24.04-r1/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"nodejs\",\n  \"repo\": \"https://github.com/nodejs/node\",\n  \"ref\": \"v26.13.0\",\n  \"commit\": \"18b32a3b1552e199a01f1a8d9fd64aa756d3b75b\",\n  \"tree_listing_sha256\": \"5b74fd4dea3b1f65df90f73fb2bff5c1579cf286773347aa1bee1b76ea423964\",\n  \"file_count\": 52284\n}"},{"path":"docs/provenance/SYSTEM_PINNING.lock","size":34,"sha256":"30b90438c3def2c31ca16ccf6d636b83423bd9120aa498006af3807d4ca69e9d","public":"account","lines":3},{"path":"docs/provenance/TOOLCHAIN.lock","size":2600,"sha256":"e2d6bb6e1f4b7ca4a9a3c9e88e70b8d0f65b67a54a72e48bf0080d98b3360c09","public":"account","lines":58},{"path":"rebuild.json","size":1254,"sha256":"2630d38b33f852f0a274360e92ff1a34b29497ec45d94a6baef66a9260028583","public":"account","lines":31},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/nodejs/26.13.0-CE-ubuntu24.04-r1/files/toolchain/BUILDKIT_TAG.txt","text":"moby/buildkit:v0.31.2\n"}],"skipped":[],"kit_adds":{"bases":{"files":5,"bytes":29771169},"docs":{"files":52336,"bytes":710669216},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":52174,"bytes":797460428}},"links":{"page":"https://readystack.dev/products/nodejs/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fnodejs%2Frecipe","kit":"https://readystack.dev/products/nodejs#pp-kit"}}