{"slug":"canvas","tag":"2026-05-20.143-CE-ubuntu24.04-r1","current":true,"account":false,"tarball":"ReadyStack-canvas-2026-05-20.143-CE-ubuntu24.04-r1.tar.gz","tarball_sha256":"6a0a2aa9b269496c8dc23c6c3d6fa96d6af28b2ba177371ad74afbd2dcfc5e5d","generated_at":"2026-10-29T19:32:09Z","dockerfile":"Dockerfile.offline.pinned","build_script":"BUILD_OFFLINE.sh","pins":{"upstream":{"repo":"https://github.com/instructure/canvas-lms","ref":"release/2026-05-20.143","commit":"2e2b4a46d08e32667d4845f7b78e1214250345d3","url":"https://github.com/instructure/canvas-lms/tree/2e2b4a46d08e32667d4845f7b78e1214250345d3"},"fetches":[{"kind":"git","url":"https://github.com/instructure/canvas-lms","ref":"release/2026-05-20.143"},{"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/v20.20.2/node-v20.20.2-linux-x64.tar.gz"},{"kind":"http","url":"https://nodejs.org/dist/v20.20.2/SHASUMS256.txt"}],"bases":[{"image":"ubuntu:24.04","digest":"sha256:68ee22004a9109b44973313b02ff7b1de250f1de0f5ecb628d73f579aaff33ac"}],"toolchain":{"buildkit":"moby/buildkit:v0.31.2","buildkit_image_digest":"sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0"},"build_method":"source-rebuild-ruby","source_date_epoch":1777557004,"source_date_epoch_utc":"2026-04-30T13:50:04Z","target":{"image":"readystack/canvas:2026-05-20.143-CE-ubuntu24.04-r1","image_manifest_digest":"sha256:2b0596a737951dc92946f018e7dc6437cacc471eb62426a31d4ddd480fc1517c","config_digest":"sha256:4fa7522398a9a72ca95a2795ede5451870d81d58d156c8856b6322312ba47071"},"checksummed_files":50750},"files":[{"path":"BASES.tsv","size":121,"sha256":"abada2a5a4d6cf4b84bc6d4a17027231b40c2bfa231f0c2d997a9994571c06c9","public":"full","lines":1,"url":"/api/recipe/canvas/2026-05-20.143-CE-ubuntu24.04-r1/files/BASES.tsv","text":"ubuntu:24.04@sha256:68ee22004a9109b44973313b02ff7b1de250f1de0f5ecb628d73f579aaff33ac\tbases/ubuntu_24.04_68ee22004a91.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":7732429,"sha256":"51918704ac4e7bf832176872329b5bb40d1c08d499f2ac4cbd8c0cf126198296","public":"account","lines":50750},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/canvas/2026-05-20.143-CE-ubuntu24.04-r1/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":7933,"sha256":"aca71f4f93fa0f9c59bf30ef9710fb8fdc181fdfd296d54ac0aeb79cd750b415","public":"account","lines":95},{"path":"Dockerfile.offline","size":7933,"sha256":"aca71f4f93fa0f9c59bf30ef9710fb8fdc181fdfd296d54ac0aeb79cd750b415","public":"account","lines":95},{"path":"Dockerfile.offline.pinned","size":7933,"sha256":"aca71f4f93fa0f9c59bf30ef9710fb8fdc181fdfd296d54ac0aeb79cd750b415","public":"preview","lines":95,"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:68ee22004a9109b44973313b02ff7b1de250f1de0f5ecb628d73f579aaff33ac AS rubybuild\nENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8 BUNDLE_LOCKFILE=Gemfile.lock CANVAS_PINNED_GITHUB_GEMS=skoji/gepub:f0647345b806d993c2e59a84b490fdcb21979dec\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=1777557004\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 && \\\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 net-imap=0.6.8 && \\","lines_shown":24,"lines_total":95}},{"path":"Dockerfile.vendor","size":8005,"sha256":"db3be99f8739a6ebee12c3d049eafe9f963a4eb5ef391cb18e657cfb195d5ccc","public":"account","lines":81},{"path":"MANIFEST.txt","size":4281459,"sha256":"76b6bfc667dc837164437848afe3bf202d5f2811c4e24e35ae47a50a6ee6c428","public":"account","lines":50752},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"080471d3e981aeb243870c02a0f71dd2cb648607c15e94252d736e36fc39e1cd","public":"full","lines":1,"url":"/api/recipe/canvas/2026-05-20.143-CE-ubuntu24.04-r1/files/SOURCE_DATE_EPOCH.txt","text":"1777557004\n"},{"path":"TARGET_DIGEST.txt","size":449,"sha256":"5e554b000ecbe3ed3532f0dfd6844e665fdb36c129fa1b999878fa37ca9ce2bd","public":"full","lines":8,"url":"/api/recipe/canvas/2026-05-20.143-CE-ubuntu24.04-r1/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:2b0596a737951dc92946f018e7dc6437cacc471eb62426a31d4ddd480fc1517c\nconfig_digest=sha256:4fa7522398a9a72ca95a2795ede5451870d81d58d156c8856b6322312ba47071\ntag=readystack/canvas:2026-05-20.143-CE-ubuntu24.04-r1\nprobe_port=3000\nprobe_path=/health_check\nprobe_timeout=2400\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":7331,"sha256":"8b036b1f9a7f7deb4dbab14ef6b7c40622d2820904e891b8845ba3580e924506","public":"account","lines":128},{"path":"cache_store.yml","size":142,"sha256":"4092404928f2db39f69d0fcdc7859b4c42a9b5dacc3ff2f4ed134fcc669a5da5","public":"account","lines":3},{"path":"canvas-entrypoint.sh","size":3896,"sha256":"49a7ba66e8772d70f866c6628d7fd75a4faccd6f89a927ae5cf130fae4497af3","public":"account","lines":94},{"path":"database.yml","size":550,"sha256":"491f3529825a55cdaaf23d7d8741027b94f7bccc6732f0b62d136ba61bfab1d6","public":"account","lines":11},{"path":"delayed_jobs.yml","size":233,"sha256":"a222ef2984140ad8e8cbf5b6d71a156984ba5a8d215708cc8a1fb19a3c1b0671","public":"account","lines":5},{"path":"docs/PROVENANCE.md","size":1747,"sha256":"522e32592ed04272a3139637e109ce013db17039226040fa0453b870438b69e3","public":"account","lines":28},{"path":"docs/REBUILD.md","size":5228,"sha256":"0bf271df00ec6355e7319be830b90a10af9a1826478d717e495846afd19dd6a2","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1996,"sha256":"cc21155aca7bab7f16d874869c9cee7c4df31e44f93270932fb3680ac25ff34b","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":49,"sha256":"db1a64ed3312ee23b572ca256e5580eba0975a4db9f79c6d7b56869ab7a54793","public":"full","lines":2,"url":"/api/recipe/canvas/2026-05-20.143-CE-ubuntu24.04-r1/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for canvas (resolve at build_kit)\n\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":4738,"sha256":"6cb4142c3faef9e56544a8abcffa82553806f5357907db743ca6fc9b9ef9662d","public":"account","lines":99},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":669,"sha256":"27e40b73e18d69ef88b8046c5dd9e8b2f5c926e4eff2e5d0b2d68ab35c1a9900","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":266632,"sha256":"c2d9b38b00e923c82d58c92728a771d9eaa3ee7d1ae3528210c75887a305d50a","public":"account","lines":5007},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":328,"sha256":"642cb5fb3665c183a4fd9d31948e2ed17e5a7c55c5bdcbba78563d6ed5e5375d","public":"full","lines":9,"url":"/api/recipe/canvas/2026-05-20.143-CE-ubuntu24.04-r1/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"canvas\",\n  \"repo\": \"https://github.com/instructure/canvas-lms\",\n  \"ref\": \"release/2026-05-20.143\",\n  \"commit\": \"2e2b4a46d08e32667d4845f7b78e1214250345d3\",\n  \"tree_listing_sha256\": \"222ae1df10656048500098d09530d7337d8bb8fb99e7e3676629165870c2e1af\",\n  \"file_count\": 22662\n}"},{"path":"docs/provenance/SYSTEM_PINNING.lock","size":152,"sha256":"762ec5577126741cb61c0220489ba366c3e589bee8f358736caf1e540b724d72","public":"account","lines":12},{"path":"docs/provenance/TOOLCHAIN.lock","size":5305,"sha256":"4accea70ecd0e69031ed8fd4dc418df83aaa57cea5604ade3d2f99c44a192040","public":"account","lines":207},{"path":"domain.yml","size":256,"sha256":"6a6cb8414ec0b326e2c6632b5ac549a66a1b5a71f111a292c1ce5fde7a55e0f4","public":"account","lines":5},{"path":"file_store.yml","size":257,"sha256":"dab0b5ba50ad8b9a15814c3d0d4672349eb25c75bf9d7f67dfdb3e7d575e4e61","public":"account","lines":5},{"path":"kitforge-ruby-gems.rb","size":5570,"sha256":"7f6627293be0debc7270e65cfe3559a29d3d95791843866fe1065570a460dd09","public":"account","lines":102},{"path":"logging.yml","size":201,"sha256":"9c408fac77b243193efce724a74879d0e17a8b1be9b83ad1e9cc10ad812d479a","public":"account","lines":4},{"path":"outgoing_mail.yml","size":967,"sha256":"1b941dc9c3bc3fd6b039c00919edc5544f054dd434488b05408437bb1a297c80","public":"account","lines":14},{"path":"production-local.rb","size":747,"sha256":"4959f8e39478f1fd8e0ee37a2bcf531a80ea6688c374d4c96a9bd94a8d033443","public":"account","lines":9},{"path":"rebuild.json","size":1227,"sha256":"dc8e693a85d7af697eef571c21495889dbd283e5668fa9d46b56c9de34923580","public":"account","lines":31},{"path":"redis.yml","size":206,"sha256":"eb6258411b4ac81ca4eab114afa37eae9f4574484ad2aa423416e689575cdf73","public":"account","lines":6},{"path":"security.yml","size":721,"sha256":"5a87984b3e48bd184c26e6c8a1aee5c8b0466f2ebd91558cc44deb6bfd75c98c","public":"account","lines":9},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/canvas/2026-05-20.143-CE-ubuntu24.04-r1/files/toolchain/BUILDKIT_TAG.txt","text":"moby/buildkit:v0.31.2\n"}],"skipped":[],"kit_adds":{"bases":{"files":5,"bytes":29769315},"docs":{"files":22719,"bytes":471655852},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":27991,"bytes":1070465666}},"links":{"page":"https://readystack.dev/products/canvas/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fcanvas%2Frecipe","kit":"https://readystack.dev/buy.html?product=canvas"}}