Collabora Online für Nextcloud auf Ubuntu 16.04, ohne docker

Collabora Online 2.0.5

Für Nextcloud und Owncloud gibt es seit letztem Jahr eine Online Officelösung mit Collabora Online und dem  Collabora Online Connector. Ich will hier zeigen, wie man Collabora Online auf einem Ubuntu 16.04 installieren kann, ohne auf die angebotene Docker Lösung zurückzugreifen.

Im Nextcloud Forum gibt es eine gutes HowTo, das die grundsätzliche Vorgehensweise erklärt. Ich möchte einige Dinge aber etwas anders angehen.

Collabora Online oder Libreoffice Online

LibreOffice Online 2.0.5
LibreOffice Online 2.0.6
LibreOffice Online 5.3.1
Slider

 

Zunächst möchte ich kurz auf die beiden Versionen der Online Office Lösung eingehen. Die Consulting Firma Collabora Ltd. hat mit ihrer Collabora Productivity Division die Online Office Lösung für Owncloud und Nextcloud basierend auf der Libreoffice Suite vehement vorangetrieben. Die Collabora Producivity bietet neben einer eigenen Libreoffice Version zum professionellen Einsatz die zugehörige Beratung und den notwendigen Support. Collabora Productivity pflegt eigene Zweige des LibreOffice cores, sowie von LibreOffice online. Man findet diese Entwicklungszweige bequem auf dem read-only Mirror der LibreOffice Suite auf GitHub. Die Collabora Zweige haben das Präfix distro/collabora, siehe die folgenden beiden Seiten:

LibreOffice core Branches.

LibreOffice online Branches.

Der LibreOffice core Zweig distro/collabora/cp-5.3 ist, zum Zeitpunkt zu dem ich dies schreibe, neu. Der Branch-Punkt datiert auf den 17. Februar 2017. Die LibreOffice Branches hingegen tragen immer einen Namen nach dem Schema libreoffice-5-3 bzw. libreoffice-5-3-1.

Die zu den Zweigen gehörenden Releases finden wir auf den folgenden beiden Seiten:

LibreOffice core Releases.

LibreOffice online Releases.

Die aktuellen Collabora Office Releses sind cp-5.0-41, cp-5.1-23 und cp-5.3-2. Das aktuellste LibreOffice Release ist libreoffice-5.3.2.1.

Das aktuellste Collabora online Release ist z.Zt. 2.0.5, das aktuelle Libreoffice online Relase libreoffice-5.3.1.2. Ein erstes Collabora online Release 2.1.0 passend zum Collabora Office cp-5.3 branch wird sicher in Kürze folgen. Einen commit zum erhöhen der Versions Nummer hat es bereits gegeben.

Natürlich können wir auch einen Checkout des jeweiligen master Zweiges benutzen, im weiteren Verlauf des Artikels werde ich mich aus Stabilitätsgründen aber nur mit Release-Versionen beschäftigen. Um ein stabiles Funktionieren sicherzustellen, ist auf zusammenpassende Versionen von Libre- bzw. Collabora-Office core und den jeweiligen Libre- bzw. Collabora-Online Versionen zu achten.

Vorgehensweise

1.) Die Kompilierungen möchte ich nicht auf meinem Produktionsserver durchführen. Dies verbraucht zu viel Plattenplatz, Arbeitsspeicher und Prozessorresourcen.

2.) Ich möchte eine saubere Installation haben, ohne unötigen Ballast, möglichst sicher konfiguriert und vernünftig ins System integriert.

Dazu ist der Aufwand etwas höher, aber nicht unüberschaubar. Zunächst brauche ich neben meinem Produktionsserver (mein bekannter 1&1 Cloudserver), eine weitere Ubuntu 16.04 Instanz, auf der ich die Kompilierungen durchführen kann. Dazu habe ich eine Ubuntu 16.04 VM unter Virtualbox aufgesetzt. Der VM habe ich 4 Prozessoren, 4GByte Memory und eine 32 GByte Platte spendiert, das sollte für diesen Zweck genügen. Wir setzen auf einer Ubuntu 16.04.2 LTS Basic Server Installation auf und werden Schritt für Schritt durch die Installation der notwendigen Softwarepakete und durch das Kompilieren von CollaboraOffice/LibreOffice und Collabora- bzw. LibreOffice-Online gehen. Anschließend werde ich die Installation und Konfiguration auf dem Produktionsserver beschreiben.

Vorbereitung des Build Servers

Wir gehen aus von einer Ubuntu 16.04.2 LTS Basic Server Installation. Als erstes installieren wir das openssh-server paket. Der ssh Server ist praktisch, weil wir uns dann per ssh auf unserem Build Server einloggen können und nicht mit dem Virtualbox-Fenster herum schlagen müssen.

Nun können wir uns per ssh auf unserem Build Server einloggen.

Als nächstes aktualisieren wir alle bereits installierten Pakete.

Build-Voraussetzungen für LibreOffice

Als Nächstes installieren wir die Build Abhängigkeiten für LibreOffice. Die Installation scheitert zunächst wie folgt:

Ok, wenn wir in die Datei /etc/apt/sources.list schauen, sehen wir, dass alle Paketquellen für Source Pakete (deb-src) auskommentiert sind. Das ändern wir und löschen bei allen aktiven Paketquellen für die dazugehörigen Sourcequellen das Kommentarzeichen. Das können wir sehr einfach und bequem mit dem folgenden Script bewerkstelligen.

Danach können wir es nochmals versuchen.

Hierbei werden über 600 Pakete installiert.

Danach installieren wir noch ein paar zusätzliche Pakete, die wir ebenfalls benötigen.

Daneben brauchen wir noch ein aktuelles Poco. In den Ubuntu Repositories wird nur Version 1.3.6 angeboten, wir benötigen jedoch mindestens Version 1.7.6. Das bedeutet, dass wir auch Poco selbst kompilieren werden.

Build-Voraussetzungen für Poco

Um Poco kompilieren zu können, müssen wir ebenfalls noch ein paar Pakete installieren.

Dabei wird das Paket unixodbc-dev deinstalliert. Die mit  unixodbc-dev automatisch installierten Pakete können wir deinstallieren.

Build-Voraussetzungen für LibreOffice Online

Zum kompilieren von LibreOffice Online müssen wir ebenfalls noch ein paar Pakete installieren.

Danach rebooten wir unsere VM.

Pakete kompilieren

Nun werden wir die notwendigen Pakete kompilieren. Hierzu ein paar Vorbemerkungen:

  1. Kompilieren werden wir als Standard User, der beim aufsetzen der VM angelegt wurde.
  2. Wir kompilieren in einem Unterverzeichnis des User Home Verzeichnisses.
  3. Um das Handling zu vereinfachen werden wir alle Komponenten in ein Verzeichnis installieren.
  4. Der LibreOffice Online Server soll unter /opt/lool installiert werden und laufen, deshalb installieren wir alle Komponenten inkl. poco in dieses Verzeichnis.

Als Erstes treffen wir ein paar Vorbereitungen. Zunächst legen wir uns ein Verzeichnis an, in dem wir kompilieren werden, und wechseln in dieses Verzeichnis.

Danach legen wir uns eine Verzeichnisstruktur an und setzen dazu ein paar Environment Variablen. Die Environment Variablen werden wir auch im weiteren Verlauf noch nutzen.

Zuletzt definieren wir Variablen für die von uns verwendeten Versionen von poco, LibreOffice core, LibreOffice online sowie das Installationsverzeichnis. Alternativ für Collabora Online:

oder LibreOffice Online:

Nun können wir mit dem Kompilieren der Pakete beginnen.

Poco kompilieren

Wir benötigen die Sourcen für Unix der Poco Complete Edition. Diese laden wir folgendermaßen herunter.

Anschließend entpacken, kompilieren und installieren wir Poco. Wir installieren in das konfigurierte Verzeichnis /opt/lool, sowie in ein temporäres Verzeichnis, um ein tar-Archive zu erstellen.

Das Kompilieren dauert auf meinem System etwa 4 1/2 Minuten. Im Ergebnis haben wir nun Poco lokal unter /opt/lool installiert und haben ein tar-Archive poco-1.7.8.tar.xz unter ~/build-lool/packages erzeugt. Das Build Log ist im Verzeichnis ~/build-lool/logs zu finden.

LibreOffice kompilieren

Zunächst müssen wir die Quellen für LibreOffice core herunterladen.

Danach entpacken wir die LibreOffice core Quellen in unserem Buildverzeichnis und wechseln in das LibreOffice core Verzeichnis.

Bevor wir mit dem Kompilieren beginnen, lohnt sich ein Blick in die Hilfe des autogen Shellscripts.

Weitere Details zum Kompilieren von LibreOffice findet man auch auf dem Wiki der Document Foundation unter Building LibreOffice on Linux and *BSD systems: Tips and Tricks.

Bevor wir den LibreOffice core konfigurieren, müssen wir noch eine Datei sources.ver, die eine Information über die LibreOffice Source Version enthält, anlegen.

Danach konfigurieren wir LibreOffice mit dem folgenden Kommando:

Die Option --with-parallelism weist den Build Prozess an, mehere CPUs zu nutzen. Standard ist die Anzahl der verfügbaren CPUs. Mit  --with-parallelism=4  kann man aber auch eine feste Zahl an CPUs vorgeben.

Anschliessend können wir den Build Prozess starten.

Das holen der zusätzlichen externen Sourcen mit  make fetch  dauert bei mir knapp 2 Minuten und das Kompilieren mit  make  ca. 98 Minuten. Das abschliessende  make check  benötigt ca. 10 Minuten.

Nun können wir unser LibreOffice installieren.

Auch hier installieren wir zunächst nach /opt/lool, anschließend in ein temporäres Verzeichnis und erstellen daraus ein tar-Archive.  Insgesamt dauert dies etwa 5 1/2 Minuten, wovon 4 1/2 Minuten auf das Packen des tar-Archives entfallen. Das tar-Archive finden wir im Verzeichnis ~/build-lool/packages, das Build Log im Verzeichnis ~/build-lool/logs.

Abschließend löschen wir noch das temporäre Installationsverzeichnis.

Damit sind wir mit LibreOffice fertig und können uns LibreOffice Online zuwenden.

LibreOffice Online kompilieren

Zunächst müssen wir die Quellen herunterladen.

Danach entpacken wir die LibreOffice online Quellen in unserem Buildverzeichnis und wechseln in das LibreOffice online Verzeichnis.

Bevor wir mit dem Kompilieren beginnen, müssen wir noch zwei Dinge erledigen. Zunächst ändern wir im script loolwsd-systemplate-setup den Suchpfad für poco. Dies erledigen wir bequem mit der folgenden Kommandozeile.

Danach setzen wir noch eine Environment Variable für unsere LibreOffice core Distribution, collaboraoffice oder libreoffice, je nachdem was wir oben gewählt haben. Dies geht automatisch mit dem folgenden Befehl.

Anschließend müssen wir zunächst das autogen.sh script ausführen um ein configure script zu erhalten.

Jetzt können wir LibreOffice online für die Kompilierung konfigurieren.

Details zu den Konfigurationsoptionen finden wir in der README Datei im wsd Verzeichnis, bzw. in der configure Hilfe ./configure --help .

Nun können wir die Kompilierung starten.

Der Vorgang dauert auf meinem System etwa 70 Sekunden.

Während der Kompilierung werden wir nach dem User Passwort für sudo gefragt. Dies wird gebraucht um Capabilities für die beiden ausführbaren Programme loolforkit und loolmount zu setzen, dazu später noch mehr.

Ausserdem sehen wir Meldungen wie  find: lib/ld-*: No such file or directory  und  cpio: /home/rainer/lool-build/libreoffice/loolwsd/systemplate/lib/x86_64-linux-gnu/libc.so.6 not created: newer or same age version exists . Diese Meldungen sind ohne Belang, sie entstehen beim Zusammenstellen des Templates für die Chroot-Umgebung.

Nun können wir loolwsd installieren und ein tar-Archive erstellen.

Zuletzt wenden wir uns dem LibreOffice Online Client zu. Dieser Teil ist schnell erledigt.

Die Kompilierarbeiten sind damit abgeschlossen. Wir räumen zunächst noch ein wenig auf.

Abschliessende Arbeiten auf dem Build-System

Abschließend wollen wir noch den LibreOffice Online Client in unsere Verzeichnisstruktur unter /opt/lool installieren und ein paar Anpassungen durchführen.

Zuletzt erstellen wir ein tar-Archiv unserer Installation.

Das Packen mit xz dauert zwar ein paar Minuten, aber dafür ist das tar-Archive damit wesentlich kleiner und spart mir Zeit beim Übertragen auf meinen Produktionsserver. Ich habe nur eine Upload Bandbreite von nominell 2MBits/s, in der Realität etwa 75% davon.

Zuletzt übertragen wir das tar-Archive der Installation auf unseren Produktionsserver. Dazu legen wir auf dem Produktionsserver ein Verzeichnis install-lool im User-Verzeichnis an. Anschliessend können wir unser tar-Archive mit scp auf den Server kopieren.

User und Host-Domäne sind natürlich entsprechend anzupassen.

Bei mir benötigt die Übertragung der Datei ca. 16 Minuten.

Installation und Konfiguration von LibreOffice Online

Nun geht es auf dem Produktionsserver weiter. Ich gehe davon aus, dass wir auf dem Produktionsserver die folgenden Schritte als user root ausführen.

Zunächst installieren wir auch dort gegebenenfalls noch fehlende Software-Pakete.

Als nächstes erstellen wir eine Guppe und einen Benutzer für LibreOffice Online.

Danach setzen wir einige Environment Variablen, die wir im folgenden benutzen werden.

Dabei ist PKG_DIR das Verzeichnis, in das wir unser LibreOffice Online Paket gespeichert haben und LOOL_VERSION der Name der Datei ohne die „.tar.xz“ Extension. Für den Benutzer der LibreOffice Online Administrationskonsole sind ein sinnvoller Name und ein sicheres Passwort zu setzen. Die maximal bearbeitbare Dokumentengröße in Bytes können wir beliebig beschränken. Ein Wert von  "0"  bedeutet unbeschränkt. MY_NEXTCLOUD_DOMAIN ist der FQDN unserer Nextcloud Instanz. Der Name ist natürlich entsprechend anzupassen.

Dann entpacken wir unser LibreOffice Online Paket nach /opt/lool.

Als nächstes setzen wir die Capabilities für loolforkit und loolmount zum Erstellen bzw. Mounten der Jails.

Bevor wir fortfahren können, setzen wir noch zwei Environment Variablen, die unterschiedliche Pfade in Abhängigkeit der gewählten Office Version, Collabora Office oder LibreOffice, abbilden.

Danach erstellen wir das Sytem-Template für die Jails.

Wir erstellen die noch fehlenden Verzeichnisse, und passen owner und permissions an.

Dann müssen wir die Konfigurationsdatei loolwsd.xml noch anpassen.

Dem loolwsd Dienst spendieren wir noch ein selbstsigniertes SSL-Zertifikat. Dies ist ausreichend, da die Kommunikation über einen Reverseproxy erfolgen wird, den wir mit einem letsencrypt Zertifikat versehen.

Die beiden Environment Variablen sind den tatsächlichen Gegebenheiten anzupassen. Sie definieren den FQDN unter dem unser Online Office zu erreichen sein wird, bzw. die E-Mail-Adresse des Server Admins. Wir werden die beiden Variablen bei der Konfiguration des Reversproxies nochmals verwenden.

Zuletzt werden wir noch ein Service-File für systemd erstellen, damit der LibreOffice Online Dienst beim Reboot automatisch gestartet bzw. angehalten wird.

Wir lassen den systemd die Konfiguration neu laden, aktivieren den Service und starten ihn zuletzt.

Damit sollte unser LibreOffice Online Dienst laufen, was wir mit  systemctl status loolwsd überprüfen können.

Konfiguration des APACHE2 REVERSEPROXIES

Um LibreOffice Online in unserer Nextcloud Instanz nutzen zu können, konfigurieren wir einen Apache Reverse Proxy. Voraussetzung ist, dass wir vorher in der DNS Verwaltung unseres Hosters die DNS Einträge gesetzt haben.

Zunächst setzen wir einige Environment Variablen.

Die Variablen sind den tatsächlichen Gegebenheiten anzupassen. Die erste Variable beinhaltet den Namen für die Apache Site Konfiguration. MY_EMAIL enthält die E-Mail Adresse und MY_KEY_SIZE die Länge des Schlüssels für die Erzeugung des letsencrypt Zertifikats.

Danach erzeugen wir eine Apache Site Konfiguration und passen sie an unsere Gegebenheiten an.

Dann erzeugen wir das letsencrypt Zertifikat, aktivieren die notwendigen Apache Proxy-Module, unseren Proxy und starten den Apache neu.

Aktivieren der Collabora ONLINE APP in Nextcloud

Im letzten Schritt müssen wir noch die Collabora Online App in Nextcloud aktivieren und konfigurieren. Dazu loggen wir uns unter einem Admin Account auf unserer Nextcloud Instanz ein. Wir öffnen die App-Verwaltung und wählen die Kategorie Integration. Dort sehen wir die App Collabora Online, siehe folgende Abbildung.

Nextcloud Apps Integration
Nextcloud Apps Integration

Wir aktivieren die App und wechseln in die Nextcloud Administration, siehe nächstes Bild.

Nextcloud Administration
Nextcloud Administration

Hier entdecken wir einen neuen Menüpunkt Collabora Online. Wenn wir diesen Menüpunkt wählen, landen wir in der Konfiguration für die Collabora Online App. Einziger Konfigurationsparameter ist die URL für das Online Office, siehe nächste Abbildung.

Nextcloud Administration CollaboraOnline
Nextcloud Administration CollaboraOnline

Hier tragen wir die URL unseres Reverse Proxies ein und bestätigen mit dem Button „Anwenden“. Damit sind wir fertig und können das Online Office in Nextcloud benutzen, siehe die folgenden Abbildungen.

CollaboraOnline mit LibreOffice Writer Dokument (*.odt)
CollaboraOnline mit LibreOffice Writer Dokument (*.odt)
CollaboraOnline mit LibreOffice Calc Dokument (*.ods)
CollaboraOnline mit LibreOffice Calc Dokument (*.ods)
CollaboraOnline mit LibreOffice Impress Dokument (*.odp)
CollaboraOnline mit LibreOffice Impress Dokument (*.odp)

Auf der Administrationskonsole des Online Office erhalten wir Informationen zu den geöffneten Dokumenten und dem Speicherverbrauch des Dienstes. Die Administrationskonsole finden wir unter der folgenden URL: https://myoffice.mydomain.tld/loleaflet/dist/admin/admin.html

myoffice.mydomain.tld ist natürlich durch die tatsächliche Domain zu ersetzen. Zum Einloggen auf der Administrationskonsole müssen wir den oben definierten Benutzernamen und das oben definierte Passwort verwenden. Die beiden folgenden Abbildungen zeigen die Administrationskonsole.

LibreOffice Online Administrationskonsole Überblick
LibreOffice Online Administrationskonsole Überblick
LibreOffice Online Administrationskonsole Analytik
LibreOffice Online Administrationskonsole Analytik

Damit sind am Ende des Artikels angelangt. In den nächsten Wochen werde ich, soweit es meine Zeit zulässt, einen weiteren Artikel zur Installation eines 1&1 Cloudservers inkl. Nextcloud veröffentlichen. In diesem Artikel werde ich die Benutzung einer Scriptsammlung beschreiben, die den Prozess weitestgehend automatisiert. Vorausgesetzt ein fertiges LibreOffice Online Paket, wie oben beschrieben, steht zur Verfügung und die DNS Einträge in der 1&1 Domainveraltung sind gesetzt, ist der Server innerhalb von 15 Minuten aufgesetzt. Ein Script zum Erstellen des LibreOffice Online Pakets, gibt es ebenfalls. Wer schon einmal einen Blick auf die beiden Scriptsammlungen werfen möchte kann dies unter den folgenden URLs tun.

https://github.com/RainerEmrich/build-lool

https://github.com/RainerEmrich/install-cloud-server

37 Gedanken zu „Collabora Online für Nextcloud auf Ubuntu 16.04, ohne docker“

  1. Danke für diese prima Anleitung, das hat super funktioniert.

    Auf dem Produktivhost werden noch
    libdbus-glib-1-2
    libgl1-mesa-glx

    benötigt. Die waren bei mir nicht da und wurden durch

    systemctl status loolwsd

    angemeckert.

    Für den Apache sollten alle Proxy- und Davmodule aktiviert sein, sonst hagelt es 500er. mod_proxy alleine (ist Ubuntustandard) reicht nicht.

    Gruß,

    Maik

    1. Als Antwort auf Maik Riecken.

      Schön, wenn es geholfen hat.
      Eigentlich wäre ein update fällig, habe nur momentan keine Zeit dazu.

      Wichtige Punkte wären die Erhöhung der auch in der selbst kompilierten Version enthaltenen Dokument Limits.

      Zwischenzeitlich habe ich zwei Script-Sammlungen geschrieben, die alles mehr oder minder automatisieren.

      https://github.com/RainerEmrich/build-lool
      Konfiguriert eine Ubuntu 16.04 Instanz und führt die Kompilierung durch.

      https://github.com/RainerEmrich/install-cloud-server
      Konfiguriert eine Ubuntu 16.04 Instanz mit Nextcloud und allem was dazu gehört.
      Installiert optional das oben erstellte Callabora Online Office.
      Installiert optional weitere Nextcloud apps im batch mode.

      Funktioniert mit Nextcloud 12.0.2, Collabora Online Office 2.1.2-11.

      Herzliche Grüße

      Rainer

    1. Ich habe es gerade nochmals überprüft.

      1. Die Anweisung „mkdir -p ${SRC_DIR}/online“ ist da! Beim Copy und Paste vergessen?
      2. Auf die Seite https://github.com/LibreOffice/online/archive/ gibt es keinen Zugriff, das ist richtig. Welche Releases aktuell sind findet man auf der folgenden Seite: https://github.com/LibreOffice/online/releases/ . Der Download erfolgt dann aber von https://github.com/LibreOffice/online/archive/${LOOL_VERSION}.tar.gz . Das funktioniert so auch. Dir Environment Variablen müssen natürlich richtig gesetzt sein.

  2. Eine wirklich tolle Anleitung – hat bei mir auf einem Strato V-Server
    Linux V30 ohne Schwierigkeiten funktioniert. Docker funktioniert auf einer VM ja leider nicht.

    Frage: Später habe ich gesehen, dass man unter
    https://www.collaboraoffice.com/community-en/understanding-the-differences-between-libreoffice-online-code-and-collabora-online/
    auch fertige Pakete für Ubuntu 16.04. Welche Vorteile bietet das Selbstkompilieren dann noch? Oder enthält das Ubuntu-Paket schlichtweg das Docker Image?

    Beste Grüße,
    Robin

      1. Ich weiß nicht, wie das bei den Ubuntu Paketen mit den Beschränkungen der gleichzeitig offenen Dokumentenanzahl und der gleichzeitigen Verbindungen ausschaut. Müsste man gegebenenfalls mal prüfen. Kannst Du selbst machen:

        In der loolwsd.xml, unter dem xml tag logging, den level von default „warning“ auf „information“ ändern und den loolwsd system dienst restarten. Dann sollten die limits im log ausgegeben werden.

        Beim selbst kompilieren bist Du bei der Wahl der limits nur von den Resourcen Deines Rechners beschränkt. Die Limits kannst Du mit den beiden folgenden zusätzlichen configure Optionen wählen:
        –with-max-documents=${LOOL_MAX_DOC}
        –with-max-connections=${LOOL_MAX_CON}

        Die Defaults sind 10 für LOOL_MAX_DOC und 20 für LOOL_MAX_CON.

        Das configure Kommando für die Online Komponente sieht dann wie folgt aus:

        ./configure –prefix=${LOOL_PREFIX} \
        –with-poco-includes=${POCO_PREFIX}/include \
        –with-poco-libs=${POCO_PREFIX}/lib \
        –with-lokit-path=../core-${LOC_VERSION}/include \
        –with-lo-path=${LOOL_PREFIX}/lib/${LOC_DISTRO} \
        –with-logfile=${LOOL_PREFIX}/var/log/loolwsd/loolwsd.log \
        –with-max-connections=${LOOL_MAX_CON} \
        –with-max-documents=${LOOL_MAX_DOC} \
        | tee -a ${LOG_DIR}/online-${LOOL_VERSION}.log 2>&1

        Die Variablen LOOL_MAX_CON und LOOL_MAX_DOC musst Du natürlich vorher setzen.
        LOOL_MAX_CON muss größer sein als LOOL_MAX_DOC. Empfehlenswert ist LOOL_MAX_CON = 2 * LOOL_MAX_DOC.

        Ich hoffe das hilft. Ansonsten kann ich nur empfehlen sich meine Skriptsammlung https://github.com/RainerEmrich/build-lool anzusehen. Dort ziehe ich Änderungen immer nach. Momentan habe ich keine Zeit den Artikel zu aktualisieren.

    1. Hey Robin,

      ich hab seit kurzem ebenso einen V30 Server bei Strato. Auf lokalen VMs bekomme ich den Dienst online, jedoch bekomme ich leider den loolwsd.service nicht zum laufen. Was genau hast du getan? Hast du direkt auf dem VServer die Pakete kompiliert?

      Gruß Florian

  3. Ein wirklich tolles Tutorial! **chapeau**

    Leider habe ich aber Probleme mit der Integration des Dienstes auf einen VServer (Hosteurope) auf dem bereits eine Nextcloud läuft. Die abschließende Apache-Konfiguration führt bei mir immer zum nicht erreichen der Nextcloud. :/
    Für die Nextcloud habe ich bereits einen Zertifikat über Letsencrypt (Certbot) erzeugt . Eine Subdomain habe ich mir erstellt und diese im Tutorial an den entsprechenden Stellen eingesetzt.

    Liebe Grüße

  4. Hallo,

    bei mir hat das Kompilieren wunderbar geklappt, das Installieren auf einem Strato-Server ebenfalls. Der Dienst loolwsd läuft laut systemctl.

    Allerdings habe ich das Problem, dass der Dienst über den Proxy nicht erreichbar ist. Will ich z.B. https://office.mydomain/adminws aufrufen kommt lediglich „The requested URL /adminws was not found on this server.“
    Rufe ich einfach nur https://office.mydomain auf, erscheint die Apache2 Ubuntu Default Page. Die Apache-Konfiguration entpricht Ihrer Konfiguration bzw. der ofiziell-Vorgegebenen von Nextcloud und Collabore-Online.

    Wissen Sie woran dies liegen könnte?

  5. Super!

    Ich suche gerade eine Lösung die Limitierung von Collabora Online zu entfernen. Da ist die Einleitung doch perfekt.
    Müsste jetzt noch raus bekommen wie man dazu noch ein Docker baut. Finde das über Docker nämlich sehr genial.

    1. Wichtig ist, dass Du die entsprechenden configure Optionen zum setzen der Limits benutzt. Siehe meinen Kommentar vom 30. August.
      Ein docker image hat sicher Vorteile. Ob man ein docker image benutzen will, hängt ein wenig vom use case ab. Diese Vorgehensweise ohne docker image ermöglicht es sehr einfach das Online Office auch auf einem separaten Server zu betreiben.

        1. Ich bin gerade dabei für einen Kunden das Online Office auf Debian 8 jessie zu installieren. Die Anpassungen dafür sind in der neuesten Version des build-lool scripts enthalten. Wenn ich damit fertig bin und Zeit dazu finde, werde ich auch Debian 9 einbinden. Das kann aber ein wenig dauern.

  6. Danke für den tollen Artikel.

    Ich habe leider ein Problem und bekomme es nicht gelöst. Ich hoffe Sie können mir hierbei helfen.

    Ich habe die Anleitung inkl. die darin enthaltenen Versionen komplett befolgt. Im Einsatz befindet sich ein Ubuntu-Server 1604.

    Ich habe den Dienst loolwsd am laufen und kann mich auch ohne Probleme im Adminbereich anmelden. In Nextcloud (v. 12.0) habe ich das Collabore-Plugin aktiviert und die richtige Domain eingetragen. Möchte ich jetzt z.B ein neues ODT-Dokument bearbeiten, kommt die Collabore-Ansicht mit einer Ladeanzeige. Nach einer bestimmten Zeit kommt eine Meldung, dass keine Verbindung zum Dokument hergestellt werden konnte. Zudem kommt eine weitere Meldung, dass der Dienst nicht zur Verfügung steht.

    In der log-Datei von loolwsd steht folgendes:
    frk-27369-27369 0:00:00.003145 [ loolforkit ] FTL Failed to load /opt/lool/lib/libreoffice/program/libsofficeapp.so: libcairo.so.2: cannot open shared object file: No such file or directory| kit/Kit.cpp:1614

    haben Sie eine Idee woran es liegen könnte?

    1. Ok, auf dem Produktionsserver fehlen Pakete. In meinem Fall sind die meisten Pakete schon installiert, weil ich dort ein normales LibreOffice installiert habe. Das war für die alte Dokument app.
      Um etwa fehlende Pakete zu finden bitte folgendes machen:
      In das lool Office-Verzeichnis wechseln, z.B. cd /opt/lool/lib/collaboraoffice/program.
      Dort den folgenden Befehl ausführen: ldd * | grep „not found“
      Dabei ist der Eintrag „libjawt.so => not found“ in Ordnung, das macht nichts.
      Für die fehlenden Libraries auf https://packages.ubuntu.com/ unter „Durchsuchen des Inhalts von Paketen“ nach den zugehörigen Paketen suchen und diese nachinstallieren.
      Für den Fall libcairo.so.2, fehlt das Paket libcairo2.

      1. Vielen lieben Dank. Diese Info hat mir sehr weitergeholfen 🙂

        Nachdem ich die drei Pakete libcairo2, libdbus-glib-1-2 und libgtk-3-0 samt Abhängigkeiten installiert habe, geht es problemlos 🙂

        Der genannte Befehl bringt mir jetzt noch folgendes:
        libgstpbutils-1.0.so.0 => not found
        libgstvideo-1.0.so.0 => not found
        libgstreamer-1.0.so.0 => not found
        libjawt.so => not found
        libgtk-x11-2.0.so.0 => not found
        libSM.so.6 => not found
        libICE.so.6 => not found
        libgtk-x11-2.0.so.0 => not found
        libgdk-x11-2.0.so.0 => not found
        libSM.so.6 => not found
        libICE.so.6 => not found

        Da das Collabore-Plugin in Nextcloud jetzt funktioniert, habe ich keine weiteren Pakete gesucht. Empfehlen Sie für die noch aufgezählten Abhängigkeiten die Pakete trotzdem zu installieren?

        Ich habe die Version mit libreoffice Kompiliert anstatt collaboreoffice. Ist collaboreoffice eher zu empfehlen?

        1. Schön, wenn es geholfen hat.
          Letzt endlich hat man ein voll funktionsfähiges Libre Office installiert. Für das Online Office werden aber nicht alle Funktionen benötigt. Ich würde diese Pakete, inkl. der Abhängigkeiten, dennoch installieren. Nur libjawt.so ist wohl nicht unbedingt nötig, das findet der ldd auch auf meinem System auf dem ich das Office gebaut habe nicht, obwohl es vorhanden ist. Es ist Teil der java runtime.

    1. Ohne weitere Angaben ist das natürlich nicht zu beantworten.
      CDOE-3.0.0 benötigt den Collabora Office core cp-5.3-36. Ich habe CODE-3.0.0 erfolgreich mit poco-1.7.9p2 und core-cp-5.3-36 gebaut.
      Aktuelle kleine Änderungen können, wie hier schon mehrfach erwähnt, in der Scriptsammlung auf https://github.com/RainerEmrich/build-lool verfolgt werden.

      1. POCO_VERSION=“1.7.9p2″
        LOC_VERSION=“cp-5.3-36″
        LOOL_VERSION=“CODE-3.0.0″

        Klappt bei mir nicht. loolwsd will nicht starten. Im Github hatte ich ein Issue eröffnet, bliebt aber unbeantwortet, sodass ich hier im Blog schreibe.

        Unter /opt/lool/var findet man nur www, alle anderen Ordner fehlen.
        Lege ich var/log/loolwsd und var/cache/loolwsd an, startet loolwsd kurz:

        loolwsd.service – Collabora Online Office Service
        Loaded: loaded (/lib/systemd/system/loolwsd.service; enabled)
        Active: active (running) since Di 2018-01-09 15:37:14 CET; 15s ago
        Main PID: 998 (loolwsd)
        CGroup: /system.slice/loolwsd.service
        └─998 /opt/lool/bin/loolwsd

        Nach kurzer Zeit crashed der dann. Im Log steht:

        # cat loolwsd.log
        frk-01001-01001 14:37:15.519652 [ forkit ] FTL Capability cap_sys_chroot is not set for the loolforkit program.| kit/ForKit.cpp:168
        frk-01001-01001 14:37:15.519678 [ forkit ] FTL Capability cap_mknod is not set for the loolforkit program.| kit/ForKit.cpp:168
        frk-01001-01001 14:37:15.519684 [ forkit ] FTL Capability cap_fowner is not set for the loolforkit program.| kit/ForKit.cpp:168
        frk-01001-01001 14:37:15.519712 [ forkit ] WRN Waking up dead poll thread [delay_poll], started: false, finished: false| net/Socket.hpp:507
        frk-01001-01001 14:37:15.519721 [ forkit ] WRN Waking up dead poll thread [delay_poll], started: false, finished: false| net/Socket.hpp:507
        wsd-00998-00998 14:38:05.509757 [ loolwsd ] FTL Failed to fork child processes.| wsd/LOOLWSD.cpp:2703
        wsd-00998-00998 14:38:05.509929 [ loolwsd ] FTL Failed to fork child processes.| wsd/LOOLWSD.cpp:2853
        wsd-00998-00998 14:38:05.510116 [ loolwsd ] WRN Waking up dead poll thread [admin], started: false, finished: false| ./net/Socket.hpp:507
        wsd-00998-00998 14:38:05.510146 [ loolwsd ] WRN Waking up dead poll thread [admin], started: false, finished: false| ./net/Socket.hpp:507
        wsd-00998-00998 14:38:05.510619 [ loolwsd ] WRN Waking up dead poll thread [delay_poll], started: false, finished: false| ./net/Socket.hpp:507
        wsd-00998-00998 14:38:05.510634 [ loolwsd ] WRN Waking up dead poll thread [delay_poll], started: false, finished: false| ./net/Socket.hpp:507

        1. Die Fehlermeldungen sind doch eindeutig. Die ersten 3 Zeilen nennen die Ursache des Problems, die Capabilities sind nicht gesetzt.
          /sbin/setcap cap_fowner,cap_mknod,cap_sys_chroot=ep /opt/lool/bin/loolforkit
          /sbin/setcap cap_sys_admin=ep /opt/lool/bin/loolmount
          Das sollte helfen!

          1. Hi,

            das scheint es wirklich gewesen zu sein. Und ich hab wie ein verrückter am Kernel gebastelt 🙂

            Müsste das Script das nicht automatisch machen? Deswegen habe ich in der Richtung gar nicht geschaut.

            Und wieso wurden auch die Verzeichnisse var/log, var/cache und var/tmp nicht angelegt?
            Vielleicht ein Fehler im Script?

          2. Das build-lool script baut nur das Paket. Die Capabilities müssen auf dem Produktivsystem nochmals gesetzt werden, sonst geht’s nicht. Dies, das Anlegen der fehlenden Directories und noch einige andere Dinge, wie das Erzeugen eines Zertifikats, erledigt das install-lool script aus dem install-cloud-server repository.
            Dieses Script greift aber auf ein paar Konfigurationseinstellungen des install-server Scripts zu. Aber das ist leicht nachzuvollziehen.

  7. Hallo Herr Emrich,

    ich habe ihr lool-build-Skript verwendet um das Paket zu kompilieren. Die Version des Paketes ist lool-poco-1.8.1-core-cp-5.3-43-online-3.1-final.tar.xz

    Im Anschluss habe ich diese Anleitung für die Installation probiert. Hierbei ist bei dem Befehl ${LOOL_PREFIX}/bin/loolwsd-systemplate-setup ${LOOL_PREFIX}/var/systemplate ${OFFICE_PATH}
    folgende Ausgabe gekommen:
    find: ‘lib/ld-*’: No such file or directory
    find: ‘lib/libcap*’: No such file or directory
    find: ‘lib64/libcap*’: No such file or directory
    find: ‘lib/libattr*’: No such file or directory
    find: ‘lib/libnss_*’: No such file or directory
    find: ‘lib64/libnss_*’: No such file or directory
    find: ‘usr/lib/locale/en_US.utf8’: No such file or directory
    find: ‘usr/lib/locale/locale_archive’: No such file or directory
    find: ‘usr/share/liblangtag’: No such file or directory
    find: ‘usr/share/hyphen’: No such file or directory
    find: ‘usr/lib/libpng*’: No such file or directory
    find: ‘usr/lib64/libpng*’: No such file or directory
    find: ‘lib/ld-*’: No such file or directory
    find: ‘lib/libnss_*’: No such file or directory
    find: ‘lib64/libnss_*’: No such file or directory
    find: ‘lib/libcap*’: No such file or directory
    find: ‘lib64/libcap*’: No such file or directory
    find: ‘lib/libattr*’: No such file or directory
    find: ‘usr/lib/libpng*’: No such file or directory
    find: ‘usr/lib64/libpng*’: No such file or directory
    cpio: /opt/lool/var/systemplate/lib/x86_64-linux-gnu/libpng12.so.0 not created: newer or same age version exists
    163391 blocks

    Als ich mit der Installation fertig war, habe ich die Url https://collabore.mydomain.tld/loleaflet/dist/admin/admin.html aufgerufen (natürlich mit dem richtigen Domainnamen) und habe einen „Service Unavailable“-Error erhalten.

    Im Log steht folgendes:
    kit-05157-05155 16:41:30.148387 [ loolkit ] ERR Failed to install seccomp syscall filter| common/Seccomp.cpp:205
    kit-05157-05155 16:41:30.148458 [ loolkit ] ERR LibreOfficeKit security lockdown failed. Exiting.| kit/Kit.cpp:2106
    wsd-05153-05153 16:45:39.031106 [ loolwsd ] FTL Failed to fork child processes.| wsd/LOOLWSD.cpp:2749
    wsd-05153-05153 16:45:39.031264 [ loolwsd ] FTL Failed to fork child processes.| wsd/LOOLWSD.cpp:2899
    wsd-05153-05153 16:45:39.031421 [ loolwsd ] WRN Waking up dead poll thread [admin], started: false, finished: false| ./net/Socket.hpp:512
    wsd-05153-05153 16:45:39.031436 [ loolwsd ] WRN Waking up dead poll thread [admin], started: false, finished: false| ./net/Socket.hpp:512
    wsd-05153-05153 16:45:39.031920 [ loolwsd ] WRN Waking up dead poll thread [delay_poll], started: false, finished: false| ./net/Socket.hpp:512
    wsd-05153-05153 16:45:39.031928 [ loolwsd ] WRN Waking up dead poll thread [delay_poll], started: false, finished: false| ./net/Socket.hpp:512
    frk-05155-05155 16:45:39.035664 [ forkit ] FTL Pipe closed.| common/IoUtil.cpp:308

    Ich habe im Anschluss anstatt diese Anleitung, den entsprechenden Teil in ihrem install-lool.sh-Skript aus dem Git-Projekt install-lool angewandt um evtl. veraltete Konfigurationen auszuschließen. Hierbei entstandt genau das gleiche Problem.

    Können Sie mir hierbei helfen?

      1. Das Paket libseccomp2 ist installiert. Der Server ist bei Strato gemietet. Ich habe gestern, vor der versuchten Installation, den Server erst frisch aufsetzen lassen (Ubuntu 1604 ohne Plesk). Ich hatte zuvor ein genau nach diesem Artikel (inkl. der im Artikel genannten Versionen) kompilierten loolwsd-Dienst erfolgreich laufen. Ich wollte den Server neu sauber aufsetzen inkl. u.a. der neusten Version von loolwsd.

          1. Bevor ich den Server neu aufsetzen lassen habe (ebenfalls Ubuntu 1604), lief eine (nach diesem Artikel) per hand kompilierte Version (lool-poco-1.7.8-core-libreoffice-5.3.1.1-online-libreoffice-5.3.1.2). Nach der Neuinstallation dachte ich, dass ich direkt die aktuellste Version verwende, die ich mit ihrem Skript erstellt habe. Könnte der Fehler evtl. auch davon herrühren, dass beim kompilieren des Paketes etwas schief gelaufen ist?

  8. Hallo,

    hat schon jemand versucht …
    Core: cp-5.3-59
    Online: cd-3.4.0-5

    zu komplilieren? Bei mir treten immer wieder Fehler beim make check auf, mit make build-nocheck läuft alles ohne Probleme durch. Loolwsd startet ebenfalls ohne jegliche Fehler.

    Allerdings bekomme ich keine Dokumente geöffnet mit Nextcloud. Im Log ist zu sehen:

    wsd-03875-03888 2018-11-04 17:07:04.892675 [ websrv_poll ] WRN FileServerRequestHandler: File not found: Invalid URI request: [/loleaflet/3.4.0/loleaflet.html?WOPISrc=https%3A%2F%2Fmy.nextcloud.xyz%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F156546_oct4xxapqijw&title=Neues%20Dokument.odt&lang=de-DE&closebutton=1&revisionhistory=1].| wsd/FileServer.cpp:442

    Hatte das schon mit cp-5.3-57 – cp-5.3-59 probiert. Jedesmal File not found.

    Jemand eine Idee?

    1. Ich habe momentan leider keine Zeit mich näher damit zu befassen, habe aber die gleichen Symptome. Fehler beim „make check treten bei mir auch auf und offensichtlich stimmt beim wsd das mapping der Seiten nicht. Ich habe noch nicht herausgefunden warum, habe wie gesagt momentan aber leider keine Zeit mich darum zu kümmern.

  9. Hallo Rainer,

    ich bin schon ziemlich am verzweifeln 🙂

    Konnte das Problem mittlerweile einkreisen. Es liegt daran, dass die URL lautet /loleaflet/3.4.1/ und Apache hat ein Problem mit den Punkten im Pfad.

    Ich konnte bisher nicht herausfinden wie man den Pfad von 3.4.1 in dist oder wie auch immer ändert. Weißt du das zufällig?

    Also von

    /loleaflet/3.4.1/

    in

    /loleaflet/dist/

    1. Ich hatte letzte Woche versucht das Problem näher zu analysieren, bin aber leider auch noch nicht wirklich weiter gekommen.
      Sorry, ich habe momentan wirklich keine Zeit übrig, um dem nachzugehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.