Compare commits

..

1 Commits

Author SHA1 Message Date
MickLesk d0d2861678 docuseal: use DocuSeal's patched PDFium build to fix service start
DocuSeal switched to its own PDFium fork (upstream commit "adjust pdfium",
2026-08-15) and now attaches functions that only exist in that build, e.g.
FPDFPage_GetAnnotCountRaw from the added fpdf_annots_raw.h. The generic
bblanchon/pdfium-binaries library the script installed does not export them,
so lib/pdfium.rb raises FFI::NotFoundError while Rails eager-loads and both
docuseal.service and docuseal-sidekiq.service fail to start:

  Unable to load application: FFI::NotFoundError: Function
  'FPDFPage_GetAnnotCountRaw' not found in [libpdfium.so]

Install the library from docusealco/pdfium-binaries instead, matching the
upstream Dockerfile. It is only published as a musl build (DocuSeal's image is
Alpine based), so the musl runtime is installed and its library directory is
added to the loader search path - the shared object needs "libc.so" (musl) at
dlopen time. Verified on glibc: the library loads, resolves the raw annotation
functions and renders pages correctly.

The update path now refreshes PDFium too, so existing containers are repaired
by running "update" even when DocuSeal itself is already up to date.
2026-08-21 19:41:22 +00:00
5 changed files with 24 additions and 132 deletions
+12
View File
@@ -30,6 +30,18 @@ function update_script() {
exit
fi
ensure_dependencies musl
[[ -f /opt/pdfium/lib/libpdfium.so ]] || rm -f "$HOME/.pdfium"
fetch_and_deploy_gh_release "pdfium" "docusealco/pdfium-binaries" "prebuild" "latest" "/opt/pdfium" "pdfium-musl-$(arch_resolve "x86_64" "aarch64").zip"
if ! cmp -s /opt/pdfium/lib/libpdfium.so /usr/lib/libpdfium.so; then
msg_info "Updating PDFium"
install -m 644 /opt/pdfium/lib/libpdfium.so /usr/lib/libpdfium.so
echo "/usr/lib/$(arch_resolve "x86_64" "aarch64")-linux-musl" >/etc/ld.so.conf.d/musl.conf
ldconfig
systemctl restart docuseal docuseal-sidekiq
msg_ok "Updated PDFium"
fi
if check_for_gh_release "docuseal" "docusealco/docuseal"; then
msg_info "Stopping Services"
systemctl stop docuseal docuseal-sidekiq
-6
View File
@@ -1,6 +0,0 @@
____ _ ________ __ ______ _____
/ __ \ | / / ____/ / / / / __ \/ ___/
/ /_/ / | / / __/______/ / / / /_/ /\__ \
/ ____/| |/ / /__/_____/ /_/ / ____/___/ /
/_/ |___/_____/ \____/_/ /____/
-72
View File
@@ -1,72 +0,0 @@
#!/usr/bin/env bash
# Engine comes from community-scripts/core; this repo only ships the scripts.
# A local core checkout wins (COMMUNITY_SCRIPTS_CORE_DIR, else a sibling ../core),
# so a fork or branch of core can be tested without editing this file.
_cs_boot="${COMMUNITY_SCRIPTS_CORE_DIR:-$(dirname "${BASH_SOURCE[0]}")/../../core}/core/build.func"
source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_URL:-https://raw.githubusercontent.com/community-scripts/core/main}/core/build.func")
# Copyright (c) 2021-2026 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/ffind-dev/pve-ups
APP="PVE-UPS"
var_tags="${var_tags:-proxmox;ups;monitoring;network}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-4}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-no}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/pve-usv ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "pve-usv" "ffind-dev/pve-ups"; then
msg_info "Stopping Services"
systemctl stop pve-usv pve-usv-agent.path pve-usv-agent.timer
msg_ok "Stopped Services"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pve-usv" "ffind-dev/pve-ups" "tarball"
msg_info "Updating Application"
cd /opt/pve-usv
$STD uv venv --clear venv
$STD uv pip install --python venv/bin/python .
chown -R pveusv:pveusv /opt/pve-usv
chmod 0755 deploy/pve-usv-agent.sh
install -m 0644 deploy/pve-usv.service /etc/systemd/system/pve-usv.service
install -m 0644 deploy/pve-usv-agent.service /etc/systemd/system/pve-usv-agent.service
install -m 0644 deploy/pve-usv-agent.path /etc/systemd/system/pve-usv-agent.path
install -m 0644 deploy/pve-usv-agent.timer /etc/systemd/system/pve-usv-agent.timer
systemctl daemon-reload
msg_ok "Updated Application"
msg_info "Starting Services"
systemctl start pve-usv pve-usv-agent.path pve-usv-agent.timer
msg_ok "Started Services"
msg_ok "Updated ${APP}"
fi
exit
}
start
build_container
description
msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}"
+12 -9
View File
@@ -29,16 +29,16 @@ $STD apt install -y \
libvips-dev \
libheif1 \
redis-server \
fontconfig
fontconfig \
musl
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
PG_VERSION="17" setup_postgresql
PG_DB_NAME="docuseal" PG_DB_USER="docuseal" setup_postgresql_db
msg_info "Downloading Fonts and PDFium"
msg_info "Downloading Fonts"
mkdir -p /opt/fonts /usr/share/fonts/noto
ARCH=$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/')
curl -fsSL -o /opt/fonts/GoNotoKurrent-Regular.ttf \
https://github.com/satbyy/go-noto-universal/releases/download/v7.0/GoNotoKurrent-Regular.ttf
curl -fsSL -o /opt/fonts/GoNotoKurrent-Bold.ttf \
@@ -48,12 +48,15 @@ curl -fsSL -o /opt/fonts/DancingScript-Regular.otf \
ln -sf /opt/fonts/GoNotoKurrent-Regular.ttf /usr/share/fonts/noto/
ln -sf /opt/fonts/GoNotoKurrent-Bold.ttf /usr/share/fonts/noto/
$STD fc-cache -f
curl -fsSL -o /tmp/pdfium.tgz \
"https://github.com/bblanchon/pdfium-binaries/releases/latest/download/pdfium-linux-${ARCH}.tgz"
mkdir -p /tmp/pdfium && tar -xzf /tmp/pdfium.tgz -C /tmp/pdfium
cp /tmp/pdfium/lib/libpdfium.so /usr/lib/libpdfium.so
rm -rf /tmp/pdfium /tmp/pdfium.tgz
msg_ok "Downloaded Fonts and PDFium"
msg_ok "Downloaded Fonts"
fetch_and_deploy_gh_release "pdfium" "docusealco/pdfium-binaries" "prebuild" "latest" "/opt/pdfium" "pdfium-musl-$(arch_resolve "x86_64" "aarch64").zip"
msg_info "Installing PDFium"
install -m 644 /opt/pdfium/lib/libpdfium.so /usr/lib/libpdfium.so
echo "/usr/lib/$(arch_resolve "x86_64" "aarch64")-linux-musl" >/etc/ld.so.conf.d/musl.conf
ldconfig
msg_ok "Installed PDFium"
fetch_and_deploy_gh_release "docuseal" "docusealco/docuseal" "tarball"
-45
View File
@@ -1,45 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: CrazyWolf13
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/ffind-dev/pve-ups
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
setup_uv
fetch_and_deploy_gh_release "pve-usv" "ffind-dev/pve-ups" "tarball"
msg_info "Setting up Application"
useradd --system --home /opt/pve-usv --shell /usr/sbin/nologin pveusv
install -d -o pveusv -g pveusv -m 0750 \
/etc/pve-usv \
/var/lib/pve-usv \
/var/lib/pve-usv/agent \
/var/lib/pve-usv/agent/queue \
/var/lib/pve-usv/updates
chown -R pveusv:pveusv /opt/pve-usv
cd /opt/pve-usv
$STD uv venv --clear venv
$STD uv pip install --python venv/bin/python .
chmod 0755 deploy/pve-usv-agent.sh
msg_ok "Set up Application"
msg_info "Creating Services"
install -m 0644 /opt/pve-usv/deploy/pve-usv.service /etc/systemd/system/pve-usv.service
install -m 0644 /opt/pve-usv/deploy/pve-usv-agent.service /etc/systemd/system/pve-usv-agent.service
install -m 0644 /opt/pve-usv/deploy/pve-usv-agent.path /etc/systemd/system/pve-usv-agent.path
install -m 0644 /opt/pve-usv/deploy/pve-usv-agent.timer /etc/systemd/system/pve-usv-agent.timer
systemctl enable -q --now pve-usv pve-usv-agent.path pve-usv-agent.timer
msg_ok "Created Services"
motd_ssh
customize
cleanup_lxc