Mittlerweile nutze ich Nextcloud auf eigenen Servern schon mehrere Jahre und ebenfalls eine Office-Integration, um Dokumente gemeinsam mit Anderen direkt im Browser bearbeiten zu können. Ursprünglich fiel meine Wahl auf OnlyOffice, weil das 2018 gegenüber Collabora deutlich ausgereifter war.
OnlyOffice und Nextcloud – ein schwieriges Verhältnis
Ende 2018 wurde zunächst eine Zusammenarbeit von Nextcloud und OnlyOffice angekündigt, weshalb in Folge OnlyOffice zunächst auch die reguläre Office-Lösung für Nextcloud sein sollte. Durch die Zusammenarbeit gab es eine noch bessere Integration und es wurde auch möglich, bearbeitbare Dokumente als Links zu teilen. Ebenfalls wurde im Umfeld von Nextcloud eine Version des Document Servers erstellt, die ohne Docker-Container nutzbar ist und direkt in Nexcloud installiert werden kann, der „Community Document Server“, der aber mitunter große Probleme mit der zuverlässigen Speicherung von Dateiänderungen hat, wie die Kommentare zum App-Eintrag zeigen.
Anfang 2020 folgte dann die Entscheidung von Ascensio, bei der freien Community Edition des Document Servers die Bearbeitung von Dokumenten in der mobilen Ansicht nicht mehr zuzulassen. Wer diese Funktion weiterhin nutzen wollte, musste die „Integration Edition“ mit einer kostenpflichtigen Lizenz kaufen. Das hat in der Nextcloud-Community ebenfalls für einige Irritation gesorgt.
Nextcloud Office
Als Alternative zu OnlyOffice wurde Collabora stärker weiterentwickelt und die Nextcloud-Integration schließlich umbenannt zu „Nextcloud Office“. Im Gegensatz zu OnlyOffice läuft dabei der größte Teil auf dem Server in Form einer angepassten Variante von LibreOffice, was anfangs bei manchen Anwendungen zu Darstellungsproblemen geführt hat, wenn man eine skalierte Anzeige nutzt, wie etwa bei einem 4K-Bildschirm. Desweiteren fehlten am Anfang noch etliche Funktionen zur Bearbeitung.
Die aktuelle Version (Stand Dezember 2022) ist in dieser Beziehung aber schon deutlich weiter. Die Darstellung erfolgt jetzt in allen Anwendung in der korrekten Auflösung und auch die Funkionalität wurde erheblich ausgebaut.
Folgende Anwendungen stehen dabei zur Verfügung:
- Textverarbeitung (ODT, DOCX, DOC, RTF)
- Tabellenkalkulation (ODS, XLSX, XLS)
- Präsentation (ODP, PPTX, PPT)
- Zeichnung (ODG)
Alle Formate können sowohl geöffnet wie auch gespeichert werden.
Installationsvarianten
Für die Installation wird in jedem Fall die Integrations-App benötigt. Um die App verwenden zu können, ist dann noch ein Backend erforderlich.
Backend mit „Collabora Online – Built-in CODE Server“
Für die private Nutzung und kleinere Teams reicht die Variante, die man direkt in Nextcloud selbst installieren kann: Collabora Online – Built-in CODE Server. Hier muss man nichts weiter tun, als die App in Nextcloud zu installieren und danach in Nextcloud Office als Backend auszuwählen.
Backend mit Docker-Container
Eine leistungsfähigere Variante ist die Nutzung des Docker-Container mit Bereitstellung über einen Reverse Proxy.
Für die Bereitstellung und Aktualisierung des Docker-Container nutze ich folgendes Script:
#!/bin/sh docker pull collabora/code docker stop collabora docker rm collabora docker run -t -d --name="collabora" -p 127.0.0.1:9980:9980 -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true" -e "domain=NEXTCLOUD-DOMAIN" -e "username=USER" -e "password=PASSWORD" --restart always collabora/code
Für NEXTCLOUD-DOMAIN
trägt man die Domain ein, mit der Nextcloud betrieben wird.
Für USER
und PASSWORD
gibt man die gewünschten Zugangsdaten an, mit denen man sich in der Administration im Backend anmelden möchte.
Mit der Option -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true"
wird dem Backend mitgeteilt, dass es ohne TLS arbeiten soll, aber über einen Reverse Proxy mit TLS-Unterstützung genutzt wird.
Der Speicherbedarf ist moderat – wenn der Server nur läuft, werden etwa 540 MB belegt. Pro Nutzer/in kommen dann je nach Anwendung nochmal etwa 50 MB dazu.
Für die Nutzung habe ich dann noch eine Website in Apache eingerichtet, die über eigenen Hostnamen zugänglich ist und folgende Optionen für den Reverse Proxy nutzt (siehe dazu auch https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html):
AllowEncodedSlashes NoDecode ProxyPreserveHost On # static html, js, images, etc. served from coolwsd # browser is the client part of Collabora Online ProxyPass /browser http://127.0.0.1:9980/browser retry=0 ProxyPassReverse /browser http://127.0.0.1:9980/browser # WOPI discovery URL ProxyPass /hosting/discovery http://127.0.0.1:9980/hosting/discovery retry=0 ProxyPassReverse /hosting/discovery http://127.0.0.1:9980/hosting/discovery # Capabilities ProxyPass /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0 ProxyPassReverse /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities # Main websocket ProxyPassMatch "/cool/(.*)/ws$" ws://127.0.0.1:9980/cool/$1/ws nocanon # Admin Console websocket ProxyPass /cool/adminws ws://127.0.0.1:9980/cool/adminws # Download as, Fullscreen presentation and Image upload operations ProxyPass /cool http://127.0.0.1:9980/cool ProxyPassReverse /cool http://127.0.0.1:9980/cool # Compatibility with integrations that use the /lool/convert-to endpoint ProxyPass /lool http://127.0.0.1:9980/cool ProxyPassReverse /lool http://127.0.0.1:9980/cool
Über https://<domain>/browser/dist/admin/admin.html kann man dann die Administrationsseite des Backend erreichen.
Die URL https://<domain> ohne weitere Angaben trägt man dann in der Konfiguration von Nextcloud Office ein. Wird nach dem Speichern die Meldung „Collabora Online Server ist erreichbar.“ angezeigt, sollte alles funktionieren.
Hinweis zur Sicherheit
Bei den erweiterten Einstellungen sollte man bei „Allow list for WOPI requests“ die IP-Adresse des Servers, auf dem Collabora läuft oder den IP-Adressbereich von Docker angeben, damit Nextcloud WOPI-Requests nur aus diesem Bereich erlaubt. Siehe dazu auch https://nvd.nist.gov/vuln/detail/CVE-2021-32748 und den Eintrag von Nextcloud dazu bei https://github.com/nextcloud/security-advisories/security/advisories/GHSA-24×8-h6m2-9jf2.
Bei Docker gilt in der Regel 172.17.0.1/16
. Man kann auch Befehl ip a
auf dem Server verwenden und sucht dann in der Ausgabe nach folgendem Abschnitt:
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ba:4f:2f:9b brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:baff:fe4f:2f9b/64 scope link valid_lft forever preferred_lft forever
Entscheidend ist die Zeile inet 172.17.0.1/16
– der hier angegebene Adressbereich wird von Collabora für WOPI-Requests an Nextcloud genutzt und muss auch genau so angegeben werden als 172.17.0.1/16
.
Praktische Erfahrungen
Insgesamt funktioniert Nextcloud Office mittlerweile sehr gut, sowohl die gemeinsame Arbeit an einem Dokument wie auch die Freigabe für Gäste. Auch bei der Geschwindigkeit ist Collabora mittlerweile deutlich besser als noch vor einigen Jahren. Das Öffnen eines Dokuments erfolgt in der Regel in wenigen Sekunden, wobei das natürlich auch vom Server und der eigenen Internetanbindung abhängig ist.
Gegenüber OnlyOffice fallen einige Punkte positiv auf:
- Zum Schließen ist ein „X“-Symbol rechts oben vorhanden. Bei OnlyOffice musste ich regelmäßig neuen Benutzer/innen erklären, dass man zum Verlassen der Anwendung ein bestimmtes Symbol anklicken muss, was nicht auf den ersten Blick als „Schließen“ wahrgenommen wurde.
- Die Bearbeitung von Dokumenten ist auch auf mobilen Geräten möglich. Nutzt man die Nextcloud-App, kann man Dokumente direkt in der App öffnen.
- Mit „Draw“ steht ein Programm für die Erstellung von Diagrammen zur Verfügung.
- In den persönlichen Einstellungen können Benutzer/innen sich einen Ordner für Vorlagen eintragen, die für neue Dokumente genutzt werden können.
Insgesamt kann ich Nextcloud Office als Alternative zu OnlyOffice sehr empfehlen, speziell seit dem Update auf Nextcloud 25, mit dem OnlyOffice noch ein paar Probleme hat.
Update 2023-01-05
Hinweis zur erweiterten Einstellung „Allow list for WOPI requests“ ergänzt.