From c0a49af4cedcb3028661f3c6919b42dae531e1b1 Mon Sep 17 00:00:00 2001 From: Tom Frenzel Date: Fri, 19 Jun 2026 19:03:48 +0200 Subject: [PATCH] feat(paperless-ngx): update to v3 --- ct/paperless-ngx.sh | 17 +++++++++++------ install/paperless-ngx-install.sh | 7 +++---- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/ct/paperless-ngx.sh b/ct/paperless-ngx.sh index da6dffd0db8..60730ec9e95 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.sh @@ -49,8 +49,7 @@ function update_script() { fi fi - RELEASE="v2.20.15" - if check_for_gh_release "paperless" "paperless-ngx/paperless-ngx" "${RELEASE}" "v3 needs further testing"; then + if check_for_gh_release "paperless" "paperless-ngx/paperless-ngx"; then msg_info "Stopping all Paperless-ngx Services" systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue msg_ok "Stopped all Paperless-ngx Services" @@ -64,7 +63,7 @@ function update_script() { msg_ok "Backup completed to $BACKUP_DIR" PYTHON_VERSION="3.13" setup_uv - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "${RELEASE}" "/opt/paperless" "paperless*tar.xz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "v3.0.0-beta.rc1" "/opt/paperless" "paperless*tar.xz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc" . /etc/os-release @@ -76,12 +75,17 @@ function update_script() { msg_info "Updating Paperless-ngx" cp -r "$BACKUP_DIR"/* /opt/paperless/ + grep -q '^PAPERLESS_DBENGINE=' /opt/paperless/paperless.conf || echo 'PAPERLESS_DBENGINE=postgresql' >>/opt/paperless/paperless.conf cd /opt/paperless $STD uv sync --all-extras cd /opt/paperless/src $STD uv run -- python manage.py migrate msg_ok "Updated Paperless-ngx" + # zxing-cpp replaces pyzbar in v3, libzbar is no longer required + $STD apt-get -y purge libzbar0t64 libzbar0 2>/dev/null || true + $STD apt-get -y autoremove 2>/dev/null || true + rm -rf "$BACKUP_DIR" else @@ -139,7 +143,7 @@ function update_script() { msg_ok "Backup completed to $BACKUP_DIR" PYTHON_VERSION="3.13" setup_uv - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "${RELEASE}" "/opt/paperless" "paperless*tar.xz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "v2.20.15" "/opt/paperless" "paperless*tar.xz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc" . /etc/os-release @@ -151,13 +155,14 @@ function update_script() { msg_ok "Installed Ghostscript" fi - msg_info "Updating Paperless-ngx" + msg_info "Updating Paperless-ngx to v2.20.15" cp -r "$BACKUP_DIR"/* /opt/paperless/ cd /opt/paperless $STD uv sync --all-extras cd /opt/paperless/src $STD uv run -- python manage.py migrate - msg_ok "Paperless-ngx migration and update completed" + msg_ok "Migrated to uv and updated to v2.20.15 (required before v3)" + msg_custom "ℹ️" "Run the update again to complete the upgrade to the latest version (v3)." rm -rf "$BACKUP_DIR" if [[ -d /opt/paperless/backup ]]; then diff --git a/install/paperless-ngx-install.sh b/install/paperless-ngx-install.sh index 639783a89f6..2f36656686b 100644 --- a/install/paperless-ngx-install.sh +++ b/install/paperless-ngx-install.sh @@ -22,7 +22,6 @@ $STD apt install -y \ optipng \ libpq-dev \ libmagic-dev \ - libzbar0t64 \ poppler-utils \ default-libmysqlclient-dev \ automake \ @@ -46,7 +45,7 @@ msg_ok "Installed Dependencies" PG_VERSION="16" setup_postgresql PG_DB_NAME="paperlessdb" PG_DB_USER="paperless" setup_postgresql_db PYTHON_VERSION="3.13" setup_uv -fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "v2.20.15" "/opt/paperless" "paperless*tar.xz" +fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "v3.0.0-beta.rc1" "/opt/paperless" "paperless*tar.xz" msg_info "Setup Paperless-ngx" cd /opt/paperless @@ -69,12 +68,12 @@ sed -i \ -e "s|#PAPERLESS_MEDIA_ROOT=../media|PAPERLESS_MEDIA_ROOT=/opt/paperless_data/media|" \ -e "s|#PAPERLESS_EMPTY_TRASH_DIR=|PAPERLESS_EMPTY_TRASH_DIR=/opt/paperless_data/trash|" \ -e "s|#PAPERLESS_STATICDIR=../static|PAPERLESS_STATICDIR=/opt/paperless/static|" \ - -e 's|#PAPERLESS_DBHOST=localhost|PAPERLESS_DBHOST=localhost|' \ + -e 's|#PAPERLESS_DBHOST=localhost|PAPERLESS_DBENGINE=postgresql\nPAPERLESS_DBHOST=localhost|' \ -e 's|#PAPERLESS_DBPORT=5432|PAPERLESS_DBPORT=5432|' \ -e "s|#PAPERLESS_DBNAME=paperless|PAPERLESS_DBNAME=$PG_DB_NAME|" \ -e "s|#PAPERLESS_DBUSER=paperless|PAPERLESS_DBUSER=$PG_DB_USER|" \ -e "s|#PAPERLESS_DBPASS=paperless|PAPERLESS_DBPASS=$PG_DB_PASS|" \ - -e "s|#PAPERLESS_SECRET_KEY=change-me|PAPERLESS_SECRET_KEY=$SECRET_KEY|" \ + -e "s|^#\?PAPERLESS_SECRET_KEY=.*|PAPERLESS_SECRET_KEY=$SECRET_KEY|" \ /opt/paperless/paperless.conf cd /opt/paperless/src set -a