Collabora CODE bietet die Möglichkeit, Office-Dokumente in Cloud-Lösungen wie ownCloud oder nextCloud einzurichten.

Von Collabora selbst wird die Einbettung mit Docker empfohlen, jedoch gibt es Virtuelle Root Server, die auf Virtualisierungsumgebungen betrieben werden, die kein Docker zulassen (wie z.B. bei Strato aktuell/2019 Virtuozzo). Auch hat man mit Docker nur eine Komponente mehr auf dem Server, um die man sich im Zweifelsfalle kümmern muss … ja ich bekenne mich zu Effizienz – und wer Docker nur wegen Collabora benötigt, dem ist hier eine praktische Alternative geboten: Collabora ist bereits in diversen Linux Repositories enthalten, z.B. für Ubuntu18.04 geht man hierzu wie folgt vor:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
sudo echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu1804 ./' >> /etc/apt/sources.list
sudo apt update && sudo apt install loolwsd code-brand

Aus ownCloud/nextCloud heraus sind nur verschlüsselte Verbindungen zu Collabora erlaubt. Damit Collabora überhaupt erreichbar ist, muss dafür eine eigene (Sub)domain eingerichtet werden mit eigenem SSL-Zertifikat. Damit Collabora dieses Zertifikat nutzen kann, kopiert man am einfachsten die Zertifikate dorthin, wo Collabora sie gemäß der Konfigurationsdatei erwartet – andernfalls müssten für die Konfigurationsdatei von Collabora editieren und bei jedem Update manuell neu prüfen, ob Änderungen migriert werden müssen (und glaubt mir: Collabora hat regelmäßig Updates mit richtig guten neuen Funktionen! Nicht nur einmal habe ich WOW nach dem ersten Test der neuen Funktion gesagt … Daumen hoch für die Entwicklung!). Je nach Betriebsart muss die Konfigurationsdatei von Collabora doch geändert werden, mehr dazu weiter unten im Text. Damit Collabora nun die SSL-Zertifikate der Collabora-Domain nutzen kann, erstellen wir einen Cronjob, der regelmäßig die Zertifikate (ich gehe hier von Lets Encrypt aus) nach /etc/loolwsd/ kopiert:

sudo nano /etc/cron.weekly/collabora_certs

Wir füllen die Datei mit folgendem Inhalt, die Pfade zu den Zertifikaten entsprechend anpassen (ich gehe hier von der Nutzung von Plesk aus, andernfalls müssen die Pfade angepasst werden!):

#!/bin/bash
cp /opt/psa/var/modules/letsencrypt/etc/live/collabora-domain.tld/cert.pem /etc/loolwsd/cert.pem
cp /opt/psa/var/modules/letsencrypt/etc/live/collabora-domain.tld/privkey.pem /etc/loolwsd/key.pem
cp /opt/psa/var/modules/letsencrypt/etc/live/collabora-domain.tld/chain.pem /etc/loolwsd/ca-chain.cert.pem
chown lool /etc/loolwsd/cert.pem
chown lool /etc/loolwsd/key.pem
chown lool /etc/loolwsd/ca-chain.cert.pem
systemctl restart loolwsd.service
exit 0

Nun die Datei noch ausführbar machen:

chmod +x /etc/cron.weekly/collabora_certs

Und danach testen wir das Skript und kopieren die Zertifikate nun an den Ort, wo Collabora sie nutzen kann:

/etc/cron.weekly/collabora_certs

Die Datei /etc/loolwsd/loolwsd.xml muss für eine Minimalkonfiguration nicht verändert werden, sofern Cloud und Collabora auf dem selben Server laufen. Wer unterschiedliche Instanzen hat, muss die Cloud-Domain in der loolwsd.xml noch whitelisten – Punkte bitte mit \ escapen, siehe andere IPs, die dort bereits vorhanden sind. Dazu gibt es ein Admin-Interface für Collabora, das Auslastung und Statistiken anzeigt, der Passwortschutz kann auch in der loolwsd.xml für diese Seite eingerichtet werden – ist jedoch optional. Wie bereits oben geschrieben, muss weiter an der Datei nichts geändert werden, sofern Cloud und Collabora auf dem gleichen Server laufen.

Die Domaineinstellungen für die Collabora-Domain benötigen jedoch noch Anpassungen: Collabora läuft hinter einem Reverse-Proxy, der spezielle Eintragungen für den vhost der Collabora-Domain benötigt. Hierzu gehen wir bei der Collabora-Domain in Plesk auf „Einstellungen für Apache & nginx“ und kopieren bei „Zusätzliche Aache-Anweisungen“ folgende Zeilen mit hinein:

# 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 Collabora 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

  # 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

  # 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

Wer kein Plesk nutzt, muss die Zeilen in seine vhost-Konfiguration für die Collabora-Domain hinzufügen.

Danach müssen ein paar Module für Plesk noch aktiviert werden, hierzu gehen wir in Plesk links im Hauptmenü auf „Tools & Einstellungen“ und dann „Apache Webserver“. Hier bitte die folgende Module anhaken: proxy_wstunnel, proxy_http und proxy. Collabora selbst hat das Modul ssl noch auf der Liste, dies ist jedoch in Plesk (bei mir) nicht vorhanden.

Wer kein Plesk nutzt, muss die Module mit

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

aktivieren und danach den Webserver neu starten:

sudo service apache2 restart

Danach noch in ownCloud/nextCloud unter den Einstellungen für Collabora die Collabora-Domain (ohne Port!) eingeben und danach sollte Collabora bei Klick auf ein Office-Dokument oder unter „Büro“ im App-Menü öffnen.

Grenzen: CODE (Collabora online development edition) hat eine Limitierung auf 20 geöffnete Dokumente und 10 gleichzeitige Nutzer eingegeben. Darüber hinaus erscheint eine Warnmeldung, dass dies keine Software für Produktivumgebungen ist, die man aber meines Wissens nach wegklicken und weiter arbeiten kann. Für Enterprise-Anwendungen bietet Collabora zugeschnittenen Support und eine verbesserte Softwareversion, Preise auf Anfrage.

Mehr Details direkt bei Collabora: https://www.collaboraoffice.com/code/