diff --git a/Dockerfile b/Dockerfile index f9541e1b..cab6fbec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -197,7 +197,7 @@ RUN echo "[+] Initializing image collection..." \ "$DATA_DIR"/logs "$DATA_DIR"/logs/* "$DATA_DIR"/sources \ "$DATA_DIR"/archive "$DATA_DIR"/archive/users "$DATA_DIR"/personas \ "$DATA_DIR"/tmp "$DATA_DIR"/tmp/* \ - "$TMP_DIR" "$LIB_DIR" "$PLAYWRIGHT_BROWSERS_PATH" "/home/$ARCHIVEBOX_USER/.cache/abxbus" "/home/$ARCHIVEBOX_USER/.cache/abxbus/semaphores" \ + "$TMP_DIR" "$LIB_DIR" "$PLAYWRIGHT_BROWSERS_PATH" "/home/$ARCHIVEBOX_USER/.cache" \ 2>/dev/null || true) \ && find "$TMP_DIR" -mindepth 1 -maxdepth 1 -exec rm -rf {} + @@ -213,8 +213,10 @@ RUN "$LIB_DIR/playwright/bin/chromium" --version | tee -a /VERSION.txt \ && stat -c "%U:%G %a %n" "$LIB_DIR" "$PLAYWRIGHT_BROWSERS_PATH" \ && setpriv --reuid="$ARCHIVEBOX_USER" --regid="$ARCHIVEBOX_USER" --init-groups test -w "$LIB_DIR" \ && setpriv --reuid="$ARCHIVEBOX_USER" --regid="$ARCHIVEBOX_USER" --init-groups archivebox version 2>&1 | tee -a /VERSION.txt \ - && chown -R "$DEFAULT_PUID:$DEFAULT_PGID" "/home/$ARCHIVEBOX_USER/.cache/abxbus" \ + && chown -R "$DEFAULT_PUID:$DEFAULT_PGID" "/home/$ARCHIVEBOX_USER/.cache" \ && setpriv --reuid="$ARCHIVEBOX_USER" --regid="$ARCHIVEBOX_USER" --init-groups test -w "/home/$ARCHIVEBOX_USER/.cache/abxbus/semaphores" \ + && setpriv --reuid="$ARCHIVEBOX_USER" --regid="$ARCHIVEBOX_USER" --init-groups test -w "/home/$ARCHIVEBOX_USER/.cache/uv" \ + && setpriv --reuid="$ARCHIVEBOX_USER" --regid="$ARCHIVEBOX_USER" --init-groups abx-dl install \ && rm -rf /root/.cache /var/cache/apt/* /var/lib/apt/lists/* RUN (echo -e "\n\n[√] Finished ArchiveBox multistage Docker build successfully." \ diff --git a/bin/docker_entrypoint.sh b/bin/docker_entrypoint.sh index a0ca8339..1f31eb2f 100755 --- a/bin/docker_entrypoint.sh +++ b/bin/docker_entrypoint.sh @@ -37,6 +37,8 @@ export ARCHIVEBOX_USER="${ARCHIVEBOX_USER:-archivebox}" export PERSONAS_DIR="${PERSONAS_DIR:-$DATA_DIR/personas}" export PLAYWRIGHT_BROWSERS_PATH="${PLAYWRIGHT_BROWSERS_PATH:-$LIB_DIR/playwright/cache}" export ABXBUS_CACHE_DIR="${ABXBUS_CACHE_DIR:-${XDG_CACHE_HOME:-/home/archivebox/.cache}/abxbus}" +export UV_CACHE_DIR="${UV_CACHE_DIR:-${XDG_CACHE_HOME:-/home/archivebox/.cache}/uv}" +export PNPM_HOME="${PNPM_HOME:-${XDG_CACHE_HOME:-/home/archivebox/.cache}/pnpm}" # Global default PUID and PGID if data dir is empty and no intended PUID+PGID is set manually by user export DEFAULT_PUID=911 @@ -226,11 +228,15 @@ find /tmp "$TMP_DIR" -maxdepth 1 -type d -name "archivebox-chrome-profile.*" -mm ensure_dir "/home/$ARCHIVEBOX_USER" ensure_small_runtime_tree "$ABXBUS_CACHE_DIR" ensure_small_runtime_tree "$ABXBUS_CACHE_DIR/semaphores" +ensure_small_runtime_tree "$UV_CACHE_DIR" +ensure_small_runtime_tree "$PNPM_HOME" ensure_runtime_tree "$PLAYWRIGHT_BROWSERS_PATH" ensure_runtime_tmp_tree ensure_runtime_tree "$LIB_DIR" run_as_archivebox touch "$ABXBUS_CACHE_DIR/semaphores/.permissions_test_safe_to_delete" 2>/dev/null || permission_error "$ABXBUS_CACHE_DIR/semaphores" rm -f "$ABXBUS_CACHE_DIR/semaphores/.permissions_test_safe_to_delete" +run_as_archivebox touch "$UV_CACHE_DIR/.permissions_test_safe_to_delete" 2>/dev/null || permission_error "$UV_CACHE_DIR" +rm -f "$UV_CACHE_DIR/.permissions_test_safe_to_delete" # (this check is written in blood in 2023, QEMU silently breaks things in ways that are not obvious) export IN_QEMU="$(pmap 1 | grep qemu >/dev/null && echo 'True' || echo 'False')" diff --git a/etc/package.json b/etc/package.json index 28d55ef0..3d2e7841 100644 --- a/etc/package.json +++ b/etc/package.json @@ -1,6 +1,6 @@ { "name": "archivebox", - "version": "0.9.35rc5", + "version": "0.9.35rc6", "repository": "github:ArchiveBox/ArchiveBox", "license": "MIT", "dependencies": { diff --git a/pyproject.toml b/pyproject.toml index 702914af..f2170588 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "archivebox" -version = "0.9.35rc5" +version = "0.9.35rc6" requires-python = ">=3.13" description = "Self-hosted internet archiving solution." authors = [{name = "Nick Sweeting", email = "pyproject.toml@archivebox.io"}] @@ -79,9 +79,9 @@ dependencies = [ ### Extractor dependencies (optional binaries detected at runtime via shutil.which) ### Binary/Package Management "abxbus==2.5.10", # EventBus API - "abxpkg>=1.11.190", # for: detecting, versioning, and installing binaries via apt/brew/pip/npm - "abx-plugins>=1.11.194", # shared ArchiveBox plugin package with Chrome/Puppeteer dependency wiring - "abx-dl>=1.11.194", # shared ArchiveBox downloader package with blocking install preflight + "abxpkg>=1.11.191", # for: detecting, versioning, and installing binaries via apt/brew/pip/npm + "abx-plugins>=1.11.195", # shared ArchiveBox plugin package with Chrome/Puppeteer dependency wiring + "abx-dl>=1.11.195", # shared ArchiveBox downloader package with blocking install preflight ### UUID7 backport for Python <3.14 "uuid7>=0.1.0; python_version < '3.14'", # provides the uuid_extensions module on Python 3.13 ]