From a339c08bca0fbd0a4a8742c55022e3672ae7c7dc Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Wed, 22 Jul 2026 08:18:21 +0200 Subject: [PATCH] InvoiceNinja: preserve and Re-download snappdf Chromium (#15956) * Re-download snappdf Chromium after Invoice Ninja updates update_script() redeploys /opt/invoiceninja via CLEAN_INSTALL, which wipes vendor/beganovich/snappdf/versions. That path isn't covered by create_backup/restore_backup, so the Chromium binary snappdf needs for PDF generation was missing after every update, breaking PDFs (#15942). Re-run the same "vendor/bin/snappdf download" step the install script already does, right after the backup is restored. * Back up snappdf's Chromium download to avoid re-fetching on every update vendor/bin/snappdf download is idempotent: it exits immediately without downloading if versions/revision.txt already exists, and PDF generation doesn't check that version against the installed snappdf package - it just uses whatever's in versions/. So the cached Chromium build survives just fine across an update via the existing backup/restore mechanism. Add vendor/beganovich/snappdf/versions to create_backup/restore_backup; keep the snappdf download call only as a safety net for when the backup doesn't have it yet (e.g. the first update after this fix ships). * Remove explanatory comment --- ct/invoiceninja.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ct/invoiceninja.sh b/ct/invoiceninja.sh index 34cb88110..d24034c66 100644 --- a/ct/invoiceninja.sh +++ b/ct/invoiceninja.sh @@ -35,12 +35,18 @@ function update_script() { systemctl stop supervisor nginx php8.4-fpm msg_ok "Stopped Services" - create_backup /opt/invoiceninja/.env /opt/invoiceninja/storage /opt/invoiceninja/public/storage + create_backup /opt/invoiceninja/.env /opt/invoiceninja/storage /opt/invoiceninja/public/storage /opt/invoiceninja/vendor/beganovich/snappdf/versions CLEAN_INSTALL=1 fetch_and_deploy_gh_release "invoiceninja" "invoiceninja/invoiceninja" "prebuild" "latest" "/opt/invoiceninja" "invoiceninja.tar.gz" restore_backup + msg_info "Verifying Chromium for PDF Generation" + cd /opt/invoiceninja + $STD ./vendor/bin/snappdf download + chown -R www-data:www-data /opt/invoiceninja/vendor/beganovich/snappdf/versions + msg_ok "Verified Chromium for PDF Generation" + msg_info "Running Migrations" cd /opt/invoiceninja $STD php artisan migrate --force