In diesem kurzen Beitrag möchte ich festhalten, wie LibreOffice (OpenOffice klappt auch) im „Headless-Modus“ installiert werden kann. In meinem Fall benötigen wir die Headless Installation, weil ich ein PHP Skript im Einsatz habe um diverse Daten in ein PDF, DOC oder XLS konvertieren zu können
Ausgangslage
Als Server OS wird Ubuntu 20.04 eingesetzt. Auf diesem ist ebenfalls PHP 8.1 installiert inkl Caddy Webserver (PHP und Caddy sind nicht relevant für den Betrieb des Headless-Modus.
Benötigte Pakete
Legen wir gleich los und installieren uns folgende Pakete:
sudo apt update
sudo apt --no-install-recommends install libreoffice
Mit diesem Befehl haben wir LibreOffice installiert, damit wir nun Dokumente konvertieren können benötigen wir noch JODConverter (inkl. seinen Abhängigkeiten).
sudo apt install default-jre libreoffice-java-commonstart jodconverter
Somit haben wir alle Pakete auf unserem System installiert. Mit folgendem Befehl kann nun LibreOffice „Headless“ gestartet werden:
/usr/bin/libreoffice --headless --nologo --nofirststartwizard --accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1
Um das ganze testen zu können, kann nun einfach eine Text Datei angelegt werden und via folgendem Befehl, kann diese Text Datei in ein PDF konvertiert werden
jodconverter test.txt test.pdf
Tada, schon haben wir eine Datei konvertiert. Wie unschwer zu erwarten ist die Verwendung von JODConverter recht simpel:
jodconverter INPUT OUTPUT
Symstemd Script anlegen
Damit wir nicht immer LibreOffice manuell starten müssen, bietet es sich an hierfür ein Systemd Script anzulegen.
Im ersten Schritt legen wir eine libreoffice.service Datei unter /etc/systemd/system/ an
sudo touch /etc/systemd/system/libreoffice.service
Der Inhalt der Service Datei sieht folgendermaßen aus (kann einfach kopiert und eingefügt werden).
[Unit]
Description=Control headless libreoffice instance
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/libreoffice --headless \
--accept=socket,host=127.0.0.1,port=8100;urp; \
--pidfile=/var/run/libreoffice.pid --nologo --nodefault --nofirststartwizard
RestartSec=5
ExecStop=/usr/bin/pkill -F /var/run/libreoffice.pid
PIDFile=/var/run/libreoffice.pid
[Install]
WantedBy=multi-user.target
Zum Schluss muss das systemd Script noch aktiviert werden und anschließen kann der LibreOffice Dienst über sudo service libreoffice (start|reload|stop) verwaltet werden.
Um den Service zu aktivieren muss folgender Befehl eingegeben werden:
sudo systemctl enable libreoffice.service
Das wars auch schon, viel Spaß mit der kleinen Anleitung 🙂
Schreibe einen Kommentar