Integrate Collabora Online with Nextcloud on Ubuntu without Docker
This tutorial is going to show you how to install Collabora Online on Ubuntu and then integrate it with an existing Nextcloud server without using Docker.
Collabora Online is a self-hostable and LibreOffice-based open-source online office suite. Its features include:
- Basic editing
- High fidelity, WYSIWYG rendering
- Supports DOC, DOCX, PPT, PPTX, XLS, XLSX, ODF document format
- Import and view Visio, Publisher and 100+ more
- Shared Editing
Collabora is a big contributor to the LibreOffice project. All of the Collabora Online codes will be eventually included in LibreOffice.
Note: This tutorial works on Ubuntu 22.04, 20.04 and 18.04. If you are using another Ubuntu version, you can install Collobaora Online with Docker.
Prerequisites
It’s assumed that you have already set up a Nextcloud server, which can be on any Linux distribution. If you haven’t already done so, then you can check out the following easy-to-understand guides.
- Install NextCloud on Ubuntu 22.04 (Nginx + PostgreSQL + PHP8)
- How to Install Nextcloud on Ubuntu 20.04 with LAMP Stack
- How to Install Nextcloud on CentOS 8 with LEMP Stack
- How to set up Nextcloud on Arch Linux
The Collabora Online server and Nextcloud server can be on the same machine or on two different machines. This tutorial shows how to install Collabora online server on Ubuntu without using Docker. Then integrate it with an existing Nextcloud server.
Step 1: Install Collabora Online on Ubuntu From the Official Repository
Collabora has an official package repository for Ubuntu 22.04, 20.04 and 18.04. Run the following command to add it to your Ubuntu system.
Ubuntu 22.04
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204 ./' | sudo tee /etc/apt/sources.list.d/collabora.list
Ubuntu 20.04
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2004 ./' | sudo tee /etc/apt/sources.list.d/collabora.list
Ubuntu 18.04
echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu1804 ./' | sudo tee /etc/apt/sources.list.d/collabora.list
Then run the following command to download and import Collabora public key, which allows APT package manager to verify the integrity of packages downloaded from this repository.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D
If you can’t import the public key with the above command, you can use the following command to download and import the key.
wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key && sudo apt-key add repomd.xml.key
Since this repository uses HTTPS connection, we need to install the apt-transport-https
and ca-certificates
package, so the APT package manager can establish secure connection to the repository.
sudo apt install apt-transport-https ca-certificates
Now update local package index and install Collabora Online. coolwsd is the Collabora Online WebSocket Daemon.
sudo apt update sudo apt install coolwsd code-brand
Step 2: Configure LibreOffice Online WebSocket Daemon
After they are installed, you can check the status of coolwsd.
systemctl status coolwsd
Hint: If the above command didn’t quit immediately, you can press the Q
key to make it quit.
As you can see, it failed to start. We can check the journal to see why this happened.
sudo journalctl -eu coolwsd
Sample output:
Apr 21 16:13:06 ubuntu coolwsd[13842]: File not found: /etc/coolwsd/ca-chain.cert.pem Apr 21 16:13:06 ubuntu systemd[1]: coolwsd.service: Main process exited, code=exited, status Apr 21 16:13:06 ubuntu systemd[1]: coolwsd.service: Failed with result 'exit-code'. Apr 21 16:13:07 ubuntu systemd[1]: coolwsd.service: Service hold-off time over, scheduling r Apr 21 16:13:07 ubuntu systemd[1]: coolwsd.service: Scheduled restart job, restart counter i Apr 21 16:13:07 ubuntu systemd[1]: Stopped LibreOffice Online WebSocket Daemon. Apr 21 16:13:07 ubuntu systemd[1]: coolwsd.service: Start request repeated too quickly. Apr 21 16:13:07 ubuntu systemd[1]: coolwsd.service: Failed with result 'exit-code'. Apr 21 16:13:07 ubuntu systemd[1]: Failed to start LibreOffice Online WebSocket Daemon.
By default, coolwsd enables TLS connection. However, it didn’t find a TLS certificate file, hence the start failure. It’s better to disable TLS in coolwsd and terminate TLS at a reverse proxy. The coolwsd configuration file is located at /etc/coolwsd/coolwsd.xml
. However, it’s an XML file, which is not easy to read and edit. We can use the coolconfig
tool to change configurations.
Run the following command to disable TLS in coolwsd.
sudo coolconfig set ssl.enable false
And enable TLS termination at the reverse proxy.
sudo coolconfig set ssl.termination true
By default, coolwsd only allows known hosts to access its service. To allow Nextcloud to access the service, run the following command to add your Nextcloud hostname to the whitelist.
sudo coolconfig set storage.wopi.host nextcloud.example.com
You can also enable the admin account for coolwsd with the following command. You will need to set a username and password for the admin account.
sudo coolconfig set-admin-password
Restart coolwsd for the changes to take effect.
sudo systemctl restart coolwsd
Now it should be running without errors.
systemctl status coolwsd
Output:
Step 3: Set up Reverse Proxy
Nextcloud server requires a TLS certificate on the Collabora Online, so we will need to create a virtual host, give the virtual host a domain name, set up a reverse proxy and install TLS certificate. We can use either Apache or Nginx to achieve this.
Apache
Install Apache web server with the following command:
sudo apt install apache2
Run the following command to create an Apache virtual host file for Collabora Online.
sudo nano /etc/apache2/sites-available/collabora.conf
Put the following text into the file. Replace the domain name with your actual domain name for Collabora Online. Don’t forget to create an A record for this sub-domain.
<VirtualHost *:80>
ServerName collabora.example.com
Options -Indexes
ErrorLog "/var/log/apache2/collabora_error"
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from coolwsd
# loleaflet/browser is the client part of Collabora Online
ProxyPass /loleaflet http://127.0.0.1:9980/loleaflet retry=0
ProxyPassReverse /loleaflet http://127.0.0.1:9980/loleaflet
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
</VirtualHost>
Save and close the file. To be able to proxy traffic using Apache, we need to enable some Apache modules.
sudo a2enmod proxy proxy_wstunnel proxy_http
Enable this virtual host with the following command:
sudo a2ensite collabora.conf
Then restart Apache.
sudo systemctl restart apache2
Nginx
Install Nginx on Ubuntu with the following command:
sudo apt install nginx
Create a virtual host file for Collabora Online.
sudo nano /etc/nginx/conf.d/collabora.conf
Put the following text into the file. Replace the domain name with your actual domain name for Collabora Online. Don’t forget to create an A record for this domain name.
server {
listen 80;
listen [::]:80;
server_name collabora.example.com;
error_log /var/log/nginx/collabora.error;
# static files
location ^~ /browser {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}
location ^~ /loleaflet {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}
# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy_pass http://localhost:9980;
proxy_set_header Host $http_host;
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass http://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}
}
Save and close the file. Then test Nginx configurations.
sudo nginx -t
If the test is successful, reload Nginx server.
sudo systemctl reload nginx
Step 4: Obtain and Install TLS Certificate
Now let’s obtain a free TLS certificate from Let’s encrypt. Run the following commands to install Let’s Encrypt client (certbot) from the default software repository.
sudo apt install certbot
If you use Apache web server, then you also need to install the Certbot Apache plugin.
sudo apt install python3-certbot-apache
Then issue the following command to obtain a free TLS/SSL certificate.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com
If you use Nginx web server, then you need to install the Certbot Nginx plugin.
sudo apt install python3-certbot-nginx
Then use the Nginx plugin to obtain and install the certificate by running the following command.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d collabora.example.com
You will see the following text indicating that you have successfully obtained a TLS certificate.
Final Step: Connect Nextcloud to Collabora Online
In your Nextcloud dashboard, go to the Apps
page (https://nextcloud.example.com/settings/apps
).
Next, go to Office & Text
section, find the Nextcloud Office
app, and click Download and Enable
button. (Note: The Collabora Online
app has been renamed to Nextcloud Office
.
After this app is enabled, go to Nextcloud Settings
page -> Administration
-> Click Nextcloud Office
tab on the left. By default, it uses the built-in CODE server, which is not suitable for production use. We need to select Use your own server
and enter the domain name of your Collabora Online including https://
prefix, then click Save
button.
In the advance settings
, you can also set OOXML as the default format, so the files will be compatible with Microsoft Office software.
Now when you click the add button (+) in Nextcloud, you will be able to create Word, spreadsheet, and presentation documents right from your Nextcloud server. (Note: Firefox has a problem loading .docx files in Nextcloud because Firefox won’t allow SVG image file to load CSS files. You can use Google Chrome or Chromium browser. )
The coolwsd admin console is available at https://collabora.example.com/browser/dist/admin/admin.html
. You need to enter the username and password, which were created in step 2.
Troubleshooting
You can check the logs of coolwsd to find clues. Perhaps it’s not running.
sudo journalctl -eu coolwsd
And check the logs of web server.
- Apache:
/var/log/apache2/collabora_error
- Nginx:
/var/log/nginx/collabora.error
If the coolwsd
admin console displays the “Server has been shutdown. Please reload the webpage” error, and you find the following error in the coolwsd
journal log,
ERR Looks like SSL/TLS traffic on plain http port
It’s probably because you specified HTTPS protocol in the Nginx configuration file (/etc/nginx/conf.d/collabora.conf
).
https://127.0.0.1:9980
You should configure Nginx to use the plain HTTP protocol to connect to port 9980.
http://127.0.0.1:9980
For HAProxy Users
HAProxy is a high-performance reverse proxy. If you use HAProxy on your server, you might have additional problems.
If Nextcloud tells you that it c
set_real_ip_from 127.0.0.1; real_ip_header proxy_protocol;
This means that Nginx expects HTTP connection from the reverse proxy. You should edit the /etc/nginx/conf.d/collaboara.conf
file and add proxy_protocol
to the listen directive.
listen 127.0.0.1:443 ssl http2 proxy_protocol;
Then edit the /etc/hosts
file and add a static DNS record like below. Repalce 12.34.56.78
with the public IP address of the server.
12.34.56.78 collaboara.example.com
collabora.example.com
should be pointed to the public IP address of your server. Don’t point it to 127.0.0.1.
Wrapping Up
That’s it! I hope this tutorial helped you install, run Collabora Online on Ubuntu and integrate it with Nextcloud. As always, if you found this post useful, then subscribe to our free newsletter. You can also follow us on Twitter or like our Facebook page.
That is so cool, thank you for sharing that!
Works perfectly! Thank you!
Hi Linuxbabe
Thanks for the info.
Do you have a config to install nextcloud and Collabora office on the same server, with no docker.
Tx in Advance
Johan
This article is for integrating Nextcloud and Collabora without Docker and it works when Nextcloud and Collabora run on the same server.
Hi Xiao Guoan and firstly thanks for your guide.
I would ask you if is it possibile to show the Letsencrypt enabled virtualhost config content.
Thanks again!
Davide
If you use Nginx, then Let’s Encrypt client (certbot) automatically re-configure the Nginx virtual host file (
/etc/nginx/conf.d/collabora.conf
) to support TLS.If you use Apache, then Let’s Encrypt client (certbot) automatically create an SSL virtual host file (
/etc/apache2/sites-enabled/collabora-le-ssl.conf
).Hi Xiao,
Thanks for this article instruction. I have a question about integrating Nextcloud and Collabora run on the same server.
Let’s say I have 1 static IP: 111.222.333.444 points to cloud.domain.com.
So if we install Collabora on the same server which means 111.222.333.444, how do we set up the A record for DNS which will point collabora.domain.com to the same IP address: 111.222.333.444? Is there any conflict between these?
Once again, thank you very much for this.
Kind regards,
Quang
No. There won’t be any conflict. An IP address can serve multiple domains/sub-domains. This is known as virtual hosting.
Hi,
I’ve got Nextcloud 18.0.6 and the last version (4.2.4) of Collabora – CODE running on the same server and it really works fine.
Nevertheless, there is only the english dictionary installed. Can you tell me how to install another dictionary ?
Thanks for your help.
Freddy
I have the same problem, I need to install another lenguage, but I try differents ways and tutorials and nothing happened, always show english dict. alone.
Totally AWESOME instructions. Worked first time!
I set this up in an lxc ubuntu 18.04 container running on an ubuntu 20.04 server. It connected with my lxc Nextcloud container (running on the same server). I setup my domain names, run the certbot, fixed a type (my bad…) and it just WORKED!
You are friggin AWESOME!!! Thank you very much. 🙂
Hi,
I already i was installed locally system, i don’t have and DNS name, i m using oracle vm virtualbox , everything i was install successfully only stack in edit online doucment “Integrate Collabora Online” , what i have to enter ? “Use you own server URL (and Port) of Collabora Online-server” and i am able open the “Collabora Online admin panal” “loleaflet/dist/admin/admin.html”
Kindly help this regards
Nextcloud requires you to use https connection with Collabora. If you don’t want to spend money on a domain name, you can just use LibreOffice on your Linux desktop, and don’t use Collabora Online.
I would recommend buying a domain name (which can be as low as $1.37/year), if you really want to tinker with server software
Thanks for the great tutorial – what would I have to change if I installed Collabora and Nextcloud on 2 different hosts?
The admin interface of Collabora already answers me externally.
I use different external addresses for Nextcloud and Collabora 2.
The Collabora service works too! The Request: https://localhost:8890 – gives the answer: OK
After adding it to Nextcloud, I get the error: “Could not connect to the Collabora Online server.”I think a problem with the proxy?
Thanks for this brilliant guide. I love it! I have Nexcloud and Collabora on the one box now. But I use lighttpd and it doesn’t work.
When I point Nextcloud to the Collabora URL under: URL (and Port) of Collabora Online-server as you have and click Save it reports “Could not establish connection to the Collabora Online server.”
I see nothing in the Nextcloud log. So what I’m wondering is how, further to diagnose this. I tried simply testing some of he configured URLS. For example on the WPI discovery URL, I do see a beautiful page which lets me discover the WOPI services. Nice. It’s a rich JS driven page. On the WOPI capabilities URL, I get lovely terse response which renders in raw format as: {“convert-to”:{“available”:true},”hasMobileSupport”:true,”hasProxyPrefix”:false,”hasTemplateSaveAs”:false,”hasTemplateSource”:true,”productName”:”Collabora Online Development Edition”,”productVersion”:”4.2.6″,”productVersionHash”:”ed4f732″}.
On the Admin console URL alas I get no response, the browser just sits and whirs waiting. That is not encouraging.
I am wondering what does Nextcloud test to see that the server is active? And what diagnostic tips might you provide? Be mighty appreciative for any tips.
What do you see if you navigate to https:collaboraserver.tld/lool/adminws? I don’t get a response alas. And would love to know if I should expect one and if so, what and how to diagnose why its not there.
There is but one subtle difference between all the web server configs listed, they all reverse proxy to localhost:9980, but the admin console and main websocket have an Upgrade header set. I wonder if something there went wrong and how to find out if it did. I use lighttpd, and its mod_proxy: https://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_ModProxy, it’s comparable syntax seems to be proxy.header = ( “upgrade” => “enable” ).
The trick is understanding what this upgrade command does in Apache, and in Nginx.
Thanks for the great tutorial. I already i was installed locally system, i don’t have and DNS name, i m using oracle vm virtualbox , everything i was install successfully only stack in edit online doucment “Integrate Collabora Online” , but when i edit doc files, always like this, hopefully i have the solutions from here
I would recommend buying a domain name (which can be as low as $1.37/year), if you really want to tinker with server software.
Hi, I have installed nextcloud with LAMP stack on ubuntu 20.04 on LXC container in Proxmox. Nextcloud is working great using haproxy under Pfsense but I cannot get Collabora to work using Apache. I saw you post if I installed it using nginx, should I delete apache to install nginx?
Is there a way to get apache to work using haproxy also, if so how?
Thanks
This is a wonderful guide! Thank you! Do you know if there is any way to allow two domains to connect to the CODE server? I tried several things, but have only been able to get one at a time to work.
Thank you very much, you’re awesome.
Thank you for the amazing tutorials for both NextCloud and Collabora.
I’ve installed both on Ubuntu 20.04 in digitalOcean
Nextcloud works fine but when I try to open a docx document the nextcloud can’t reach the server and stays stuck at0% during the connection.
In the parameters, everything seems to be fine, I don’t understand…
Hello Dave, I just updated this tutorial.
Firefox has problems trying to load .docx files in Nextcloud. You can use Google Chrome.
Great instructions LinuxBabe!!! i was running docker and was able to switch to native with these instructions!
Happy Installs!!!
Xiao, do you know OxOffice Online?
It works smoother than Collabora Online
https://docs.ossii.com.tw/books/oxoffice-online-technical-manual
Hey there, I recently tried to install the Collabora-Server step by step.
Everything went smooth. Even If I open the subdomain where the Server is pointing, it gives me a “OK” back. Even more the Nextcloud Admin panel tell that it can reach the office Server. (see screenshots)
But the time I try to open or create a Document it says “Document loading failed”
The Collabora Errorlog outputs the following:
Does somebody know whats going on there and how to fix it?
THX
Jacky
To correct this error:
On new versions of Collabora change Nginx proxy lines:
to
And lines
to
Don’t forget to restart Nginx.
Hi There, same problem; “Document loading failed” and admin is blank. Is there something missing like an index.html file /var/www/*, how does one resolve the issue? Thanks again.
is there any advantage to running Collabora this was vs using the Docker install?
Docker is clumsy. Running Collabora without Docker is resource-efficient.
Thanks for all your job, I already did my mail server without any problem.
After I thinks some change happened because I must replace lool my cool for all the installation.
But at the end I can’t open admin console or a file.
I got a blank screen on admin panel and when I open a file I got “document loading failed”.
On my debian syslog I got:
Hi this is really good and still relevant today. Is there any chance you can make it perfect for me by adding an entry for HAProxy?
2x nextcloud vm’s, 1x CollaboraOffice vm with Apache2 virtualhost, all on Proxmox routing through pfsense vm with haproxy module installed. All vms access internet okay and can access ACME directly. but I need fornt and backend configs to allow nexcloud 1&2 to access the Collabora vm.
Any pointers would be appreciated
–To add MS Office fonts to Collabora–
1. sudo apt install ttf-mscorefont-installer
2. sudo fc-cache -f -v
3. sudo coolconfig update-system-template
4. sudo systemctl restart coolwsd
5. sudo systemctl restart php7.4-fpm
6. sudo systemctl restart nginx
You can restart 3 services in one command 🙂
It’s working like a charm. Thanks!
Thank you very much for sharing an informative blog with the installation processes in such detail. I am very happy about your patience and willingness to help make this installation with such detail and dexterity. Greetings from the United Kingdom to you! Very successful !!! and you know about this logo design?? https://www.logosymmetry.co.uk/