{"slug":"discourse","tag":"v2026.9.1-CE-ubuntu24.04-r1","current":true,"account":false,"tarball":"ReadyStack-discourse-v2026.9.1-CE-ubuntu24.04-r1.tar.gz","tarball_sha256":"88655afcd87d5e5e35c08e9d38871f3a074dfaf36b50ba07603584a254b763d6","generated_at":"2026-10-29T19:34:01Z","dockerfile":"Dockerfile.offline.pinned","build_script":"BUILD_OFFLINE.sh","pins":{"upstream":{"repo":"https://github.com/discourse/discourse","ref":"v2026.9.1","commit":"4f3dc460226b37e001c5f42db397cc891a357701","url":"https://github.com/discourse/discourse/tree/4f3dc460226b37e001c5f42db397cc891a357701"},"fetches":[{"kind":"git","url":"https://github.com/discourse/discourse","ref":"v2026.9.1"},{"kind":"http","url":"https://cache.ruby-lang.org/pub/ruby/3.4/ruby-3.4.11.tar.gz"},{"kind":"http","url":"https://cache.ruby-lang.org/pub/ruby/index.txt"},{"kind":"http","url":"https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-x64.tar.gz"},{"kind":"http","url":"https://nodejs.org/dist/v24.21.0/SHASUMS256.txt"},{"kind":"http","url":"https://github.com/ImageMagick/ImageMagick/archive/7.1.2-33.tar.gz"}],"bases":[{"image":"ubuntu:24.04","digest":"sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c"}],"toolchain":{"buildkit":"moby/buildkit:v0.31.2","buildkit_image_digest":"sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0"},"build_method":"source-rebuild-ruby","source_date_epoch":1792774247,"source_date_epoch_utc":"2026-10-23T16:50:47Z","target":{"image":"readystack/discourse:v2026.9.1-CE-ubuntu24.04-r1","image_manifest_digest":"sha256:ac5369835d0a1705eae615e4cf1bb2ae8c14974ca63e7fb8aacb244d2a4bec11","config_digest":"sha256:b1126c50967162dded21e69b1ab10fb00fec1448c554b40f12c273de0bfd2ecc"},"checksummed_files":50276},"files":[{"path":"BASES.tsv","size":121,"sha256":"0da49a3ea98fcaa345080b1a4230d2c798b395f71854063c2af657eb53a8a2e0","public":"full","lines":1,"url":"/api/recipe/discourse/v2026.9.1-CE-ubuntu24.04-r1/files/BASES.tsv","text":"ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c\tbases/ubuntu_24.04_24737cef17f4.oci\n"},{"path":"BUILD_OFFLINE.sh","size":6738,"sha256":"83299978ccd02a0b69e163d760da1211b401bbfa35a3184ca674dc37ff876732","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. Run on your own hardened,\n#                                     isolated build platform and sign that provenance with a key the build cannot\n#                                     reach, and the result meets SLSA Build Level 3 (see REBUILD.md). The image\n#                                     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":7850494,"sha256":"068032c59ec85d8f94ede0477502e234901bdcdfaff78ca45e231904142e44c9","public":"account","lines":50276},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/discourse/v2026.9.1-CE-ubuntu24.04-r1/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":7622,"sha256":"44a8807ee22754ff9dee9725ce7bb8b324fe287b4a649feaa718fe135044d1b7","public":"account","lines":82},{"path":"Dockerfile.offline","size":7622,"sha256":"44a8807ee22754ff9dee9725ce7bb8b324fe287b4a649feaa718fe135044d1b7","public":"account","lines":82},{"path":"Dockerfile.offline.pinned","size":7622,"sha256":"44a8807ee22754ff9dee9725ce7bb8b324fe287b4a649feaa718fe135044d1b7","public":"preview","lines":82,"preview":{"text":"# GENERATED L-009 hermetic Ruby build (--network=none, SBOM+SLSA-attestation-producing).\n# Compiles CRuby 3.4.11 from the vendored ruby-lang.org tarball and the native gems from vendor/cache, then\n# copies Ruby + the installed bundle onto the pinned base with only runtime debs: no compiler, headers or Node.\nFROM ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c AS rubybuild\nENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8\nRUN --mount=type=bind,source=vendored/debs,target=/tmp/debs --mount=type=bind,source=vendored/build-debs,target=/tmp/bdebs \\\n    set --; for f in /tmp/debs/*.deb /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; }; }\nARG SOURCE_DATE_EPOCH=1792774247\nENV SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH}\nCOPY vendored/ruby/ /tmp/ruby/\nRUN cd /tmp/ruby && echo '5c22be44524312b3d433d68739bcc530633b1da5ef8ba0afa0a37680da17d3de  ruby-3.4.11.tar.gz' | sha256sum -c - && \\\n    tar -xzf ruby-3.4.11.tar.gz && cd ruby-3.4.11 && \\\n    ./configure --prefix=/usr/local --enable-shared --disable-install-doc --disable-install-static-library --enable-yjit && \\\n    make -j\"$(nproc)\" && make install && \\\n    cd / && rm -rf /tmp/ruby && \\\n    find /usr/local/lib/ruby \\( -name gem_make.out -o -name mkmf.log \\) -delete && \\\n    ruby --version | grep -qF 'ruby 3.4.11'\nCOPY kitforge-ruby-gems.rb /tmp/kitforge-ruby-gems.rb\nCOPY vendored/ruby-gems/ /tmp/ruby-gems/\nRUN ruby /tmp/kitforge-ruby-gems.rb install /tmp/ruby-gems && \\","lines_shown":24,"lines_total":82}},{"path":"Dockerfile.vendor","size":10002,"sha256":"ce27dc62c6187d1aba118561e69ab46b412fc882e531abae89dcc6093f829c6d","public":"account","lines":82},{"path":"MANIFEST.txt","size":4431756,"sha256":"f5c277a42400df9161cdd4a78302722e0e0969719dca72b084a40c77928ec694","public":"account","lines":50278},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"3fa4fd3657cbe354bd8a2398be25aa7c6664ef5c3ce42526311cd70b4f3e7f69","public":"full","lines":1,"url":"/api/recipe/discourse/v2026.9.1-CE-ubuntu24.04-r1/files/SOURCE_DATE_EPOCH.txt","text":"1792774247\n"},{"path":"TARGET_DIGEST.txt","size":445,"sha256":"cf90ceb11f8852e250de2cf04104771e4904a1fa7f3121e76eb6cc28b4f284ce","public":"full","lines":8,"url":"/api/recipe/discourse/v2026.9.1-CE-ubuntu24.04-r1/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:ac5369835d0a1705eae615e4cf1bb2ae8c14974ca63e7fb8aacb244d2a4bec11\nconfig_digest=sha256:b1126c50967162dded21e69b1ab10fb00fec1448c554b40f12c273de0bfd2ecc\ntag=readystack/discourse:v2026.9.1-CE-ubuntu24.04-r1\nprobe_port=3000\nprobe_path=/srv/status\nprobe_timeout=1200\nverify_boot=skip\nverify_boot_reason=this image needs db, redis (not part of this archive); boot it with your own services as the admin handbook describes\n"},{"path":"VERIFY_OFFLINE.sh","size":8100,"sha256":"dc0b5cd5c104a5da5c3f4e379e8f3d2eeffa307c8545067925bb4317a722b0b7","public":"account","lines":138},{"path":"discourse-entrypoint.sh","size":625,"sha256":"cbdb72f86df3c7ddad4bd6d20bd6d45d5e73bcd53d5a81c1efdfc59008f17cc2","public":"account","lines":12},{"path":"docs/PROVENANCE.md","size":1721,"sha256":"855dbadd853e4e9bb7cd9b8cc97b61ef669091c975fe6d8dd89e77f18fcdb637","public":"account","lines":28},{"path":"docs/REBUILD.md","size":5167,"sha256":"fcd956d5625a0c893d14a8aa9d8031b4487d762c260947dc96858f0bc6b3f36d","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1985,"sha256":"3068f5091618d1c49017af8f1abbd56548ecb47a130680d70fdb7ed1c4535288","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":52,"sha256":"1dc5394664a90cfda6eb99440e5323ccab4202690e476c0406316be0f501aeb6","public":"full","lines":2,"url":"/api/recipe/discourse/v2026.9.1-CE-ubuntu24.04-r1/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for discourse (resolve at build_kit)\n\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":11858,"sha256":"44f710dcd955a74a7a894212ac974da825b537f3a598c4065c5dfa314f4aec33","public":"account","lines":169,"redactions":[{"line":82,"kind":"internal host"}],"kit_sha256":"ed63e99c82d5ba681d0f66f36e4ec82b2e7db5439266b2c82bf05baf83d12b48"},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":656,"sha256":"c804ecf0945daf355af595d2e5a6742adecfcb28a12eb8919dcbcdd68cd747e6","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":301907,"sha256":"72c5466ac719ffedd5efec71b5383cd84ba25321bbb2080ab83fe953bca52ed8","public":"account","lines":5007},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":315,"sha256":"dec63e3264124284eecc3aa4afd429fbf436b058e5ab9aee7fa0c4e90405a9bd","public":"full","lines":9,"url":"/api/recipe/discourse/v2026.9.1-CE-ubuntu24.04-r1/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"discourse\",\n  \"repo\": \"https://github.com/discourse/discourse\",\n  \"ref\": \"v2026.9.1\",\n  \"commit\": \"4f3dc460226b37e001c5f42db397cc891a357701\",\n  \"tree_listing_sha256\": \"2e56441d345dc70a3f8867eee452c88c4c7fc35a11e61a278ed6600cdd9917a7\",\n  \"file_count\": 26343\n}"},{"path":"docs/provenance/SYSTEM_PINNING.lock","size":777,"sha256":"40d8a43134ec5248927cd41217c8985249450218f4183b3a6efba68759e69370","public":"account","lines":68},{"path":"docs/provenance/TOOLCHAIN.lock","size":7235,"sha256":"67a27d38c57f50834368950457cdd90adb72605ee35fd6fdedc0ce5e945ed353","public":"account","lines":172},{"path":"kitforge-ruby-gems.rb","size":5570,"sha256":"7f6627293be0debc7270e65cfe3559a29d3d95791843866fe1065570a460dd09","public":"account","lines":102},{"path":"rebuild.json","size":1225,"sha256":"65e27091aa5d3a233cfced30d506e46e0cc90f6dd2d7373e18f11db15b484f61","public":"account","lines":31},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/discourse/v2026.9.1-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":26380,"bytes":198941839},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":23866,"bytes":847156312}},"links":{"page":"https://readystack.dev/products/discourse/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fdiscourse%2Frecipe","kit":"https://readystack.dev/buy.html?product=discourse"}}