{"slug":"bookstack","tag":"v26.09.2-CE-ubuntu24.04-r3","current":true,"account":false,"tarball":"ReadyStack-bookstack-v26.09.2-CE-ubuntu24.04-r3.tar.gz","tarball_sha256":"e3b0ec96754d2b3682f1d4e83ce9474e071d8b4c3da8967e9c03dfe14bb9f9f1","generated_at":"2026-10-29T19:31:32Z","dockerfile":"Dockerfile.offline.pinned","build_script":"BUILD_OFFLINE.sh","pins":{"upstream":{"repo":"https://github.com/BookStackApp/BookStack","ref":"v26.09.2","commit":"6265d5667dd6904b7aa0d05a8c60795cf104011b","url":"https://github.com/BookStackApp/BookStack/tree/6265d5667dd6904b7aa0d05a8c60795cf104011b"},"fetches":[{"kind":"git","url":"https://github.com/BookStackApp/BookStack","ref":"v26.09.2"}],"bases":[{"image":"ubuntu:24.04","digest":"sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c"}],"toolchain":{"buildkit":"moby/buildkit:v0.31.2","buildkit_image_digest":"sha256:e0e67ea9c4bb07bdef683e29f70f3b623d1eb9c82274a9ec04e6bb0511449fb0"},"build_method":"source-rebuild-php","source_date_epoch":1792495911,"source_date_epoch_utc":"2026-10-20T11:31:51Z","target":{"image":"readystack/bookstack:v26.09.2-CE-ubuntu24.04-r3","image_manifest_digest":"sha256:a649f1eb980bbf47ef8db89e20124a3f9a13a9834872256c4a81d54a50565b94","config_digest":"sha256:4ba664b77d0d2906a2cadd8c701672213b9b2e6c35baf1ea8b417b92a69d735f"},"checksummed_files":17532},"files":[{"path":"BASES.tsv","size":121,"sha256":"0da49a3ea98fcaa345080b1a4230d2c798b395f71854063c2af657eb53a8a2e0","public":"full","lines":1,"url":"/api/recipe/bookstack/v26.09.2-CE-ubuntu24.04-r3/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":2612554,"sha256":"1f6397459cfc140182ef8767e0cfd38dec18e42fcd54166038f686d0b39371ca","public":"account","lines":17532},{"path":"DOCKERFILE_NAME.txt","size":26,"sha256":"9aadd1ede68e016a6f163c97befc5ff2fcdc8ebd4f84b108dba63cb195fa8c84","public":"full","lines":1,"url":"/api/recipe/bookstack/v26.09.2-CE-ubuntu24.04-r3/files/DOCKERFILE_NAME.txt","text":"Dockerfile.offline.pinned\n"},{"path":"Dockerfile","size":6061,"sha256":"713f2d840116ecda4b587880ccc1910ec27c0b524ff6b54e0cc0740ae92abf0b","public":"account","lines":74},{"path":"Dockerfile.offline","size":6061,"sha256":"713f2d840116ecda4b587880ccc1910ec27c0b524ff6b54e0cc0740ae92abf0b","public":"account","lines":74},{"path":"Dockerfile.offline.pinned","size":6061,"sha256":"713f2d840116ecda4b587880ccc1910ec27c0b524ff6b54e0cc0740ae92abf0b","public":"preview","lines":74,"preview":{"text":"# GENERATED L-009 hermetic PHP build on Ubuntu's own packages (--network=none, SBOM+SLSA-attestation-producing).\n# Pinned ubuntu:24.04; vendored app source + the deb closure (Ubuntu's PHP 8.3, its extensions, Apache, runtime debs).\nFROM ubuntu:24.04@sha256:24737cef17f4e22b1977df7d9a05e77c4e28b7da5b8911f8d8ccda136bf3573c\nENV DEBIAN_FRONTEND=noninteractive APACHE_RUN_USER=bookstack APACHE_RUN_GROUP=bookstack APACHE_DOCUMENT_ROOT=/app/public APP_ENV=production APP_DEBUG=false DB_CONNECTION=mysql DB_PORT=3306 CACHE_DRIVER=file SESSION_DRIVER=file\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; \\\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; }; } && \\\n    rm -rf /var/lib/apt/lists/* \\\n           /var/log/dpkg.log /var/log/alternatives.log /var/log/apt /var/cache/ldconfig/aux-cache /var/cache/fontconfig\n# Apache + PHP set up as the official php:apache image sets them up (the image this product's Debian releases\n# ran on), so the product's scaffold, post_copy_run and entrypoint behave as they did there.\nCOPY readystack-php.ini /etc/php/8.3/apache2/php.ini\nCOPY readystack-php.ini /etc/php/8.3/cli/php.ini\nCOPY readystack-mod-php.conf /etc/apache2/mods-available/php8.3.conf\nCOPY readystack-php.conf /etc/apache2/conf-available/readystack-php.conf\nCOPY apache2-foreground /usr/local/bin/apache2-foreground\nRUN chmod 0755 /usr/local/bin/apache2-foreground && \\\n    sed -ri 's/^export ([^=]+)=(.*)$/: ${\\1:=\\2}\\nexport \\1/' /etc/apache2/envvars && \\\n    a2dismod -q mpm_event && a2enmod -q mpm_prefork && a2enconf -q readystack-php && \\\n    rm -rf /var/www/html && mkdir -p /var/www/html && chown www-data:www-data /var/www/html && chmod 1777 /var/www/html && \\\n    for d in /var/lock/apache2 /var/run/apache2 /var/log/apache2 /var/run/apache2/socks; do \\","lines_shown":24,"lines_total":74}},{"path":"Dockerfile.vendor","size":1758,"sha256":"486733317d67cad8a60e5bb28f130987deae0803f045b623d902ed848ffc5a0f","public":"account","lines":22},{"path":"MANIFEST.txt","size":1420408,"sha256":"13c78ccf661e813a0cb0dab28e9acf537318518add88e403b952c4f586d2392c","public":"account","lines":17534},{"path":"SOURCE_DATE_EPOCH.txt","size":11,"sha256":"be8667b492ff7722eab5f56714289de05f8a78f08d066a043232e0209c9b2e62","public":"full","lines":1,"url":"/api/recipe/bookstack/v26.09.2-CE-ubuntu24.04-r3/files/SOURCE_DATE_EPOCH.txt","text":"1792495911\n"},{"path":"TARGET_DIGEST.txt","size":432,"sha256":"6514a1cae7147d7d4c63ca6d44871981da6d33c1bff6a5c888766467049137b1","public":"full","lines":8,"url":"/api/recipe/bookstack/v26.09.2-CE-ubuntu24.04-r3/files/TARGET_DIGEST.txt","text":"image_manifest_digest=sha256:a649f1eb980bbf47ef8db89e20124a3f9a13a9834872256c4a81d54a50565b94\nconfig_digest=sha256:4ba664b77d0d2906a2cadd8c701672213b9b2e6c35baf1ea8b417b92a69d735f\ntag=readystack/bookstack:v26.09.2-CE-ubuntu24.04-r3\nprobe_port=8080\nprobe_path=/status\nprobe_timeout=180\nverify_boot=skip\nverify_boot_reason=this image needs db (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":"apache2-foreground","size":732,"sha256":"003f1949772aed38f5bc2cc4dd3193b3277f979735fd94bb18b863169b3c260d","public":"account","lines":18},{"path":"bookstack-vhost.conf","size":273,"sha256":"ff38ca0700fe3e8bb721845e0966355e19afbd1beaef666b52c312320d6bc784","public":"account","lines":10},{"path":"docker-entrypoint.sh","size":2087,"sha256":"886de540700f30c65608ccad737215015f01b687d7fc72b98a71c7f860775de2","public":"account","lines":35},{"path":"docs/PROVENANCE.md","size":1715,"sha256":"07acbcdfc0fdcbdee4d00946aa04737dc82ed0fd3e6db3c5246e26e10eb60751","public":"account","lines":28},{"path":"docs/REBUILD.md","size":5259,"sha256":"3e73e6edc40921b5f68323cf5150e4e45f2fa91761c885b9294ef31dec235149","public":"account","lines":59},{"path":"docs/VERIFY.md","size":1980,"sha256":"72fb429a5fa20f13bbdf1fd514507e222cb4ef291229b909ab4baccf1d46421f","public":"account","lines":34},{"path":"docs/provenance/BASE_IMAGE_DIGESTS.lock","size":52,"sha256":"6064fa81846b53d5d3861279faf3c51ad56b75286183caf2d1adcdd913b05d96","public":"full","lines":2,"url":"/api/recipe/bookstack/v26.09.2-CE-ubuntu24.04-r3/files/docs/provenance/BASE_IMAGE_DIGESTS.lock","text":"# base images for bookstack (resolve at build_kit)\n\n"},{"path":"docs/provenance/BUILD_RECIPE.json","size":4884,"sha256":"868d550e9dd18d3d67846fe275971d0732603fcd629d1f0c3cf53b5b986d5614","public":"account","lines":125},{"path":"docs/provenance/CUSTODY_INPUTS.json","size":658,"sha256":"e4418851bca1f62a280984fbfb9a1e2a02b17b43a8afe96da91f4116488417ac","public":"account","lines":17},{"path":"docs/provenance/SOURCE_FILE_MANIFEST.json","size":117242,"sha256":"468c0d5528bee2661e7a00b0fcd259147a8f856d57da40df1d81b0b98fa6d48e","public":"account","lines":2629},{"path":"docs/provenance/SOURCE_TREE_HASH.json","size":316,"sha256":"f1d4ee3a9fe3462b551c53b14f04ad80ad01582e55b883eaca5c9170fccf0ad1","public":"full","lines":9,"url":"/api/recipe/bookstack/v26.09.2-CE-ubuntu24.04-r3/files/docs/provenance/SOURCE_TREE_HASH.json","text":"{\n  \"schema\": \"kitforge.source_tree_hash.v1\",\n  \"slug\": \"bookstack\",\n  \"repo\": \"https://github.com/BookStackApp/BookStack\",\n  \"ref\": \"v26.09.2\",\n  \"commit\": \"6265d5667dd6904b7aa0d05a8c60795cf104011b\",\n  \"tree_listing_sha256\": \"b1b18202d7a1855977f8bb43e39c888676544c9c13b2c4d3f19f149354aeae9d\",\n  \"file_count\": 2622\n}"},{"path":"docs/provenance/SYSTEM_PINNING.lock","size":154,"sha256":"f9bd00f803b253e61d675370397265d2cbf198c7959c9d896bd2bdc35fad50bd","public":"account","lines":13},{"path":"docs/provenance/TOOLCHAIN.lock","size":3192,"sha256":"1768995b80776a6f04565446a7739a12d31bc8fa432d97f23491b05d01f8ea45","public":"account","lines":138},{"path":"readystack-default-admin.php","size":555,"sha256":"969107c07c720a3df09acd7852ff5ee6a590a442533408551a225585bbfbaa19","public":"account","lines":8},{"path":"readystack-mod-php.conf","size":390,"sha256":"f8eb513ee5aeec1252dd78f55dab6585ba27cad8b958b89190de7593103d2bba","public":"account","lines":9},{"path":"readystack-php.conf","size":396,"sha256":"d15053c81ce9cba0fdd7c17d7b7456c844629b12ab521b072033baee92655a93","public":"account","lines":13},{"path":"readystack-php.ini","size":281,"sha256":"a6b6e823b84e85b51b368f40de925bea7fcc1c63991e09fcff27fe5705c136ca","public":"account","lines":3},{"path":"rebuild.json","size":1217,"sha256":"437591bdad7406f6dcf9ccaab42aa26c01c98be2822897c3034e45e6550cf589","public":"account","lines":31},{"path":"toolchain/BUILDKIT_TAG.txt","size":22,"sha256":"fcd530eeb02b063d2f047adad6eef896422a8e8d558513e5f09b2a262be32573","public":"full","lines":1,"url":"/api/recipe/bookstack/v26.09.2-CE-ubuntu24.04-r3/files/toolchain/BUILDKIT_TAG.txt","text":"moby/buildkit:v0.31.2\n"}],"skipped":[],"kit_adds":{"bases":{"files":5,"bytes":29771169},"docs":{"files":2680,"bytes":23643688},"toolchain":{"files":1,"bytes":111529472},"vendored":{"files":14817,"bytes":163086272}},"links":{"page":"https://readystack.dev/products/bookstack/recipe","signup":"https://readystack.dev/login.html?create=1&next=%2Fproducts%2Fbookstack%2Frecipe","kit":"https://readystack.dev/buy.html?product=bookstack"}}