Collabora Online (LibreOffice) für Nextcloud – Schritt für Schritt (Docker)

9 Kommentare Autor: Jürgen (jdo)

CODE steht für Collabora Online Development Edition und ist im Grunde genommen LibreOffice für den Browser oder LibreOffice Online. Collabora arbeitet mit den Entwickler der Nextcloud zusammen. Es gibt eine App im Store der Nextcloud, mit der sich Collabora Online in die Nextcloud integrieren lässt. Damit das funktioniert, musst Du aber einen Dokumentenserver am Laufen haben.

Für große Installationen empfehlen die Entwickler einen separaten Server, infos habe ich im Nextcloud Hosting Artikel. Für kleine Instanzen und auch den Heimgebrauch, kannst Du die Docker-Version von Code nutzen. Also es kommt ein bisschen auf die Hardware an. Mein Server von Contabo kommt damit locker zurecht und ich kann bitblokes.de, Nextcloud und Collabora Online auf dem gleichen Gerät betreiben (die virtuelle Kiste langweilt sich immer noch). Im Endeffekt musst Du ausprobieren, ob sich Deine Hardware dafür eignet. Eine Nutzung des Docker Containers auf dem Raspberry Pi lässt sich wohl ausschließen, da Collabora Online schon gleich mal 500 MByte RAM beim Start schnappt und für die Nutzung auch einiges an Ressourcen braucht.

Für diese Anleitung setze ich meine Installation von Nextcloud 14 unter Ubuntu 18.04 LTS Server voraus. Im Beitrag kommen 2 Domains vor und sieh bitte gut hin, denn da gibt es eine kleine Falle. Zumindest bin ich rein getappt. Meine Beispiel-Domains musst Du natürlich mit Deinen ersetzen:

  • nextcloud.example.org – die Beispiel-Domain, unter der meine Nextcloud erreichbar ist
  • office.example.org – unter der Domain ist mein Dokumentenserver, also CODE oder LibreOffice Online erreichbar.

Legen wir los?

Docker installieren und Apache vorbereiten – Reverse Proxy einrichten

Hinweis: Ich habe Apache am Laufen, weil ich mich damit einfacher besser als mit Nginx auskenne. Das ist wirklich der einzige Grund. Für Nginx gibt es ähnliche Anleitungen.

Zunächst einmal benötigen wir Docker auf unserem Ubuntu Server. Das ist schnell erledigt:

sudo apt install docker.io

Mehr musst Du an dieser Stelle nicht tun. Für Apache sind noch einige Module zu aktivieren, die vielleicht schon laufen, vielleicht auch nicht. Führe einfach die nachfolgenden Befehle aus, weil sie auch nichts schaden. Du bekommst höchstens eine Meldung, dass das Modul bereits aktiviert ist:

sudo a2enmod proxy
sudo a2enmod proxy_wstunnel
sudo a2enmod proxy_http
sudo a2enmod ssl

Im Anschluss startest Du Apache neu:

sudo systemctl restart apache2

Nun habe ich die Datei /etc/apache2/sites-available/office.conf angelegt und die sieht bei mir wie folgt aus. Du musst eigentlich lediglich die Zeile ServerName office.example.org so abändern, dass Deine eigene Domain hinterlegt wird, die als Dokumentenserver dienen soll.

<VirtualHost *:80>
   ServerAdmin webmaster@example.org
   ServerName office.example.org

   # Encoded slashes need to be allowed
   AllowEncodedSlashes NoDecode

   # Container uses a unique non-signed certificate
   SSLProxyEngine On
   SSLProxyVerify None
   SSLProxyCheckPeerCN Off
   SSLProxyCheckPeerName Off

   # keep the host
   ProxyPreserveHost On

   # static html, js, images, etc. served from loolwsd
   # loleaflet is the client part of LibreOffice Online
   ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0
   ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet

   # WOPI discovery URL
   ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
   ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery

   # Main websocket
   ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon

   # Admin Console websocket
   ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws

   # Download as, Fullscreen presentation and Image upload operations
   ProxyPass /lool https://127.0.0.1:9980/lool
   ProxyPassReverse /lool https://127.0.0.1:9980/lool

   # Capabilities
   ProxyPass           /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0
   ProxyPassReverse    /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities
</VirtualHost>

Is das erledigt, aktivieren wir die Seite.

a2ensite office

und laden danach die Konfiguration des Webservers neu:

sudo systemctl reload apache2

Nun stellen wir die Geschichte noch auf HTTPS um und holen uns mit dem Certbot von Let’s Encrypt ein entsprechendes Zertifikat (wie Du Let’s Encrypt installierst findest Du in der Anleitung, wie Du nextcloud 14 auf Ubuntu 18.04 LTS Server einrichtest):

certbot --apache -d office.example.org

Ist das Zertifikat geholt, wirst Du vor 2 Optionen gestellt. Du kannst die Software die Umleitung vornehmen lassen (2), dann werden alle Anfragen automatisch auf HTTPS umgeleitet. Ich mache das grundsätzlich und habe deswegen die 2 gewählt.

Ich überlasse certobo die Konfiguration der Umleitung auf HTTPS

Ich überlasse certobo die Konfiguration der Umleitung auf HTTPS

Die Softwre modifiziert die Datei office.conf und legt entsprechend auch gleich /etc/apache2/sites-available/office-le-ssl.conf an.

Collabora Online Development Edition (CODE) holen und starten

Nun schnappen wir uns das Docker Image von Collabora Online Development Edition (CODE)

sudo docker pull collabora/code

Das kann nun je nach Internet-Geschwindigkeit eine Weile dauern, zumal nach dem Download auch noch entpackt wird.

Docker Image von Collabora Online Development Edition (CODE) herunterladen

Docker Image von Collabora Online Development Edition (CODE) herunterladen

Nun starten wir das Docker-Abbild und hier musst Du aufpassen! In den Startbefehl kommt die Domain, unter der die Nextcloud erreichbar ist (in meinem Beispiel nextcloud.example.org) und nicht die Domain, unter der der Dokumentenserver angesprochen werden kann! An dieser Stelle habe ich damals nicht genau aufgepasst und verzweifelt den Fehler gesucht. Auch die Escape-Zeichen (\) gehören in den Befehl, so wie er dasteht (das ist eine Zeile!):

sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.example\\.org' -e "username=EIN-ANWENDER" -e "password=EIN-PASSWORT" --restart always --cap-add MKNOD collabora/code

Der username und das password sind für den Zugriff auf das Admin-Panel und die Statistiken zuständig (mehr dazu am Ende). Die Parameter sind optional, ich würde sie aber setzen.

Nextcloud App – Collabora Online

Mit der App Collabora Online aus dem Nextcloud Store verbindest Du Dich als WOPI Host (Nextcloud) mit dem Collabora Online Server (WOPI Client). Keine Panik, das ist ganz einfach.

Besuche als Nextcloud Admin zunächst die Apps und suche nach Collabora. Installiere und aktiviere die App. Ist das erledigt, klickst Du auf Einstellungen -> Collabora Online. Dort musst Du nun nur noch die Domain des Dokumentenservers eintippen: https://office.example.org.

Hier aktivierst Du Collabora Online für die Nextcloud

Collabora Online für die Nextcloud aktivieren

Wie Du siehst, kannst Du die App nur für bestimmte Gruppen freigeben. Weiterhin darfst Du bestimmen, dass nur bestimmte Gruppen Dokumente bearbeiten dürfen. Das ist auch eine sinnvolle Option. Setzt Du die Lösung in einer Umgebung ein, die per Standard mit OOMXL (Microsoft-Format) arbeiten, kannst Du die Option als Standard für neue Dateien nutzen. Sobald Du ein Dokument über das Web GUI anlegst, würde es als DOCX, XLSX oder PPTX angelegt. Aktivierst Du die Option nicht, sind es die LibreOffice-Gegenstücke ODT, ODS und ODP.

Collabora Online: neue Dokumente per Standard als OOXML anlegen

Collabora Online: neue Dokumente per Standard als OOXML anlegen

Beim ersten Start und nach CODE-Updates Fehler

Nach der Einrichtung hat aber nicht sofort alles geklappt. Es kam zu Fehlern mit Irgendwas WOPI Host, etwas in der Art:

Unauthorized WOPI host. Please try again later and report to your administrator if the issue persists.

Die üblichen Tricks halfen leider nicht. Ich habe Apache neu gestartet, den Docker Container nochmals gelöscht und einen neuen gestartet und so weiter. Alles hat nichts geholfen und es kam immer wieder die Fehlermeldung.

In meinen Fall half wirklich nur ein Neustart des kompletten Servers. Dabei ist das kein Einzelfall. Nach den Updates des Docker-Abbildes von CODE ist mir das auch schon öfters passiert (ich verwende Collabora Online schon länger unter Nextcloud 13 mit Ubuntu 16.04 LTS Server). Auch hier half nur ein kompletter Neustart des Servers.

Was ich auch schon hatte, dass ich nach dem Klick auf ein Dokument nur einen grauen Bildschirm erhielt. Das CODE-Logo ist nicht erschienen und im Prinzip hat sich gar nichts getan. Hier half bei mir ein Löschen des Cache:

sudo -u www-data php /var/www/nextcloud/occ files:cleanup

So ganz genau kann ich nicht reproduzieren, was die Fehler auslöst oder ausgelöst hat. Ein wilder Mix aus Cache-Löschen und Server-Neustarts hat es dann irgendwie wieder zum Laufen gebracht. Sorry, dass ich hier nicht weiter helfen kann. Das ist mir übrigens sowohl unter Ubuntu 16.04 LTS Server als auch 18.04 LTS Server passiert. Nein, die Logs haben nichts gebracht.

Weil wir gerade beim Update des Docker-Abbildes sind …

Docker-Version von Collabora Online aktualisieren

Ab und zu gibt es eine neue Version von Collabora Online Development Edition und die wollen wir natürlich nutzen. Dazu sind ein paar kleine Schritte notwendig. Als erste Schritt holst Du das neue Docker-Abbild (alle Schritte als root ausführen):

docker pull collabora/code

danach lässt Du Dir eine Liste mit allen laufenden Docker-Abbildern anzeigen.

docker ps
Mit docker ps eine Liste der laufenden Docker Container anzeigen lassen

Mit docker ps eine Liste der laufenden Docker Container anzeigen lassen

Aus dieser Liste brauchen wir die CONTAINER ID, weil wir nun das Docker Image stoppen:

docker stop CONTAINER_ID

Im Anschluss löschen wir das komplette Docker-Abbild:

docker rm CONTAINER_ID

Nun starten wir das neue Docker Image wie gehabt:

sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.example\\.org' -e "username=EIN-ANWENDER" -e "password=EIN-PASSWORT" --restart always --cap-add MKNOD collabora/code

Jetzt sollte wieder alles laufen. Wie schon erwähnt, gab es bei mir auch hier schon öfters Fehlermeldungen, die sich dann mit den oben beschriebenen Maßnahmen irgendwann bereinigen ließen.

So arbeitest Du mit Collabora Online unter Nextcloud

Da ich meist die Textverarbeitung, also LibreOffice Online Writer benötige, konzentriere ich mich auf diese Komponente. Ich weiß echt nicht, wie gut die anderen sind. Mit Calc habe ich einfache Aufgaben erledigt und das funktioniert gut. Wie das ist, wenn es komplexer wird, weiß ich nicht.

LibreOffice Online Writer in der Nextcloud integriert

LibreOffice Online Writer in der Nextcloud integriert

Bist Du an dieser Stelle angekommen, rate ich Dir, einfach loszulegen. Du kannst ganz normal schreiben, Text formatieren und so weiter. Dir stehen viele Funktionen zur Verfügung, die Du auch von der Desktop-Anwendung kennst. Es funktionieren auch einige Tastaturkürzel. Zum Beispiel kannst Du wie gewohnt mit Strg + K einen Link einfügen.

Klickst Du auf Hilfe, erscheint ein Menüpunkt, der sich Tastenkombinationen nennt. Dahinter verbirgt sich genau, was Du erwartest.

Es funktioniert natürlich (noch?) nicht alles, was Du von der Desktop-Variante kennst. CODE ist aber brauchbar und dient mir wunderbar als Notlösung. Außerdem macht es Spaß, sein eigenes Online Office am Laufen zu haben.

Mehrere Benutzer gleichzeitig und Dateien teilen

Angenehm ist, dass mehrere Benutzer gleichzeitig am gleichen Dokument arbeiten können. Du siehst unten rechts, wie viele Benutzer das Dokument geöffnet haben.

Mehrere Benutzer dürfen das Dokument gleichzeitig bearbeiten

Mehrere Benutzer dürfen das Dokument gleichzeitig bearbeiten

Ob die anderen nur mitlesen oder bearbeiten dürfen, hängt davon ab, wie Du das Dokument geteilt, beziehungsweise ob Du den jeweiligen Leuten eine Bearbeitung erlaubt hast.

Tipp: Teilst Du nun eine Datei via Nextcloud, wird das Dokument per Standard in Collabora Office im Browser geöffnet. Du kannst den Download aber direkt schicken, indem Du an die URL /download anhängst.

Es funktioniert übrigens auch die Rechtschreibprüfung. Du kannst die Sprache für das gesamte Dokument, nur die Auswahl oder einen Absatz festlegen. Klicke dafür auf Extras -> Sprache. Deutsche Rechtschreibung ist bei mir per Standard enthalten. Ich kann Wörter zum Wörterbuch hinzufügen, weiß aber nicht, wo die gespeichert werden. Außerdem erschließt sich mir nicht, wie ich eine eigene Wörterbuchliste importieren kann. Ich habe bereits eine ordentlich große Datei mit Wörtern, die ich in ein eigenes Wörterbuch aufgenommen habe. Vielleicht geht es aber auch noch gar nicht. Gefunden habe ich nur, wie ich mehr Sprachen hinzufügen könnte, das bringt mich aber nicht weiter. Weiß jemand mehr?

Dokument als PDF, ODF, RTF oder Microsoft-Format

Brauchst Du eine Datei in einem anderem Format, kannst Du das Dokument in verschiedenen Formaten herunterladen.

Klicke dazu auf Datei -> Herunterladen als und Dir stehen mehrere Formate zur Verfügung. Du darfst das Dokument als PDF, ODF, Microsoft-Format (ältere und OOXML) sowie RTF herunterladen. Ist hier kein Format dabei, das der andere lesen kann, dann soll er bitte sein Windows 3.11 for Workgroups auf Vordermann bringen. 🙂

Datei in verschiedenen Formaten herunterladen

Datei in verschiedenen Formaten herunterladen

Administratorseite aufrufen und Statistiken einsehen

Rufst Du die URL https://office.example.org/loleaflet/dist/admin/admin.html auf, wirst Du nach dem Passwort gefragt, das Du beim Start der Docker-Instanz hinterlegt hast. Sind die Angaben korrekt, siehst Du so eine Seite.

Admin-Seite der Collabora-Online-Instanz

Admin-Seite der Collabora-Online-Instanz

Viel an Einstellungen ist da nicht drin. Aber es sind ganz interessante Zahlen, die beim Troubleshooting helfen könnte. Das musst Du natürlich nicht dauern offen haben oder beobachten. Allerdings ist es gut zu wissen, dass es das Ding gibt.

Bekannte Probleme

Auf der Projektseite von CODE findest Du ganz unten eine Sektion mit bekannten Problemen. Dir sollte außerdem bewusst sein, dass sich CODE an Heim-Anwender und kleinere Installationen richtet. Die Lösung via Docker eignet sich nicht, mehrere Dutzend Leute damit zu versorgen. Solltest Du so etwas vorhaben, wendest Du Dich am besten direkt an die Entwickler.

Auf jeden Fall ist es interessant, Collabora Online (LibreOffice Online) zusammen mit der Nextcloud in Aktion zu sehen. Für meine Zwecke ist es absolut brauchbar, auch wenn mir die Desktop-Variante von LibreOffice mehr zu bieten hat.




 Alle Kommentare als Feed abonnieren

9 Kommentare zu “Collabora Online (LibreOffice) für Nextcloud – Schritt für Schritt (Docker)”

  1. Markus says:

    Ich würde gerne Collabora auf meinem hausinternen NAS installieren. Würde dies auch mit der IP-Adresse des NAS statt einer Domain und Subdomain funktionieren?

    • jdo says:

      Hmmm ... da hast Du mich nun kalt erwischt, da ich das nicht weiß. Ich benutze aber intern auch eine Domain und keine IP-Adresse.

      Dafür gibt es mehrere Möglichkeiten. Ich verwende meine DDNS Domain, die ich im Pi-Hole in den DNS-Einstellungen unter Local domain name hinterlegt habe.

      Früher habe ich intern auch immer die IP-Adresse verwendet, aber das ist mit einem Zugriff von außen immer ein riesiges Drama gewesen - wo bin wann und wie greife ich auf was zu. Seit ich die Domain benutze, ist das alles kein Problem mehr und ein Zertifikat von Let's Encrypt funktioniert damit auch.

      Willst Du es rein intern halten, sollte aber Zeroconf funktionieren. Also mit einer .local-Domain sollte es schon klappen, habe ich aber noch nie ausprobiert.

      Ich hoffe, das hilft irgendwie weiter.

  2. sokai says:

    Hey, danke für die schöne Anleitung!

    Ich habe ein ähnliches Setup, allerdings ufw als Firewall. Und iwie bekomme ich den Docker-Container nicht erreicht …
    Es gibt ne Menge (verschiedener) Infos zu Docker + ufw I'm Netz, alles iwie nicht trivial.

    Meine Frage: Benutzt du ieine Firewall?
    Wenn ja: Welche + wie ist die (für das Beschriebene) konfiguriert?
    Wenn nein: Weshalb nicht?

    Danke vorab + Grüße!

    • jdo says:

      Hi, ich benutze keine Firewall. Mein Server ist ein VPS bei Contabo und es sind nur wenige Ports aus dem Internet erreichbar. Genauer gesagt sind es 80, 443 und 22.

      Vor Brute-Force-Angriffen schütze ich mich mit fail2ban, beziehungsweise ist meine WordPress-Loging-Seite noch mit einem Apache-Passwort via .htpasswd abgesichert.

      Services, die nicht aus dem Internet erreicht werden sollen, öffnen auch keinen Port dahin. Bisher hat das gereicht. 🙂

  3. CMB says:

    Moin,

    danke für deine Anleitung. Leider bekomme ich folgende Fehlermeldung wenn ich eine Datei anklicke:

    Collabora Online konnte nicht geladen werden. Bitte versuche es später noch einmal.

    Den Server habe ich mehrfach neu gestartet.

    Wenn ich die URL https://office.tttttt.example-abcd.org/loleaflet/dist/admin/admin.html aufrufe, bekomme ich folgende Fehlermeldung:

    Proxy Error
    The proxy server received an invalid response from an upstream server.
    The proxy server could not handle the request
    Reason: Error reading from remote server

    Nextcloud: tttttt.example-abcd.org/nextcloud
    Dokumentenserver: office.tttttt.example-abcd.org

    Das Dockerabbild habe ich wie folgt gestartet:

    docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=\\tttttt\\.example-abcd.\\.org\\/nextcloud' -e "username=EIN-ANWENDER" -e "password=EIN-PASSWORT" --restart always --cap-add MKNOD collabora/code

    Kannst Du mir helfen?

    Danke für Deine Bemühungen

    CMB

    • jdo says:

      Hi,
      also auf den ersten Blick fällt mir auf:

      "domain=\\tttttt\\.example-abcd.\\.org\\/nextcloud" <- das ist nicht die Domain, das ist die URL zur Nextcloud. Versuche es mal ohne "\\/nextcloud" Klappt es dann?

  4. Christian says:

    Hi,
    kannst du mir kurz erklären, ob man auch eine zweite DNS (von noip) braucht?
    Oder wird der Office-Server nicht direkt von außen angesprochen sondern nur über nextcloud?
    Ich kenne mich mit Domain Namen nicht so gut aus.
    Ist der office.example.org nur Intern relevant? Oder würdest du auch von außerhalb über die Domain auf den Office-Server zugreifen.(Wie bei Nextcloud)

    • jdo says:

      Hallo,

      die Nextcloud kommuniziert mit dem Office-Server über das Netzwerk. Deswegen hinterlegst Du eine Domain oder eine IP-Adresse in der Nextcloud App.

      Bei mir liegt die Office-Instanz aber auf einem externen Server und ich will die Kommunikation via HTTPS über ein Zertifikat von Let's Encrypt haben. Damit ich eines bekomme, brauche ich aber einen Domain-Namen.

      Ohne Domain-Name könnte ich zwar ein selbst signiertes Zertifikat ausstellen lassen, aber da ist mir der Weg via Let's Encrypt lieber.

      Dass der Office-Server über einen eigenen Namen von überall aus erreichbar ist, hat einen weiteren Vorteil. Ich könnte mehr als eine Nextcloud-Instanz damit arbeiten lassen. Mache ich auch, weil meine Test-Nextcloud ebenfalls darauf Zugriff hat.

      Intern geht das vielleicht schon ohne Domain-Name, ich habe es aber nicht ausprobiert. Aber via Docker sollte sich das schnell und einfach herausfinden lassen.

  5. […] _eine andere vom Nextcloud-Forum, die hilfreich war _mal wieder leicht verständlich, daher super: Bitblokes – allerdings nur für http _Decatec für eine echte sichere Implementierung auf ngix _die, an […]