Use HTTPS with Ubuntu 22.04, apache, Nextcloud and Collabora(Docker)

My previous setup with HTTPS always failed on Nextcloud and Collabora.

When I saw the article Integrate Collabora Online with Nextcloud on Ubuntu without Docker by Xiao Guoan, I saw hope.

I did not use valid credentials for this article. If you want to use an authenticated SSL certificate, please refer to the above article.

I’m going to write this because I’ve seen some articles like those below.

At the bottom of the official website article is written Issue: Collabora Online doesn’t work with Encryption. Yes, this is currently unsupported.
Collabora + Nextcloud + Docker = Failure by @flkiwi
Collabora from snap install does not work via HTTPS by @michimartini

Also, I’ve seen other Docker configurations that maybe can work.

Mixed content error with Collabora CODE / Nextcloud / Traefik reverse proxy via docker-compose

My operating system uses Ubuntu 22.04.

This article uses the following settings and modifies them to suit your needs.

IP address:
admin account:nextcloud
admin password:nextcloud
MySQL database:nextcloud
MySQL account:nextcloud
MySQL password:nextcloud
Collabora admin account:admin
Collabora admin password:admin

I won’t go into details. :sweat_smile:

Install Nextcloud and Collabora steps.

update and upgrade packages.

sudo apt -y update
sudo apt -y upgrade

Install Apache, MySQL, and Docker.

sudo apt -y install apache2 mysql-server docker

Install other packages

sudo apt -y install php zip libapache2-mod-php php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip php-bcmath php-gmp php-bz2 php-ldap php-smbclient php-apcu libmagickcore-6.q16-6-extra

Collabora Server by Docker(Please modify the account password by yourself)

sudo docker pull collabora/code
sudo docker run -t -d -p --restart always -e “extra_params=–o:ssl.enable=false --o:ssl.termination=true” -e “username=admin” -e “password=admin” --cap-add MKNOD collabora/code

Start and set the bootup to run

sudo systemctl start apache2.service
sudo systemctl enable apache2.service
sudo systemctl start mysql.service
sudo systemctl enable mysql.service
sudo systemctl start docker.service
sudo systemctl enable docker.service

Set MySQL database, account, and password

sudo mysql -u root -p
CREATE USER ‘nextcloud’@‘localhost’ IDENTIFIED BY ‘nextcloud’;
GRANT ALL PRIVILEGES ON nextcloud.* TO ‘nextcloud’@‘localhost’;

Install Nextcloud

unzip -q
sudo mv nextcloud /var/www/html/
sudo chown -R www-data:www-data /var/www/html/nextcloud
sudo mkdir -p /var/log/apache2/nextcloud/
sudo sed -i ‘/^memory_limit =/s/=.*/= 512M/’ /etc/php/8.1/apache2/php.ini

Enable Apache modules.

sudo a2enmod rewrite headers env dir mime ssl proxy_http

Set Apache config for Nextcloud and Collabora.

sudo nano /etc/apache2/sites-available/nextcloud.conf

Alias / "/var/www/html/nextcloud/"

<Directory /var/www/html/nextcloud/>
  Require all granted
  AllowOverride All
  Options FollowSymLinks MultiViews

  <IfModule mod_dav.c>
    Dav off

<VirtualHost *:80>
   Redirect permanent /
<VirtualHost *:443>
   DocumentRoot /var/www/html/nextcloud
   <IfModule mod_headers.c>
     Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
   <IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteRule ^/\.well-known/carddav https://%{SERVER_NAME}/remote.php/dav [R=301,L]
     RewriteRule ^/\.well-known/caldav https://%{SERVER_NAME}/remote.php/dav [R=301,L]
     RewriteRule ^/\.well-known/webfinger https://%{SERVER_NAME}/index.php/.well-known/webfinger [R=301,L]
     RewriteRule ^/\.well-known/nodeinfo https://%{SERVER_NAME}/index.php/.well-known/nodeinfo [R=301,L]
  Options -Indexes

  # 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 retry=0
  ProxyPassReverse    /loleaflet
  ProxyPass           /browser retry=0
  ProxyPassReverse    /browser

  # WOPI discovery URL
  ProxyPass           /hosting/discovery retry=0
  ProxyPassReverse    /hosting/discovery

  # Capabilities
  ProxyPass           /hosting/capabilities retry=0
  ProxyPassReverse    /hosting/capabilities

  # Main websocket
  ProxyPassMatch      "/cool/(.*)/ws$" ws://$1/ws nocanon

  # Admin Console websocket
  ProxyPass           /cool/adminws ws://

  # Download as, Fullscreen presentation and Image upload operations
  ProxyPass           /cool
  ProxyPassReverse    /cool


ErrorLog ${APACHE_LOG_DIR}/nextcloud/nextcloud_error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud/nextcloud_access.log combined

Enable Apache sites.

sudo a2ensite default-ssl nextcloud

Reload and restart Apache.

sudo systemctl reload apache2.service
sudo systemctl restart apache2.service

Try to connect Collabora admin console.
input account and password.

I will not write other basic installations. :sweat_smile:

Set Nextcloud admin, data folders, and MySQL by connecting to

I don’t have the recommended apps installed.

If you don’t have Nextcloud Office installed, please install it.

Install and enable Nextcloud Office via Apps.

Set Nextcloud Office configuration on Office in Administration on Settings.

URL (and Port) of Collabora Online-server:

#If you see “Saved with error: Collabora Online should use the same protocol as the server installation.”
#Don’t worry this will not affect Nextcloud Office.

If configured correctly, it will open successfully.

You can create or open a document, spreadsheet, or presentation.

written by bearchen :bear: