From 2b2473b14f92dd1b9a2d3b404510051d25b62eb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Tue, 21 Dec 2021 21:47:03 +0100 Subject: [PATCH 1/2] Nextcloud Office documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Julius Härtl --- admin_manual/contents.rst | 1 + admin_manual/images/office.png | Bin 0 -> 117833 bytes admin_manual/office/configuration.rst | 62 +++++++++++++ admin_manual/office/example-docker.rst | 118 ++++++++++++++++++++++++ admin_manual/office/example-ubuntu.rst | 46 +++++++++ admin_manual/office/index.rst | 25 +++++ admin_manual/office/installation.rst | 43 +++++++++ admin_manual/office/migration.rst | 39 ++++++++ admin_manual/office/proxy.rst | 18 ++++ admin_manual/office/troubleshooting.rst | 41 ++++++++ 10 files changed, 393 insertions(+) create mode 100644 admin_manual/images/office.png create mode 100644 admin_manual/office/configuration.rst create mode 100644 admin_manual/office/example-docker.rst create mode 100644 admin_manual/office/example-ubuntu.rst create mode 100644 admin_manual/office/index.rst create mode 100644 admin_manual/office/installation.rst create mode 100644 admin_manual/office/migration.rst create mode 100644 admin_manual/office/proxy.rst create mode 100644 admin_manual/office/troubleshooting.rst diff --git a/admin_manual/contents.rst b/admin_manual/contents.rst index 40247e8bd..2ff69967f 100644 --- a/admin_manual/contents.rst +++ b/admin_manual/contents.rst @@ -15,6 +15,7 @@ Table of contents configuration_files/index file_workflows/index groupware/index + office/index configuration_database/index configuration_mimetypes/index maintenance/index diff --git a/admin_manual/images/office.png b/admin_manual/images/office.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb65463ca40967f22ec16d373c1adaa6594eb6e GIT binary patch literal 117833 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 IuNVjYA0>VpbpQYW literal 0 HcmV?d00001 diff --git a/admin_manual/office/configuration.rst b/admin_manual/office/configuration.rst new file mode 100644 index 000000000..5514676dd --- /dev/null +++ b/admin_manual/office/configuration.rst @@ -0,0 +1,62 @@ +============= +Configuration +============= + +Nextcloud Office App Settings +============================= + +Collabora Online Server +*********************** + +URL (and port) of the Collabora Online server that provides the editing functionality as a WOPI client. Collabora Online should use the same protocol (http:// or https://) as the server installation. Naturally, https:// is recommended. + +Restrict usage to specific groups +By default the app is enabled for all. When this setting is active, only members of specified groups can use Nextcloud Office. + +Restrict edit to specific groups +******************************** +By default all users can edit documents with Nextcloud Office. When this setting is active, only the members of specified groups can edit, others can only view documents. + +Use OOXML by default for new files +********************************** +By default new files created by users are in OpenDocument Format (ODF). When this setting is active, new files will be created in Office Open XML (OOXML) format. + +Enable access for external apps +******************************* +Nextcloud internally passes an access token to Collabora Online that is used later by it to do various operations. By default, it's not possible to generate this token by 3rd parties; only Nextcloud can generate and pass it to Collabora Online. + +In some applications, it might be necessary to generate the token by a 3rd party application. For this, one needs to add the 3rd party application (external apps) in this setting. You need to add an application identifier and a secret +token. These credentials then can be used by the 3rd party application to make calls to `wopi/extapp/data/{fileId}` to fetch the access token and URL source for given fileId, both required to open a connection to Collabora Online. + +Canonical webroot +***************** +Canonical webroot, in case there are multiple, for Collabora Online to use. Provide the one with least restrictions. E.g.: Use non-shibbolized webroot if this instance is accessed by both shibbolized and non-shibbolized webroots. You can ignore this setting if only one webroot is used to access this instance. + + +Additional configuration options +================================ + +The coolwsd service allows additional configuration options which can be found in the `Collabora Online documentation `_. + +Previews +******** + +In order to allow Nextcloud to use the coolwsd conversion API to generate previews, the Nextcloud host IP needs to be added to the allow list: + +.. code-block:: bash + + sudo coolconfig set net.post_allow.host 10.0.0.4 + + +Custom fonts +************ + +When you install coolwsd package, the post-install script will look for additional fonts on your system, and install them in the systemplate. If you install fonts to your system after installing coolwsd, you need to update the systemplate manually. + +.. code-block:: bash + + coolconfig update-system-template + + +.. seealso:: + https://sdk.collaboraonline.com/docs/installation/Fonts.html \ No newline at end of file diff --git a/admin_manual/office/example-docker.rst b/admin_manual/office/example-docker.rst new file mode 100644 index 000000000..a9de552b1 --- /dev/null +++ b/admin_manual/office/example-docker.rst @@ -0,0 +1,118 @@ +================================ +Installation example with Docker +================================ + +We'll describe how to get Nextcloud Office running on your server and how to integrate it into your Nextcloud using the docker image Nextcloud and Collabora built. + + +To install it the following dependencies are required: + +- A host that can run a Docker container +- A subdomain or a second domain that the Collabora Online server can run on +- An Apache server with some enabled modules +- A valid SSL certificate for the domain that Collabora Online should run on +- A valid SSL certificate for your Nextcloud + + +1. Install the Collabora Online server +************************************** + +The following steps will download the Collabora Online docker, make sure to replace "cloud.nextcloud.com" with the host that your own Nextcloud runs on. Also make sure to escape all dots with double backslashes (\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you'll need to use 'domain=cloud\\.nextcloud\\.com\|second\\.nextcloud\\.com' instead. (All hosts are separated by \|.) + + docker pull collabora/code + docker run -t -d -p 127.0.0.1:9980:9980 \ + -e 'domain=cloud\\.example\\.com' \ + --restart always \ + --cap-add MKNOD \ + collabora/code + +That will be enough. Once you have done that the server will listen on "localhost:9980". Now we just need to configure the locally installed Apache reverse proxy. + +2. Install the Apache reverse proxy +*********************************** + +On a recent Ubuntu or Debian this should be possible using: + +.. code-block:: bash + + apt-get install apache2 + a2enmod proxy proxy_wstunnel proxy_http ssl + +Afterward, configure one VirtualHost properly to proxy the traffic. For security reason we recommend to use a subdomain such as office.example.com instead of running on the same domain. An example config can be found below: + +.. code-block:: apache2 + + + ServerName office.example.com:443 + + # SSL configuration, you may want to take the easy route instead and use Lets Encrypt! + SSLEngine on + SSLCertificateFile /path/to/signed_certificate + SSLCertificateChainFile /path/to/intermediate_certificate + SSLCertificateKeyFile /path/to/private/key + SSLProtocol all -SSLv2 -SSLv3 + SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS + SSLHonorCipherOrder on + + # 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 LibreOffice 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 + + # 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 + + # Endpoint with information about availability of various features + ProxyPass /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0 + ProxyPassReverse /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities + + +After configuring these do restart your apache using /etc/init.d/apache2 restart. + +3. Configure the app in Nextcloud +********************************* + +Go to the Apps section and choose "Office & text" +Install the "Collabora Online app" +Admin -> Office -> Specify the server you have setup before (e.g. "https://office.example.com") +Congratulations, your Nextcloud has Collabora Online Office integrated! + + +Updating +******** + +Occasionally, new versions of this docker image are released with security and feature updates. We will of course let you know when that happens! This is how you upgrade to a new version: + +grab new docker image: + docker pull collabora/code +List docker images: + docker ps +from the output you can glean the Container ID of your Collabora Online docker image. +stop and remove the Collabora Online docker image: + docker stop CONTAINER_ID + docker rm CONTAINER_ID +start the new image: + docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.nextcloud\\.com' --restart always --cap-add MKNOD collabora/code diff --git a/admin_manual/office/example-ubuntu.rst b/admin_manual/office/example-ubuntu.rst new file mode 100644 index 000000000..d1d413e36 --- /dev/null +++ b/admin_manual/office/example-ubuntu.rst @@ -0,0 +1,46 @@ +==================================== +Installation example on Ubuntu 20.04 +==================================== + +Import signing keys: +******************** + +.. code-block:: bash + + cd /usr/share/keyrings && sudo wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg + +Add repository: +*************** + +.. code-block:: bash + + sudo echo "deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004 ./" > /etc/apt/sources.list.d/collaboraonline.sources + +Install packages +**************** + +.. code-block:: bash + + sudo apt update && sudo apt install coolwsd code-brand + +Configuration +************* + +Edit /etc/coolwsd/coolwsd.xml. Collabora Online (coolwsd) service runs via systemd. After editing the configuration file, you have to restart the service: + +.. code-block:: bash + + sudo systemctl restart coolwsd + +The default configuration is looking for an SSL certificate and key, which are not present, so probably it’s the best to disable SSL, and optionally enable SSL termination, then set up the reverse proxy. + + +.. code-block:: bash + + sudo coolconfig set ssl.enable false + sudo coolconfig set ssl.termination true + sudo coolconfig set storage.wopi.host nextcloud.example.com + sudo coolconfig set-admin-password + sudo systemctl restart loolwsd + systemctl status loolwsd + diff --git a/admin_manual/office/index.rst b/admin_manual/office/index.rst new file mode 100644 index 000000000..1ebd8113e --- /dev/null +++ b/admin_manual/office/index.rst @@ -0,0 +1,25 @@ +=============== +Office +=============== + +.. image:: ../images/office.png + +Nextcloud Office supports editing your documents in real time with multiple other editors, showing high fidelity, WYSIWYG rendering and preserving the layout and formatting of your documents. + +Users can insert and reply to comments and invite others without a Nextcloud account for anonymous editing of files with a public link shared folder. + +Nextcloud Office supports dozens of document formats including DOC, DOCX, PPT, PPTX, XLS, XLSX + ODF, Import/View Visio, Publisher and many more... + +Nextcloud Office is based on the Collabora Online Development Edition (CODE) and is available free and under heavy development, adding features and improvements all the time! Enterprise users have access to the more stable, scalable Collabora Online Enterprise based version through a Nextcloud support subscription. + +We are able to provide a solution for Online Office for the entire Nextcloud community through our partnership with Collabora with various deployment options. Enterprise users looking for a more reliable solution should contact Nextcloud Sales. + + +.. toctree:: + :maxdepth: 2 + :includehidden: + + installation + configuration + migration + troubleshooting \ No newline at end of file diff --git a/admin_manual/office/installation.rst b/admin_manual/office/installation.rst new file mode 100644 index 000000000..08262cd7a --- /dev/null +++ b/admin_manual/office/installation.rst @@ -0,0 +1,43 @@ +============ +Installation +============ + +Nextcloud Office is built on Collabora Online which requires a dedicated service running next to the Nextcloud webserver stack. There are several ways to run the coolwsd service, which is further referred to as Nextcloud Office Server. + +- **Nextcloud All In One:** Nextcloud Office comes preinstalled out of the box in the `Nextcloud All In One `_ setup and provides easy deployment and maintenance with most features included in this one Nextcloud instance. + +For manual installations there are multiple options to get Nextcloud Office deployed: + +- **Built-in CODE server** + This app provides a built-in server with all of the document editing features of Collabora Online. Easy to install, for personal use or for small teams. A bit slower than a standalone server and without the advanced scalability features. Installation can be performed by enabling the according Nextcloud app. Further details can be found in the `app documentation `_. + + .. note:: + This is the default option which works out of the box in most scenarios, however for improved performance it is recommended to switch to a dedicated Nextcloud Office installation + + +- **Installation through distribution packages** + There are packages for all major Linux distributions available which allow deploying a Nextcloud Office Server through installing it through the regular package management. For an example installation guide on Ubuntu, see see: :doc:`example-ubuntu` + + .. seealso:: + https://www.collaboraoffice.com/code/linux-packages/ + https://sdk.collaboraonline.com/docs/installation/index.html + + +- **Installation through Docker** + Docker images are available for deploying Nextcloud Office in container environments. For a detailed step by step guide, see: :doc:`example-docker` + + .. seealso:: + https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html + + + +.. note:: + In most scenarios running a dedicated Nextcloud Office server will require some sort of reverse proxy to be setup in front of it. For more details see :doc:`proxy`. + + +.. toctree:: + :hidden: + + example-ubuntu + example-docker + proxy \ No newline at end of file diff --git a/admin_manual/office/migration.rst b/admin_manual/office/migration.rst new file mode 100644 index 000000000..3cd056787 --- /dev/null +++ b/admin_manual/office/migration.rst @@ -0,0 +1,39 @@ +=============================== +Migration from Collabora Online +=============================== + +Nextcloud Office is based on Collabora Online so for enabling all Nextcloud Office functionallity it would be enough to update to the most recent release. Nextcloud Office is available since CODE 21.11. + +.. note:: + This upgrade guide is aimed for upgrading from CODE 6.4 to CODE 21.11. + +Update the reverse proxy configuration +************************************** + +Due to naming changes in the Collabora Online releases it may be required to adjust reverse proxy configurations that are already in use for previously existing setups. + +- Paths with ``lool`` have been renamed to ``cool`` +- Paths with ``loleaflet`` have been renamed to ``browser`` + +Fully detailed reverse proxy configration guides for various solutions can be found at https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html + +Upgrade distribution packages +***************************** + +- The main service has been renamed from ``loolwsd`` to ``coolwsd`` +- The service rename also affects the location of the configuration file ``/etc/coolwsd/coolwsd.xml`` + +Required upgrade steps: + +- Stop the ``loolwsd`` service +- Backup ``/etc/loolwsd/loolwsd.xml`` configuration file. +- Remove ``loolwsd`` and ``collaboraoffice*`` packages. +- Change the version number in the repository URL, e.g. from 6.4 to 21.11 +- Install the ``coolwsd`` package +- Adapt the new configuration file in ``/etc/coolwsd/coolwsd.xml`` to match your previous configuration +- Start and enable the ``coolwsd`` service + +Upgrade the docker image +************************ + +For upgrading the docker images it is enough to pull the latest CODE image from Docker Hub. \ No newline at end of file diff --git a/admin_manual/office/proxy.rst b/admin_manual/office/proxy.rst new file mode 100644 index 000000000..abdc912a9 --- /dev/null +++ b/admin_manual/office/proxy.rst @@ -0,0 +1,18 @@ +============= +Reverse proxy +============= + +The server part of Nextcloud Office (coolwsd daemon) is listening on port 9980 by default, and clients should be able to communicate with it through port 9980. However on most setups it is common to use a reverse proxy to more easily handle SSL termination and have a unified entrypoint for HTTP requests. + +THe following rules should be in place to forward requests to the coolwsd daemon on port 9980: + +- /browser +- /hosting/discovery +- /hosting/capabilities +- /cool/adminws +- /cool +- Web socket connections through /cool/(.*)/ws + +.. seealso:: + Full configuration examples can be found in the Collabora Online documentation: + https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html \ No newline at end of file diff --git a/admin_manual/office/troubleshooting.rst b/admin_manual/office/troubleshooting.rst new file mode 100644 index 000000000..0249a31a6 --- /dev/null +++ b/admin_manual/office/troubleshooting.rst @@ -0,0 +1,41 @@ +=============== +Troubleshooting +=============== + +In case of connectivity issues, ensure that the following required connections are possible and not blocked by any firewall: + +- The users browser can reach both the Nextcloud Server as well as the Nextcloud Office server through HTTP(S) +- The Nextcloud and the Nextcloud Office Server are using the same protocol +- The Nextcloud server can reach the Nextcloud Office Server through HTTP(S) +- The Nextcloud Office Server can reach the Nextcloud server through HTTP(S) + +Both the Nextcloud log as well as the Nextcloud Office Server log may reveal more detailed error messages in case of connection issues. + +- Verify connectivity from the browser: + - https://office.example.com/hosting/capabilities + - https://office.example.com/hosting/discovery +- Verify connectivity from Nextcloud + - ``curl https://office.example.com/hosting/capabilities`` + - ``curl https://office.example.com/hosting/discovery`` +- Verify connection from the Collabora server + - ``curl https://nextcloud.example.com/status.php`` + +Frequently asked questions +========================== + +Issue: I get connection errors when trying to open documents + Be sure to check the error log from docker through ``docker logs container-id``. If the logs note something like: + ``No acceptable WOPI hosts found matching the target host [YOUR NEXTCLOUD DOMAIN] in config.`` + Unauthorized WOPI host. Please try again later and report to your administrator if the issue persists. You might have started the docker container with the wrong URL. Be sure to triplecheck that you start it with the URL of your Nextcloud server, not the server where Collabora Online runs on. + +Issue: Connection is not allowed errors. + It is possible your firewall is blocking connections. Try to start docker after you started the firewall, it makes changes to your iptables to enable Collabora Online to function. + +Issue: We are sorry, this is an unexpected connection error. Please try again. error. + The Collabora Online app doesn't work at the moment, if you enable it only for certain groups. Remove the group filter in the App section. + +Issue: Collabora Online doesn't handle my 100 users. + This docker image is designed for home usage. If you need a more scalable solution, consider a support subscription for a reliable, business-ready online office experience. + +Issue: Collabora Online doesn't work with Encryption. + Yes, this is currently unsupported. \ No newline at end of file From cc339f6503cd8f12d66e56cc0c902f4ad6681365 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julius=20H=C3=A4rtl?= Date: Wed, 16 Mar 2022 08:06:42 +0100 Subject: [PATCH 2/2] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jonas Signed-off-by: Julius Härtl --- admin_manual/office/example-docker.rst | 117 +++++++++++++----------- admin_manual/office/example-ubuntu.rst | 8 +- admin_manual/office/index.rst | 2 +- admin_manual/office/installation.rst | 21 ++--- admin_manual/office/migration.rst | 2 +- admin_manual/office/troubleshooting.rst | 10 +- 6 files changed, 87 insertions(+), 73 deletions(-) diff --git a/admin_manual/office/example-docker.rst b/admin_manual/office/example-docker.rst index a9de552b1..7391c410a 100644 --- a/admin_manual/office/example-docker.rst +++ b/admin_manual/office/example-docker.rst @@ -14,10 +14,12 @@ To install it the following dependencies are required: - A valid SSL certificate for your Nextcloud -1. Install the Collabora Online server +Install the Collabora Online server ************************************** -The following steps will download the Collabora Online docker, make sure to replace "cloud.nextcloud.com" with the host that your own Nextcloud runs on. Also make sure to escape all dots with double backslashes (\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you'll need to use 'domain=cloud\\.nextcloud\\.com\|second\\.nextcloud\\.com' instead. (All hosts are separated by \|.) +The following steps will download the Collabora Online docker. Make sure to replace "cloud.example.com" with the host that your own Nextcloud runs on. Also make sure to escape all dots with double backslashes (`\\`), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you'll need to use `domain=cloud\\.nextcloud\\.com\|second\\.nextcloud\\.com` instead. (All hosts are separated by `\|`.) + +.. code-block:: bash docker pull collabora/code docker run -t -d -p 127.0.0.1:9980:9980 \ @@ -28,7 +30,7 @@ The following steps will download the Collabora Online docker, make sure to repl That will be enough. Once you have done that the server will listen on "localhost:9980". Now we just need to configure the locally installed Apache reverse proxy. -2. Install the Apache reverse proxy +Install the Apache reverse proxy *********************************** On a recent Ubuntu or Debian this should be possible using: @@ -42,57 +44,54 @@ Afterward, configure one VirtualHost properly to proxy the traffic. For security .. code-block:: apache2 - - ServerName office.example.com:443 + ######################################## + # Reverse proxy for Collabora Online + ######################################## - # SSL configuration, you may want to take the easy route instead and use Lets Encrypt! - SSLEngine on - SSLCertificateFile /path/to/signed_certificate - SSLCertificateChainFile /path/to/intermediate_certificate - SSLCertificateKeyFile /path/to/private/key - SSLProtocol all -SSLv2 -SSLv3 - SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS - SSLHonorCipherOrder on + AllowEncodedSlashes NoDecode + SSLProxyEngine On + ProxyPreserveHost On - # Encoded slashes need to be allowed - AllowEncodedSlashes NoDecode + # cert is issued for collaboraonline.example.com and we proxy to localhost + SSLProxyVerify None + SSLProxyCheckPeerCN Off + SSLProxyCheckPeerName Off - # Container uses a unique non-signed certificate - SSLProxyEngine On - 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 - # keep the host - ProxyPreserveHost On + # 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 - # static html, js, images, etc. served from loolwsd - # loleaflet is the client part of LibreOffice Online - ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0 - ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet + # 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 - # 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 + # Main websocket + ProxyPassMatch "/cool/(.*)/ws$" wss://127.0.0.1:9980/cool/$1/ws nocanon - # Main websocket - ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon + # Admin Console websocket + ProxyPass /cool/adminws wss://127.0.0.1:9980/cool/adminws - # Admin Console websocket - ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/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 - # 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 - # Endpoint with information about availability of various features - ProxyPass /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0 - ProxyPassReverse /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities - - -After configuring these do restart your apache using /etc/init.d/apache2 restart. +After configuring these do restart your apache using ``systemctl restart apache2``. -3. Configure the app in Nextcloud +.. seealso:: + Full configuration examples for reverse proxy setup can be found in the Collabora Online documentation: + https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html + + +Configure the app in Nextcloud ********************************* Go to the Apps section and choose "Office & text" @@ -106,13 +105,25 @@ Updating Occasionally, new versions of this docker image are released with security and feature updates. We will of course let you know when that happens! This is how you upgrade to a new version: -grab new docker image: - docker pull collabora/code -List docker images: - docker ps -from the output you can glean the Container ID of your Collabora Online docker image. -stop and remove the Collabora Online docker image: - docker stop CONTAINER_ID - docker rm CONTAINER_ID -start the new image: - docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.nextcloud\\.com' --restart always --cap-add MKNOD collabora/code +Update the docker image: + .. code-block:: bash + + docker pull collabora/code + +List running docker containers: + .. code-block:: bash + + docker ps + +Stop and remove the Collabora Online container with the container id of the running one: + .. code-block:: bash + + docker stop CONTAINER_ID + docker rm CONTAINER_ID + +Start the new container: + .. code-block:: bash + + docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.example\\.com' \ + --restart always --cap-add MKNOD collabora/code + diff --git a/admin_manual/office/example-ubuntu.rst b/admin_manual/office/example-ubuntu.rst index d1d413e36..efcdf2099 100644 --- a/admin_manual/office/example-ubuntu.rst +++ b/admin_manual/office/example-ubuntu.rst @@ -34,6 +34,10 @@ Edit /etc/coolwsd/coolwsd.xml. Collabora Online (coolwsd) service runs via syste The default configuration is looking for an SSL certificate and key, which are not present, so probably it’s the best to disable SSL, and optionally enable SSL termination, then set up the reverse proxy. +.. seealso:: + Full configuration examples for reverse proxy setup can be found in the Collabora Online documentation: + https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html + .. code-block:: bash @@ -41,6 +45,6 @@ The default configuration is looking for an SSL certificate and key, which are n sudo coolconfig set ssl.termination true sudo coolconfig set storage.wopi.host nextcloud.example.com sudo coolconfig set-admin-password - sudo systemctl restart loolwsd - systemctl status loolwsd + sudo systemctl restart coolwsd + systemctl status coolwsd diff --git a/admin_manual/office/index.rst b/admin_manual/office/index.rst index 1ebd8113e..2dacf1a11 100644 --- a/admin_manual/office/index.rst +++ b/admin_manual/office/index.rst @@ -10,7 +10,7 @@ Users can insert and reply to comments and invite others without a Nextcloud acc Nextcloud Office supports dozens of document formats including DOC, DOCX, PPT, PPTX, XLS, XLSX + ODF, Import/View Visio, Publisher and many more... -Nextcloud Office is based on the Collabora Online Development Edition (CODE) and is available free and under heavy development, adding features and improvements all the time! Enterprise users have access to the more stable, scalable Collabora Online Enterprise based version through a Nextcloud support subscription. +Nextcloud Office is based on the Collabora Online Development Edition (CODE) and is available free and under heavy development, adding features and improvements all the time! Enterprise users have access to the more stable, scalable Collabora Online Enterprise based version through a `Nextcloud support subscription `_. We are able to provide a solution for Online Office for the entire Nextcloud community through our partnership with Collabora with various deployment options. Enterprise users looking for a more reliable solution should contact Nextcloud Sales. diff --git a/admin_manual/office/installation.rst b/admin_manual/office/installation.rst index 08262cd7a..65dc3c38d 100644 --- a/admin_manual/office/installation.rst +++ b/admin_manual/office/installation.rst @@ -2,21 +2,14 @@ Installation ============ -Nextcloud Office is built on Collabora Online which requires a dedicated service running next to the Nextcloud webserver stack. There are several ways to run the coolwsd service, which is further referred to as Nextcloud Office Server. +Nextcloud Office is built on Collabora Online which requires a dedicated service running next to the Nextcloud webserver stack. There are several ways to run the coolwsd service. - **Nextcloud All In One:** Nextcloud Office comes preinstalled out of the box in the `Nextcloud All In One `_ setup and provides easy deployment and maintenance with most features included in this one Nextcloud instance. For manual installations there are multiple options to get Nextcloud Office deployed: -- **Built-in CODE server** - This app provides a built-in server with all of the document editing features of Collabora Online. Easy to install, for personal use or for small teams. A bit slower than a standalone server and without the advanced scalability features. Installation can be performed by enabling the according Nextcloud app. Further details can be found in the `app documentation `_. - - .. note:: - This is the default option which works out of the box in most scenarios, however for improved performance it is recommended to switch to a dedicated Nextcloud Office installation - - - **Installation through distribution packages** - There are packages for all major Linux distributions available which allow deploying a Nextcloud Office Server through installing it through the regular package management. For an example installation guide on Ubuntu, see see: :doc:`example-ubuntu` + There are packages for all major Linux distributions available which allow deploying a Collabora Online server through installing it through the regular package management. For an example installation guide on Ubuntu, see see: :doc:`example-ubuntu` .. seealso:: https://www.collaboraoffice.com/code/linux-packages/ @@ -24,15 +17,21 @@ For manual installations there are multiple options to get Nextcloud Office depl - **Installation through Docker** - Docker images are available for deploying Nextcloud Office in container environments. For a detailed step by step guide, see: :doc:`example-docker` + Docker images are available for deploying the Collabora Online server in container environments. For a detailed step by step guide, see: :doc:`example-docker` .. seealso:: https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html +- **Built-in CODE server** + This app provides a built-in server with all of the document editing features of Collabora Online. Easy to install, for personal use or for small teams. A bit slower than a standalone server and without the advanced scalability features. Installation can be performed by enabling the according Nextcloud app. Further details can be found in the `app documentation `_. + + .. note:: + This is the default option which works out of the box in most scenarios, however for improved performance it is highly recommended to switch to a dedicated Collabora Online installation using one of the other options. + .. note:: - In most scenarios running a dedicated Nextcloud Office server will require some sort of reverse proxy to be setup in front of it. For more details see :doc:`proxy`. + In most scenarios running a dedicated Collabora Online server will require some sort of reverse proxy to be setup in front of it. For more details see :doc:`proxy`. .. toctree:: diff --git a/admin_manual/office/migration.rst b/admin_manual/office/migration.rst index 3cd056787..f201fb1a2 100644 --- a/admin_manual/office/migration.rst +++ b/admin_manual/office/migration.rst @@ -2,7 +2,7 @@ Migration from Collabora Online =============================== -Nextcloud Office is based on Collabora Online so for enabling all Nextcloud Office functionallity it would be enough to update to the most recent release. Nextcloud Office is available since CODE 21.11. +Nextcloud Office is based on Collabora Online so for enabling all Nextcloud Office functionality it would be enough to update to the most recent release. Nextcloud Office is available since CODE 21.11. .. note:: This upgrade guide is aimed for upgrading from CODE 6.4 to CODE 21.11. diff --git a/admin_manual/office/troubleshooting.rst b/admin_manual/office/troubleshooting.rst index 0249a31a6..ceca5d1e3 100644 --- a/admin_manual/office/troubleshooting.rst +++ b/admin_manual/office/troubleshooting.rst @@ -4,12 +4,12 @@ Troubleshooting In case of connectivity issues, ensure that the following required connections are possible and not blocked by any firewall: -- The users browser can reach both the Nextcloud Server as well as the Nextcloud Office server through HTTP(S) -- The Nextcloud and the Nextcloud Office Server are using the same protocol -- The Nextcloud server can reach the Nextcloud Office Server through HTTP(S) -- The Nextcloud Office Server can reach the Nextcloud server through HTTP(S) +- The users browser can reach both the Nextcloud Server as well as the Collabora Online server through HTTP(S) +- The Nextcloud and the Collabora Online server are using the same protocol +- The Nextcloud server can reach the Collabora Online server through HTTP(S) +- The Collabora Online server can reach the Nextcloud server through HTTP(S) -Both the Nextcloud log as well as the Nextcloud Office Server log may reveal more detailed error messages in case of connection issues. +Both the Nextcloud log as well as the Collabora Online server log may reveal more detailed error messages in case of connection issues. - Verify connectivity from the browser: - https://office.example.com/hosting/capabilities