Aktualisiert und grundlegend überarbeitet im März 2022!

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. 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:

cd /usr/share/keyrings
sudo wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg

Dann binden wir die Paketquellen in apt ein, indem wir eine neue Datei in der sources.list.d hinzu fügen:

sudo nano /etc/apt/sources.list.d/collaboraonline.sources

In die Datei schreiben wir folgenden Inhalt:

Types: deb
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004
Suites: ./
Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg

Danach installieren wir die erforderlichen Pakete:

sudo apt update

sudo apt install coolwsd 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!).

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 /etc/letsencrypt/live/collabora-domain.tld/cert.pem /etc/coolwsd/cert.pem
cp /etc/letsencrypt/live/collabora-domain.tld/privkey.pem /etc/coolwsd/key.pem
cp /etc/letsencrypt/live/collabora-domain.tld/chain.pem /etc/coolwsd/ca-chain.cert.pem
chown lool /etc/coolwsd/cert.pem
chown lool /etc/coolwsd/key.pem
chown lool /etc/coolwsd/ca-chain.cert.pem
systemctl restart coolwsd.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:

sudo /etc/cron.weekly/collabora_certs

Die Datei /etc/coolwsd/coolwsd.xml muss für die Nutzung noch angepasst werden. Dazu geben wir die Collabora-Domain in die Einstellung server_name ein.

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 apache vhost-Konfiguration folgende Zeilen zusätzlich mit hinzu:

########################################
 # Reverse proxy for Collabora Online
 ########################################
 AllowEncodedSlashes NoDecode
 SSLProxyEngine On
 ProxyPreserveHost On
 # cert is issued for collaboraonline.example.com and we proxy to localhost
 SSLProxyVerify None
 SSLProxyCheckPeerCN Off
 SSLProxyCheckPeerName Off
 # static html, js, images, etc. served from coolwsd
 # browser is the client part of Collabora Online
 ProxyPass           /browser https://127.0.0.1:9980/browser retry=0
 ProxyPassReverse    /browser https://127.0.0.1:9980/browser
 # 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      "/cool/(.*)/ws$"      wss://127.0.0.1:9980/cool/$1/ws nocanon
 # Admin Console websocket
 ProxyPass           /cool/adminws wss://127.0.0.1:9980/cool/adminws
 # Download as, Fullscreen presentation and Image upload operations
 ProxyPass           /cool https://127.0.0.1:9980/cool
 ProxyPassReverse    /cool https://127.0.0.1:9980/cool
 # Compatibility with integrations that use the /lool/convert-to endpoint
 ProxyPass           /lool https://127.0.0.1:9980/cool
 ProxyPassReverse    /lool https://127.0.0.1:9980/cool

Danach müssen ein paar Module für Apache noch aktiviert werden:

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 eingeben und danach sollte Collabora bei Klick auf ein Office-Dokument oder unter „Büro“ im App-Menü öffnen.

Mehr Details, Konfiguration für andere Betriebssysteme oder Webserver wie nginx direkt bei Collabora: https://www.collaboraoffice.com/code/