Nextcloud Office

In the meantime I have been using Nextcloud on my own servers for several years and also an Office integration in order to be able to edit documents together with others directly in the browser. Originally, I chose OnlyOffice because it was much more mature than Collabora in 2018.

OnlyOffice and Nextcloud – a difficult relationship

At the end of 2018, a cooperation between Nextcloud and OnlyOffice was announced, which is why OnlyOffice should also become the regular office solution for Nextcloud. Working together, there was even better integration and it also became possible to share editable documents as links. A version of the Document Server was also created in the Nextcloud community that can be used without a Docker container and can be installed directly in Nexcloud – the “Community Document Server”. However it sometimes had major problems with the reliable storage of file changes, as the comments on the app entry show.

At the beginning of 2020, Ascensio then decided to no longer allow the editing of documents in the mobile view of the free Community Edition of the Document Server. If you wanted to continue using this function, you had to buy the “Integration Edition” with a paid license. This has also caused some irritation in the Nextcloud community.

Nextcloud Office

As an alternative to OnlyOffice, Collabora was developed further and the Nextcloud integration was eventually renamed to “Nextcloud Office”. In contrast to OnlyOffice, most of it runs on the server in the form of an adapted variant of LibreOffice. This initially led to display problems in some applications when using a scaled display, such as a 4K screen. Furthermore, a number of editing functions were still missing at the beginning.

The current version (as of December 2022) is much advanced in this regard. The display is now in the correct resolution in all applications and the functionality has also been significantly improved.

The following applications are available:

  • Word processing (ODT, DOCX, DOC, RTF)
  • Spreadsheet (ODS, XLSX, XLS)
  • Presentation (ODP, PPTX, PPT)
  • Drawings (ODG)

All formats can be opened as well as saved.

Installation options

For the installation you need at least the integration app. To use that app there is also a backend required.

Backend with “Collabora Online – Built-in CODE Server”

For private use and smaller teams, the variant that you can install directly in Nextcloud is sufficient: Collabora Online – Built-in CODE Server. All you have to do here is to install the app in Nextcloud and then select as backend in the settings of Nextcloud Office.

Backend with Docker-Container

A more powerful variant is to use the Docker container with a reverse proxy.

I use the following script to deploy and update the Docker container:

#!/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

For NEXTCLOUD-DOMAIN you use the domain under which you run Nextcloud.

For USER and PASSWORD you use the desired access data with which you would like to log in to the administration in the backend.

The option -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true" tells the backend not to use TLS but to expect a reverse proxy using TLS support.

The memory requirement is moderate – when the server is running, about 540 MB is used. Depending on the application, about 50 MB are needed per user connection.

I then have set up a website in Apache for this, which is accessible via its own host name and uses the following options for the reverse proxy (also  see 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

Via https://<domain>/browser/dist/admin/admin.html you can then open the administration of the backend.

The URL https://<domain> without an additional parameters will be used for the configuration of Nextcloud Office in the backend. If the message “Collabora Online server is reachable.” displayed after saving the settings, everything should work.

Security notice

In the advanced settings, you should enter the IP address of the server on which Collabora is running or the IP address range of Docker under “Allow list for WOPI requests”, so that Nextcloud only allows WOPI requests from this range. Also see https://nvd.nist.gov/vuln/detail/CVE-2021-32748 and Nextcloud’s entry at https://github.com/nextcloud/security-advisories/security/advisories/GHSA-24×8-h6m2-9jf2.

For Docker this is usually 172.17.0.1/16. You can also use the command ip a on the server and then look for the following section in the output:

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

The important line is inet 172.17.0.1/16 – this IP address range will be used by Collabora for WOPI requests to Nextcloud.

Practical experience

Overall, Nextcloud Office now works very well, both working together on a document and sharing it with guests. In terms of speed, Collabora is now significantly better than it was a few years ago. A document is usually opened in a few seconds, although this of course also depends on the server and your own Internet connection.

Compared to OnlyOffice, a few points stand out positively:

  • To close, there is an “X” symbol in the upper right corner. With OnlyOffice, I regularly had to explain to new users that they had to click on a certain icon to exit the application, which wasn’t perceived as “close” at first glance.
  • Documents can also be edited on mobile devices. If you use the Nextcloud app, you can open documents directly in the app.
  • With “Draw” you get a program for creating diagrams.
  • In the personal settings, users can enter a folder for templates that can be used for new documents.

Overall, I can highly recommend Nextcloud Office as an alternative to OnlyOffice, especially since the update to Nextcloud 25, with which OnlyOffice still has a few problems.

Update 2023-01-05

Added a notice about the “Allow list for WOPI requests” in the advanced settings.

Leave a public comment

Your email address will not be published. This is not a contact form! If you want to send me a personal message, use my e-mail address in the imprint.

You can use the following HTML tags in the comment:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>