2026-07-28 04:02:50 UTC
766 MB
7169605F62C751356D054A26A821E680E5FA6305
LANGC.UTF-8
PATH/command:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PNGX_CONTAINERIZED1
PYTHONDONTWRITEBYTECODE1
PYTHONUNBUFFERED1
PYTHONWARNINGSignore:::django.http.response:517
PYTHON_SHA256c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
PYTHON_VERSION3.12.13
S6_BEHAVIOUR_IF_STAGE2_FAILS2
S6_CMD_WAIT_FOR_SERVICES_MAXTIME0
S6_VERBOSITY1
UV_LINK_MODEcopy
UV_TOOL_BIN_DIR/usr/local/bin
[#000] sha256:e95a6c7ea7d49b37920899b023ecd0e32796c976c1748491f76cae53ba86d13a - 3.71% (28.4 MB)
[#001] sha256:aff2d9f8dc87f4c10bbb7f438f3a325169379776bdfad5c49e4be5acc3c2f192 - 0.16% (1.23 MB)
[#002] sha256:df79d931cd67092e2b8e48d8f6369922571efe4ee0f9af71636ce36600481492 - 1.51% (11.5 MB)
[#003] sha256:b32430367bf08f32c23778909985ac645d1794f0aeef670aa796a50c8751527d - 0.0% (248 Bytes)
[#004] sha256:dafb78acf6e7df31a5e9ea0c71b22dd39fcaf26c74a7458dc6913ef0260f2ba5 - 3.42% (26.2 MB)
[#005] sha256:ddc0d95b3c26ce189564c11fe3899a203c1472d2050007d9e33b774487f7a275 - 0.0% (132 Bytes)
[#006] sha256:67596829472ea318d3e4d44db0f32f68869d41bfcdaae9cb85b14e6dcdf4ab9e - 0.47% (3.64 MB)
[#007] sha256:b6e47b044c9bbc9d9ba59be8f834f9ce1d4ac40922ad4e70587ac2a76b241682 - 0.0% (11.9 KB)
[#008] sha256:7619cdbc25346a7185f3657929dcb7f03fc352ab627e4c35f35ed3fb3687a043 - 20.95% (160 MB)
[#009] sha256:d4d7496a2f2334736fc2d907098af952f3a0533e28e42dc20fef531638f9663e - 0.0% (150 Bytes)
[#010] sha256:9daa70ff8a5ba21bc991f18dba16b8b6c905f9c2458d3a825a16f0560b886b74 - 0.04% (282 KB)
[#011] sha256:b4ddff1e97fb5ce85e0343bb04d269c4fcb8783690616e2007066813df40b8cf - 53.08% (407 MB)
[#012] sha256:50f8af1629a0e91028f5ec01695d17634b771040c2ae3f22552b6af51debe100 - 0.14% (1.08 MB)
[#013] sha256:d57e5ef6ab461f4e8d6bd04f00c5384607d20e4f3d234431ff86f075ff74d7c6 - 9.06% (69.4 MB)
[#014] sha256:0b5be22d3b899edfa406307a5558e4bde32c3c81a2a5d1bcc28c762901d0d677 - 7.45% (57.1 MB)
# debian.sh --arch 'amd64' out/ 'trixie' '@1782172800'
2026-06-24 02:01:30 UTC (buildkit.dockerfile.v0)ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2026-06-24 02:01:30 UTC (buildkit.dockerfile.v0)ENV LANG=C.UTF-8
2026-06-24 02:01:30 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit
2026-06-24 02:01:30 UTC (buildkit.dockerfile.v0)ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
2026-06-24 02:01:30 UTC (buildkit.dockerfile.v0)ENV PYTHON_VERSION=3.12.13
2026-06-24 02:01:30 UTC (buildkit.dockerfile.v0)ENV PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
2026-06-24 02:10:24 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
2026-06-24 02:10:24 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
2026-06-24 02:10:24 UTC (buildkit.dockerfile.v0)CMD ["python3"]
2026-07-07 23:07:53 UTC (buildkit.dockerfile.v0)COPY /uv /uvx /usr/local/bin/ # buildkit
2026-07-07 23:07:53 UTC (buildkit.dockerfile.v0)ENV UV_TOOL_BIN_DIR=/usr/local/bin
2026-07-07 23:07:53 UTC (buildkit.dockerfile.v0)ENTRYPOINT []
2026-07-07 23:07:53 UTC (buildkit.dockerfile.v0)CMD ["/usr/local/bin/uv"]
2026-07-15 15:38:36 UTC (buildkit.dockerfile.v0)WORKDIR /usr/src/s6
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 S6_VERBOSITY=1 PATH=/command:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG TARGETARCH=amd64
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG TARGETVARIANT=
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG S6_OVERLAY_VERSION=3.2.2.0
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG S6_BUILD_TIME_PKGS=curl xz-utils
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)RUN |4 TARGETARCH=amd64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils /bin/sh -c set -eux && echo "Installing build time packages" && apt-get update && apt-get install --yes --quiet --no-install-recommends ${S6_BUILD_TIME_PKGS} && echo "Determining arch" && S6_ARCH="" && if [ "${TARGETARCH}${TARGETVARIANT}" = "amd64" ]; then S6_ARCH="x86_64"; elif [ "${TARGETARCH}${TARGETVARIANT}" = "arm64" ]; then S6_ARCH="aarch64"; fi && if [ -z "${S6_ARCH}" ]; then { echo "Error: Not able to determine arch"; exit 1; }; fi && echo "Installing s6-overlay for ${S6_ARCH}" && curl --fail --silent --no-progress-meter --show-error --location --remote-name-all --parallel --parallel-max 4 "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz" "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz.sha256" "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_ARCH}.tar.xz" "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_ARCH}.tar.xz.sha256" && echo "Validating s6-archive checksums" && sha256sum --check ./*.sha256 && echo "Unpacking archives" && tar --directory / -Jxpf s6-overlay-noarch.tar.xz && tar --directory / -Jxpf s6-overlay-${S6_ARCH}.tar.xz && echo "Removing downloaded archives" && rm ./*.tar.xz && rm ./*.sha256 && echo "Cleaning up image" && apt-get --yes purge ${S6_BUILD_TIME_PKGS} && apt-get --yes autoremove --purge && rm -rf /var/lib/apt/lists/* # buildkit
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)COPY ./docker/rootfs / # buildkit
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.authors=paperless-ngx team <hello@paperless-ngx.com>
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.documentation=https://docs.paperless-ngx.com/
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.source=https://github.com/paperless-ngx/paperless-ngx
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.url=https://github.com/paperless-ngx/paperless-ngx
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.licenses=GPL-3.0-only
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG DEBIAN_FRONTEND=noninteractive
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG TARGETARCH=amd64
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG JBIG2ENC_VERSION=0.30
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PYTHONWARNINGS=ignore:::django.http.response:517 PNGX_CONTAINERIZED=1 UV_LINK_MODE=copy
2026-07-15 15:38:46 UTC (buildkit.dockerfile.v0)ARG RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils
2026-07-15 15:39:13 UTC (buildkit.dockerfile.v0)RUN |7 TARGETARCH=amd64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils DEBIAN_FRONTEND=noninteractive JBIG2ENC_VERSION=0.30 RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils /bin/sh -c set -eux echo "Installing system packages" && apt-get update && apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES} && echo "Installing pre-built updates" && curl --fail --silent --no-progress-meter --show-error --location --remote-name-all https://github.com/paperless-ngx/builder/releases/download/jbig2enc-trixie-v${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb && echo "Installing jbig2enc" && dpkg --install ./jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb && echo "Configuring imagemagick" && cp /etc/ImageMagick-6/paperless-policy.xml /etc/ImageMagick-6/policy.xml && echo "Cleaning up image layer" && rm --force --verbose *.deb && rm --recursive --force --verbose /var/lib/apt/lists/* # buildkit
2026-07-15 15:39:13 UTC (buildkit.dockerfile.v0)WORKDIR /usr/src/paperless/src/
2026-07-28 03:58:11 UTC (buildkit.dockerfile.v0)COPY --chown=1000:1000 pyproject.toml uv.lock /usr/src/paperless/src/ # buildkit
2026-07-28 03:58:11 UTC (buildkit.dockerfile.v0)ARG BUILD_PACKAGES= build-essential default-libmysqlclient-dev pkg-config
2026-07-28 03:59:05 UTC (buildkit.dockerfile.v0)RUN |8 TARGETARCH=amd64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils DEBIAN_FRONTEND=noninteractive JBIG2ENC_VERSION=0.30 RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils BUILD_PACKAGES= build-essential default-libmysqlclient-dev pkg-config /bin/sh -c set -eux && echo "Installing build system packages" && apt-get update && apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} && echo "Installing Python requirements" && uv export --quiet --no-dev --all-extras --format requirements-txt --output-file requirements.txt && uv pip install --no-cache --system --no-python-downloads --python-preference system --index https://pypi.org/simple --index https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --requirements requirements.txt && echo "Installing NLTK data" && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" snowball_data && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" stopwords && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" punkt_tab && echo "Cleaning up image" && apt-get --yes purge ${BUILD_PACKAGES} && apt-get --yes autoremove --purge && apt-get clean --yes && rm --recursive --force --verbose *.whl && rm --recursive --force --verbose /var/lib/apt/lists/* && rm --recursive --force --verbose /tmp/* && rm --recursive --force --verbose /var/tmp/* && rm --recursive --force --verbose /var/cache/apt/archives/* && truncate --size 0 /var/log/*log # buildkit
2026-07-28 03:59:05 UTC (buildkit.dockerfile.v0)COPY --chown=1000:1000 ./src ./ # buildkit
2026-07-28 03:59:42 UTC (buildkit.dockerfile.v0)COPY --chown=1000:1000 /src/src/documents/static/frontend/ ./documents/static/frontend/ # buildkit
2026-07-28 04:02:50 UTC (buildkit.dockerfile.v0)RUN |8 TARGETARCH=amd64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils DEBIAN_FRONTEND=noninteractive JBIG2ENC_VERSION=0.30 RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils BUILD_PACKAGES= build-essential default-libmysqlclient-dev pkg-config /bin/sh -c set -eux && sed -i '1s|^#!/usr/bin/env python3|#!/command/with-contenv python3|' manage.py && echo "Setting up user/group" && addgroup --gid 1000 paperless && useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless && echo "Creating volume directories" && mkdir --parents --verbose /usr/src/paperless/data && mkdir --parents --verbose /usr/src/paperless/media && mkdir --parents --verbose /usr/src/paperless/consume && mkdir --parents --verbose /usr/src/paperless/export && echo "Creating gnupg directory" && mkdir -m700 --verbose /usr/src/paperless/.gnupg && echo "Adjusting all permissions" && chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless && echo "Making fontconfig cache writable for arbitrary container UIDs" && chmod 1777 /var/cache/fontconfig && echo "Making /run world-writable for rootless operation" && chmod 1777 /run && echo "Removing setuid from s6-overlay-suexec for rootless compat" && chmod u-s /command/s6-overlay-suexec && echo "Collecting static files" && PAPERLESS_SECRET_KEY=build-time-dummy s6-setuidgid paperless python3 manage.py collectstatic --clear --no-input --link && PAPERLESS_SECRET_KEY=build-time-dummy s6-setuidgid paperless python3 manage.py compilemessages && /usr/local/bin/deduplicate.py --verbose /usr/src/paperless/static/ # buildkit
2026-07-28 04:02:50 UTC (buildkit.dockerfile.v0)VOLUME [/usr/src/paperless/data /usr/src/paperless/media /usr/src/paperless/consume /usr/src/paperless/export]
2026-07-28 04:02:50 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["/init"]
2026-07-28 04:02:50 UTC (buildkit.dockerfile.v0)EXPOSE [8000/tcp]
2026-07-28 04:02:50 UTC (buildkit.dockerfile.v0)HEALTHCHECK {Test:[CMD curl -fs -S -L --max-time 2 http://localhost:8000] Interval:30s Timeout:10s StartPeriod:0s StartInterval:0s Retries:5}
2026-07-28 04:00:50 UTC
722 MB
7169605F62C751356D054A26A821E680E5FA6305
LANGC.UTF-8
PATH/command:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PNGX_CONTAINERIZED1
PYTHONDONTWRITEBYTECODE1
PYTHONUNBUFFERED1
PYTHONWARNINGSignore:::django.http.response:517
PYTHON_SHA256c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
PYTHON_VERSION3.12.13
S6_BEHAVIOUR_IF_STAGE2_FAILS2
S6_CMD_WAIT_FOR_SERVICES_MAXTIME0
S6_VERBOSITY1
UV_LINK_MODEcopy
UV_TOOL_BIN_DIR/usr/local/bin
[#000] sha256:3be819c1c8cfde074541a1d875fbf2da3642b0ec6bb39aaa2ce7d56052b67dc1 - 3.98% (28.8 MB)
[#001] sha256:7af48765385d1829dcd55a84e2bb1711e7ae9ed8c2a78cb1894ecccee67155fd - 0.17% (1.22 MB)
[#002] sha256:cffa4384564c01362ec4028304df9debd74692071dbe4dc24e4e0597b5fce5e8 - 1.59% (11.5 MB)
[#003] sha256:0f1b58ea93c802a468c35d692ba5c076833dfcdbe8a3c659bd88988cddb03058 - 0.0% (250 Bytes)
[#004] sha256:d5301c17a65bc4185cb9de2ccacc6f3046c7ba04623f29c52fe81154d09af88e - 3.4% (24.6 MB)
[#005] sha256:d549239d17bf1cf9c4e4c1b48982bfb937c3f217f604ef4461f4feeac132fa83 - 0.0% (132 Bytes)
[#006] sha256:df33eefa41e00612c4a65b56362a2396866694f8787303cffae677875b206f5a - 0.57% (4.12 MB)
[#007] sha256:b6e47b044c9bbc9d9ba59be8f834f9ce1d4ac40922ad4e70587ac2a76b241682 - 0.0% (11.9 KB)
[#008] sha256:23e0f6d8ca2fbd8b66a3ab0cade3372b3e6f57a694f96d0ebb01d9eee280d9fb - 21.97% (159 MB)
[#009] sha256:6da2625392b09e6ea7ab6dc42268b9afa43b26e1668c4fb8b54265b2ada72cdb - 0.0% (150 Bytes)
[#010] sha256:bc00225072032bfc88a484f8ee93a301f89673cf23a9e5e29eef33ab5b5d5b5a - 0.04% (282 KB)
[#011] sha256:c933dba29fa47ca2225f994ba758fc976f10bdcfade052b7b6a4828d01d1b5a2 - 50.59% (365 MB)
[#012] sha256:ddecd4d045bbaa198736b994b8b33599aad96faa07f1cbe4814c5299f584a50a - 0.15% (1.08 MB)
[#013] sha256:c1d8b5cb29e60dd412fd6eec6561069f6a5723702b36f173c95bd6b456fa7240 - 9.62% (69.4 MB)
[#014] sha256:cc96df27a5f1dac8e1f9bfb5aac81da0abc552e284e00de19c3ffb9037da4cc9 - 7.91% (57.1 MB)
# debian.sh --arch 'arm64' out/ 'trixie' '@1782172800'
2026-06-24 02:05:30 UTC (buildkit.dockerfile.v0)ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2026-06-24 02:05:30 UTC (buildkit.dockerfile.v0)ENV LANG=C.UTF-8
2026-06-24 02:05:30 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit
2026-06-24 02:05:30 UTC (buildkit.dockerfile.v0)ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
2026-06-24 02:05:30 UTC (buildkit.dockerfile.v0)ENV PYTHON_VERSION=3.12.13
2026-06-24 02:05:30 UTC (buildkit.dockerfile.v0)ENV PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
2026-06-24 02:17:10 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
2026-06-24 02:17:10 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
2026-06-24 02:17:10 UTC (buildkit.dockerfile.v0)CMD ["python3"]
2026-07-07 23:07:54 UTC (buildkit.dockerfile.v0)COPY /uv /uvx /usr/local/bin/ # buildkit
2026-07-07 23:07:54 UTC (buildkit.dockerfile.v0)ENV UV_TOOL_BIN_DIR=/usr/local/bin
2026-07-07 23:07:54 UTC (buildkit.dockerfile.v0)ENTRYPOINT []
2026-07-07 23:07:54 UTC (buildkit.dockerfile.v0)CMD ["/usr/local/bin/uv"]
2026-07-15 15:38:33 UTC (buildkit.dockerfile.v0)WORKDIR /usr/src/s6
2026-07-15 15:38:56 UTC (buildkit.dockerfile.v0)ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 S6_VERBOSITY=1 PATH=/command:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
2026-07-15 15:38:56 UTC (buildkit.dockerfile.v0)ARG TARGETARCH=arm64
2026-07-15 15:38:56 UTC (buildkit.dockerfile.v0)ARG TARGETVARIANT=
2026-07-15 15:38:56 UTC (buildkit.dockerfile.v0)ARG S6_OVERLAY_VERSION=3.2.2.0
2026-07-15 15:38:56 UTC (buildkit.dockerfile.v0)ARG S6_BUILD_TIME_PKGS=curl xz-utils
2026-07-15 15:38:56 UTC (buildkit.dockerfile.v0)RUN |4 TARGETARCH=arm64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils /bin/sh -c set -eux && echo "Installing build time packages" && apt-get update && apt-get install --yes --quiet --no-install-recommends ${S6_BUILD_TIME_PKGS} && echo "Determining arch" && S6_ARCH="" && if [ "${TARGETARCH}${TARGETVARIANT}" = "amd64" ]; then S6_ARCH="x86_64"; elif [ "${TARGETARCH}${TARGETVARIANT}" = "arm64" ]; then S6_ARCH="aarch64"; fi && if [ -z "${S6_ARCH}" ]; then { echo "Error: Not able to determine arch"; exit 1; }; fi && echo "Installing s6-overlay for ${S6_ARCH}" && curl --fail --silent --no-progress-meter --show-error --location --remote-name-all --parallel --parallel-max 4 "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz" "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz.sha256" "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_ARCH}.tar.xz" "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-${S6_ARCH}.tar.xz.sha256" && echo "Validating s6-archive checksums" && sha256sum --check ./*.sha256 && echo "Unpacking archives" && tar --directory / -Jxpf s6-overlay-noarch.tar.xz && tar --directory / -Jxpf s6-overlay-${S6_ARCH}.tar.xz && echo "Removing downloaded archives" && rm ./*.tar.xz && rm ./*.sha256 && echo "Cleaning up image" && apt-get --yes purge ${S6_BUILD_TIME_PKGS} && apt-get --yes autoremove --purge && rm -rf /var/lib/apt/lists/* # buildkit
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)COPY ./docker/rootfs / # buildkit
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.authors=paperless-ngx team <hello@paperless-ngx.com>
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.documentation=https://docs.paperless-ngx.com/
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.source=https://github.com/paperless-ngx/paperless-ngx
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.url=https://github.com/paperless-ngx/paperless-ngx
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)LABEL org.opencontainers.image.licenses=GPL-3.0-only
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)ARG DEBIAN_FRONTEND=noninteractive
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)ARG TARGETARCH=arm64
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)ARG JBIG2ENC_VERSION=0.30
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PYTHONWARNINGS=ignore:::django.http.response:517 PNGX_CONTAINERIZED=1 UV_LINK_MODE=copy
2026-07-15 15:38:59 UTC (buildkit.dockerfile.v0)ARG RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils
2026-07-15 15:39:46 UTC (buildkit.dockerfile.v0)RUN |7 TARGETARCH=arm64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils DEBIAN_FRONTEND=noninteractive JBIG2ENC_VERSION=0.30 RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils /bin/sh -c set -eux echo "Installing system packages" && apt-get update && apt-get install --yes --quiet --no-install-recommends ${RUNTIME_PACKAGES} && echo "Installing pre-built updates" && curl --fail --silent --no-progress-meter --show-error --location --remote-name-all https://github.com/paperless-ngx/builder/releases/download/jbig2enc-trixie-v${JBIG2ENC_VERSION}/jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb && echo "Installing jbig2enc" && dpkg --install ./jbig2enc_${JBIG2ENC_VERSION}-1_${TARGETARCH}.deb && echo "Configuring imagemagick" && cp /etc/ImageMagick-6/paperless-policy.xml /etc/ImageMagick-6/policy.xml && echo "Cleaning up image layer" && rm --force --verbose *.deb && rm --recursive --force --verbose /var/lib/apt/lists/* # buildkit
2026-07-15 15:39:46 UTC (buildkit.dockerfile.v0)WORKDIR /usr/src/paperless/src/
2026-07-28 03:57:47 UTC (buildkit.dockerfile.v0)COPY --chown=1000:1000 pyproject.toml uv.lock /usr/src/paperless/src/ # buildkit
2026-07-28 03:57:47 UTC (buildkit.dockerfile.v0)ARG BUILD_PACKAGES= build-essential default-libmysqlclient-dev pkg-config
2026-07-28 03:58:27 UTC (buildkit.dockerfile.v0)RUN |8 TARGETARCH=arm64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils DEBIAN_FRONTEND=noninteractive JBIG2ENC_VERSION=0.30 RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils BUILD_PACKAGES= build-essential default-libmysqlclient-dev pkg-config /bin/sh -c set -eux && echo "Installing build system packages" && apt-get update && apt-get install --yes --quiet --no-install-recommends ${BUILD_PACKAGES} && echo "Installing Python requirements" && uv export --quiet --no-dev --all-extras --format requirements-txt --output-file requirements.txt && uv pip install --no-cache --system --no-python-downloads --python-preference system --index https://pypi.org/simple --index https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --requirements requirements.txt && echo "Installing NLTK data" && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" snowball_data && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" stopwords && python3 -W ignore::RuntimeWarning -m nltk.downloader -d "/usr/share/nltk_data" punkt_tab && echo "Cleaning up image" && apt-get --yes purge ${BUILD_PACKAGES} && apt-get --yes autoremove --purge && apt-get clean --yes && rm --recursive --force --verbose *.whl && rm --recursive --force --verbose /var/lib/apt/lists/* && rm --recursive --force --verbose /tmp/* && rm --recursive --force --verbose /var/tmp/* && rm --recursive --force --verbose /var/cache/apt/archives/* && truncate --size 0 /var/log/*log # buildkit
2026-07-28 03:58:27 UTC (buildkit.dockerfile.v0)COPY --chown=1000:1000 ./src ./ # buildkit
2026-07-28 03:59:07 UTC (buildkit.dockerfile.v0)COPY --chown=1000:1000 /src/src/documents/static/frontend/ ./documents/static/frontend/ # buildkit
2026-07-28 04:00:50 UTC (buildkit.dockerfile.v0)RUN |8 TARGETARCH=arm64 TARGETVARIANT= S6_OVERLAY_VERSION=3.2.2.0 S6_BUILD_TIME_PKGS=curl xz-utils DEBIAN_FRONTEND=noninteractive JBIG2ENC_VERSION=0.30 RUNTIME_PACKAGES= curl gosu tzdata fonts-liberation gettext ghostscript gnupg icc-profiles-free imagemagick postgresql-client mariadb-client tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-ita tesseract-ocr-spa unpaper pngquant jbig2dec libxml2 libxslt1.1 qpdf file libmagic1 media-types zlib1g poppler-utils BUILD_PACKAGES= build-essential default-libmysqlclient-dev pkg-config /bin/sh -c set -eux && sed -i '1s|^#!/usr/bin/env python3|#!/command/with-contenv python3|' manage.py && echo "Setting up user/group" && addgroup --gid 1000 paperless && useradd --uid 1000 --gid paperless --home-dir /usr/src/paperless paperless && echo "Creating volume directories" && mkdir --parents --verbose /usr/src/paperless/data && mkdir --parents --verbose /usr/src/paperless/media && mkdir --parents --verbose /usr/src/paperless/consume && mkdir --parents --verbose /usr/src/paperless/export && echo "Creating gnupg directory" && mkdir -m700 --verbose /usr/src/paperless/.gnupg && echo "Adjusting all permissions" && chown --from root:root --changes --recursive paperless:paperless /usr/src/paperless && echo "Making fontconfig cache writable for arbitrary container UIDs" && chmod 1777 /var/cache/fontconfig && echo "Making /run world-writable for rootless operation" && chmod 1777 /run && echo "Removing setuid from s6-overlay-suexec for rootless compat" && chmod u-s /command/s6-overlay-suexec && echo "Collecting static files" && PAPERLESS_SECRET_KEY=build-time-dummy s6-setuidgid paperless python3 manage.py collectstatic --clear --no-input --link && PAPERLESS_SECRET_KEY=build-time-dummy s6-setuidgid paperless python3 manage.py compilemessages && /usr/local/bin/deduplicate.py --verbose /usr/src/paperless/static/ # buildkit
2026-07-28 04:00:50 UTC (buildkit.dockerfile.v0)VOLUME [/usr/src/paperless/data /usr/src/paperless/media /usr/src/paperless/consume /usr/src/paperless/export]
2026-07-28 04:00:50 UTC (buildkit.dockerfile.v0)ENTRYPOINT ["/init"]
2026-07-28 04:00:50 UTC (buildkit.dockerfile.v0)EXPOSE [8000/tcp]
2026-07-28 04:00:50 UTC (buildkit.dockerfile.v0)HEALTHCHECK {Test:[CMD curl -fs -S -L --max-time 2 http://localhost:8000] Interval:30s Timeout:10s StartPeriod:0s StartInterval:0s Retries:5}
Please be careful as this will not just delete the reference but also the actual content!
For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.