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/