From 0b85f26a4e88bbc523edad7a5b12acc5670b84bc Mon Sep 17 00:00:00 2001 From: Matt Burns <1515005+m6urns@users.noreply.github.com> Date: Thu, 9 Jan 2025 11:10:02 -0700 Subject: [PATCH] Fix: Stirling-PDF > LibreOffice/unoconv Integration Issues (#1322) * Modify install script to install core libreoffice components. Configure a running libreoffice service and setup env variables so they are accessible to StirlingPDF. Modify stirlingPDF service to wait for libreoffice service to start. Enable and explicitly start libreoffice and stirlingPDF services. * Apply suggestions from code review Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update stirling-pdf-install.sh --------- Co-authored-by: Michel Roegl-Brunner --- install/stirling-pdf-install.sh | 67 ++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 17 deletions(-) diff --git a/install/stirling-pdf-install.sh b/install/stirling-pdf-install.sh index 788cb757..3fb5839a 100644 --- a/install/stirling-pdf-install.sh +++ b/install/stirling-pdf-install.sh @@ -36,7 +36,11 @@ msg_info "Installing LibreOffice Components" $STD apt-get install -y \ libreoffice-writer \ libreoffice-calc \ - libreoffice-impress + libreoffice-impress \ + libreoffice-core \ + libreoffice-common \ + libreoffice-base-core \ + python3-uno msg_ok "Installed LibreOffice Components" msg_info "Installing Python Dependencies" @@ -75,8 +79,8 @@ msg_ok "Installed Language Packs" msg_info "Installing Stirling-PDF (Additional Patience)" RELEASE=$(curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz -tar -xzf v$RELEASE.tar.gz +wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v${RELEASE}.tar.gz +tar -xzf v${RELEASE}.tar.gz cd Stirling-PDF-$RELEASE chmod +x ./gradlew $STD ./gradlew build @@ -86,37 +90,66 @@ mv ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ mv scripts /opt/Stirling-PDF/ ln -s /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar ln -s /usr/share/tesseract-ocr/5/tessdata/ /usr/share/tessdata -msg_ok "Installed Stirling-PDF v$RELEASE" +msg_ok "Installed Stirling-PDF" msg_info "Creating Service" -cat </etc/systemd/system/stirlingpdf.service +# Create LibreOffice listener service +cat </etc/systemd/system/libreoffice-listener.service [Unit] -Description=Stirling-PDF service -After=syslog.target network.target +Description=LibreOffice Headless Listener Service +After=network.target [Service] -SuccessExitStatus=143 - +Type=simple User=root Group=root - -Type=simple -EnvironmentFile=/opt/Stirling-PDF/.env -WorkingDirectory=/opt/Stirling-PDF -ExecStart=/usr/bin/java -jar Stirling-PDF.jar -ExecStop=/bin/kill -15 %n +ExecStart=/usr/lib/libreoffice/program/soffice --headless --invisible --nodefault --nofirststartwizard --nolockcheck --nologo --accept="socket,host=127.0.0.1,port=2002;urp;StarOffice.ComponentContext" +Restart=always [Install] WantedBy=multi-user.target EOF -systemctl enable -q --now stirlingpdf.service + +# Set up environment variables +cat </opt/Stirling-PDF/.env +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/libreoffice/program +UNO_PATH=/usr/lib/libreoffice/program +PYTHONPATH=/usr/lib/python3/dist-packages:/usr/lib/libreoffice/program +LD_LIBRARY_PATH=/usr/lib/libreoffice/program +EOF + +cat </etc/systemd/system/stirlingpdf.service +[Unit] +Description=Stirling-PDF service +After=syslog.target network.target libreoffice-listener.service +Requires=libreoffice-listener.service + +[Service] +SuccessExitStatus=143 +Type=simple +User=root +Group=root +EnvironmentFile=/opt/Stirling-PDF/.env +WorkingDirectory=/opt/Stirling-PDF +ExecStart=/usr/bin/java -jar Stirling-PDF.jar +ExecStop=/bin/kill -15 %n +Restart=always +RestartSec=10 + +[Install] +WantedBy=multi-user.target +EOF + +# Enable and start services +systemctl enable -q --now libreoffice-listener +systemctl enable -q --now stirlingpdf msg_ok "Created Service" motd_ssh customize msg_info "Cleaning up" -rm -rf v$RELEASE.tar.gz /zulu-repo_1.0.0-3_all.deb +rm -rf v${RELEASE}.tar.gz /zulu-repo_1.0.0-3_all.deb $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned"