From c0d12a797a4cdad8c91ebbe1f31b4b7cd55dd93a Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Fri, 10 Apr 2026 08:20:19 +0200 Subject: [PATCH] fix(bentopdf): serve libreoffice wasm gz with correct nginx headers Fix Word/Excel conversion hang by serving /libreoffice-wasm assets with proper MIME types and Content-Encoding. - serve soffice.wasm.gz as application/wasm + Content-Encoding: gzip - serve soffice.data.gz as octet-stream + Content-Encoding: gzip - add immutable caching for wasm/data assets - always refresh nginx site+service during update to migrate existing installs - switch install script dependency handling to ensure_dependencies nginx --- ct/bentopdf.sh | 41 +++++++++++++++++++++++++++++-------- install/bentopdf-install.sh | 28 ++++++++++++++++++++++++- 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/ct/bentopdf.sh b/ct/bentopdf.sh index 1126cf067..a400b896d 100644 --- a/ct/bentopdf.sh +++ b/ct/bentopdf.sh @@ -54,9 +54,8 @@ function update_script() { msg_ok "Updated BentoPDF" msg_info "Starting Service" - if ! command -v nginx &>/dev/null; then - ensure_dependencies nginx - cat <<'EOF' >/etc/nginx/sites-available/bentopdf + ensure_dependencies nginx + cat <<'EOF' >/etc/nginx/sites-available/bentopdf server { listen 8080; server_name _; @@ -72,6 +71,33 @@ server { gzip_static on; + location ~* /libreoffice-wasm/soffice\.wasm\.gz$ { + gzip off; + types {} default_type application/wasm; + add_header Content-Encoding gzip; + add_header Vary "Accept-Encoding"; + add_header Cache-Control "public, immutable"; + } + + location ~* /libreoffice-wasm/soffice\.data\.gz$ { + gzip off; + types {} default_type application/octet-stream; + add_header Content-Encoding gzip; + add_header Vary "Accept-Encoding"; + add_header Cache-Control "public, immutable"; + } + + location ~* \.wasm$ { + types {} default_type application/wasm; + expires 1y; + add_header Cache-Control "public, immutable"; + } + + location ~* \.(wasm\.gz|data\.gz|data)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + location / { try_files $uri $uri/ $uri.html =404; } @@ -79,9 +105,9 @@ server { error_page 404 /404.html; } EOF - rm -f /etc/nginx/sites-enabled/default - ln -sf /etc/nginx/sites-available/bentopdf /etc/nginx/sites-enabled/bentopdf - cat <<'EOF' >/etc/systemd/system/bentopdf.service + rm -f /etc/nginx/sites-enabled/default + ln -sf /etc/nginx/sites-available/bentopdf /etc/nginx/sites-enabled/bentopdf + cat <<'EOF' >/etc/systemd/system/bentopdf.service [Unit] Description=BentoPDF Service After=network.target @@ -95,8 +121,7 @@ Restart=always [Install] WantedBy=multi-user.target EOF - systemctl daemon-reload - fi + systemctl daemon-reload systemctl start bentopdf msg_ok "Started Service" msg_ok "Updated successfully!" diff --git a/install/bentopdf-install.sh b/install/bentopdf-install.sh index 38b90e542..db4ca12db 100644 --- a/install/bentopdf-install.sh +++ b/install/bentopdf-install.sh @@ -13,7 +13,6 @@ setting_up_container network_check update_os - msg_info "Installing Dependencies" $STD apt install nginx -y msg_ok "Installed Dependencies" @@ -48,6 +47,33 @@ server { gzip_static on; + location ~* /libreoffice-wasm/soffice\.wasm\.gz$ { + gzip off; + types {} default_type application/wasm; + add_header Content-Encoding gzip; + add_header Vary "Accept-Encoding"; + add_header Cache-Control "public, immutable"; + } + + location ~* /libreoffice-wasm/soffice\.data\.gz$ { + gzip off; + types {} default_type application/octet-stream; + add_header Content-Encoding gzip; + add_header Vary "Accept-Encoding"; + add_header Cache-Control "public, immutable"; + } + + location ~* \.wasm$ { + types {} default_type application/wasm; + expires 1y; + add_header Cache-Control "public, immutable"; + } + + location ~* \.(wasm\.gz|data\.gz|data)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + } + location / { try_files $uri $uri/ $uri.html =404; }