Nextcloud – Installation de l’application Collabora Online

Dans cet article, nous allons voir comment installer l’application Collabora Online sur un serveur Nextcloud. Cela va vous permettre d’éditer vos documents office (doc, docx, xls, xlsx…) directement depuis votre portail web Nextcloud.

Sommaire

Infrastructure cible

Pour notre installation, nous allons utiliser trois serveurs virtuels sous Debian 9, afin de séparer les différents rôles nécessaires au bon fonctionnement de  notre serveur Nextcloud / Collabora. Si vous le souhaitez, vous pouvez réaliser l’installation sur un seul et même serveur.

Les différents rôles nécessaires sont :
  • SRV-Nextcloud : Le serveur WEB qui héberge l’application Nextcloud
  • SRV-Collabora : Le serveur Docker qui exécute l’application Collabora Online
  • SRV-ReverseProxy : Le serveur reverse proxy qui va rediriger les flux en fonction des URLs
    • nextcloud.adminpasbete.fr vers SRV-Nextcloud
    • collabora.adminpasbete.fr vers SRV-Collabora

Prérequis

Vous devez disposer d’un serveur Nextcloud fonctionnel. Vous trouverez ICI le manuel d’administration.

Il est nécessaire de disposer de deux noms de domaine différents (un pour votre serveur nextcloud, et un pour votre serveur collabora). Cela peut être deux sous domaines comme dans mon exemple.

Vous devez avoir deux serveurs fonctionnels sous Debian 9 (un pour l’application Collabora Online, et un pour le serveur reverse proxy). Dans cet article, nous aborderons uniquement l’installation du serveur Collabora Online et du serveur Reverse Proxy.

Il est nécessaire d’avoir un certificat reconnu par une autorité pour votre serveur Collabora Online. Vous pouvez utiliser un certificat Let’s Encrypt.

L’ensemble des fichiers nécessaires pour la configuration des certificats doivent être stockés sur le serveur qui assure le rôle de reverse proxy (dans mon cas SRV-ReverseProxy). Pour notre installation, nous utiliseront l’arborescence suivante :

/etc/apache2/ssl
/etc/apache2/ssl/nextcloud.adminpasbete.fr
/etc/apache2/ssl/nextcloud.adminpasbete.fr/ssl.cert
/etc/apache2/ssl/nextcloud.adminpasbete.fr/ssl.key
/etc/apache2/ssl/nextcloud.adminpasbete.fr/ssl.ca
/etc/apache2/ssl/collabora.adminpasbete.fr
/etc/apache2/ssl/collabora.adminpasbete.fr/ssl.cert
/etc/apache2/ssl/collabora.adminpasbete.fr/ssl.key
/etc/apache2/ssl/collabora.adminpasbete.fr/ssl.ca

Finalement, il est nécessaire de modifier la configuration de votre pare-feu pour rediriger l’ensemble des flux HTTP / HTTPS sur le serveur SRV-ReverseProxy (règles NAT ports 80 et 443).

Configuration du serveur SRV-Collabora

Installation de Docker

1) Se connecter sur le serveur SRV-Collabora en ayant les droits root

2) On met à jour la liste des paquets disponibles

apt-get update

3) Installation des dépendances nécessaire pour Docker

apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

4) Ajout du dépôt de Docker

# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -

5) On met à jour la liste des paquets et on installe Docker

apt-get update && apt-get install docker-ce

Configuration de Docker

Par défaut, sur Ubuntu et Debian, Docker utilise AUFS comme pilote de stockage. Pour que Collabora Online puisse fonctionner correctement, il est nécessaire de le changer par Device mapper.

1) Créer le répertoire suivant : /etc/systemd/system/docker.service.d

mkdir /etc/systemd/system/docker.service.d

2) Créer le fichier de configuration pour le service Docker

# nano /etc/systemd/system/docker.service.d/DeviceMapper.conf

3) Ajouter le contenu suivant et sauvegarder le fichier

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --storage-driver=devicemapper -H fd://

4) Recharger la configuration de Docker en saisissant la commande suivante :

# systemctl daemon-reload

5) Finalement, on redémarre le service Docker

systemctl restart docker

6) Pour vérifier la bonne configuration de Docker, saisir la commande suivante :

docker info

Installation du container Collabora Online

1) Téléchargement du container Collabora pour Docker

# docker pull collabora/code

2) Une fois le téléchargement effectué, il est nécessaire de créer un nouveau container pour exécuter Collabora Online

docker run -t -d -p IP_D-ECOUTE:9980:9980 -e 'domain=SOUSDOMAINE\\.DOMAINE\\.fr' --restart always --cap-add MKNOD collabora/code

Personnalisation de la commande :
IP_D-ECOUTE = Si vous installer tous les rôles sur un même serveur, il est recommandé de renseigner 127.0.0.1
SOUSDOMAINE\\.DOMAINE\\.fr = Le nom de domaine de votre serveur Nextcloud

Pour mon environnement, voici la commande à saisir :

docker run -t -d -p 10.123.1.2:9980:9980 -e 'domain=nextcloud\\.adminpasbete\\.fr' --restart always --cap-add MKNOD collabora/code

3) Pour vérifier la bonne exécution de votre container, vous pouvez regarder si votre serveur écoute sur le port 9980

netstat -lnpt

Dans certains cas, il est nécessaire d’ajouter des règles IPTABLES supplémentaires pour que Docker fonctionne correctement (sur une Debian 9, je n’ai pas rencontré de problème particulier)

iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o docker0 -j ACCEPT
iptables -A INPUT -i docker0 -j ACCEPT

Configuration du serveur SRV-ReverseProxy

Installation du rôle reverse proxy

Pour ma configuration, j’utiliserai Apache2 pour réaliser le rôle reverse proxy. Il est tout à fait possible d’utiliser NGINX.

1) Se connecter sur le serveur SRV-ReverseProxy en ayant les droits root

2) On met à jour la liste des paquets disponibles

apt-get update

3) Installation de Apache2

# apt-get install apache2

4) Activation des modules Apache nécessaire au bon fonctionnement du reverse proxy

a2enmod proxy proxy_wstunnel proxy_http ssl

5) Redémarrage de Apache2 pour prendre en compte les modifications

service apache2 restart

Configuration de l’hôte nextcloud.adminpasbete.fr

1) Création du fichiers de configuration pour l’hôte virtuel nextcloud.adminpasbete.fr

# nano /etc/apache2/sites-available/nextcloud.adminpasbete.fr.conf

2) Insérer la contenu suivant (à adapter suivant votre environnement)

<VirtualHost *:80>
 ServerName nextcloud.adminpasbete.fr


ProxyPreserveHost On
 ProxyRequests On
 ProxyPass / http://10.123.1.1/
 ProxyPassReverse / http://10.123.1.1/
</VirtualHost>

<VirtualHost *:443>
 ServerName nextcloud.adminpasbete.fr

SSLEngine on
 SSLCertificateFile "/etc/apache2/ssl/nextcloud.adminpasbete.fr/ssl.cert"
 SSLCertificateKeyFile "/etc/apache2/ssl/nextcloud.adminpasbete.fr/ssl.key"
 SSLCACertificateFile "/etc/apache2/ssl/nextcloud.adminpasbete.fr/ssl.ca"
 SSLStrictSNIVHostCheck Off
 SSLCipherSuite RC4-SHA:AES128-SHA:HIGH:!aNULL:!MD5

SSLProxyEngine On
 SSLProxyCheckPeerCN Off
 SSLProxyCheckPeerName Off
 SSLProxyVerify none

ProxyPass / https://10.123.1.1/
 ProxyPassReverse / https://10.123.1.1/
 ProxyPreserveHost On

</VirtualHost>

Les éléments indiqués en rouge sont à adapter suivant votre environnement

3) Puis on active le nouvel hôte virtuel avec la commande a2ensite

# a2ensite nextcloud.adminpasbete.fr.conf

4) Redémarrer Apache2 pour prendre en compte la nouvelle configuration

# /etc/init.d/apache2 restart

Configuration de l’hôte collabora.adminpasbete.fr

1) Création du fichiers de configuration pour l’hôte virtuel nextcloud.adminpasbete.fr

# nano /etc/apache2/sites-available/collabora.adminpasbete.fr.conf

2) Insérer la contenu suivant (à adapter suivant votre environnement)

<VirtualHost *:80>
 ServerName collabora.adminpasbete.fr

ProxyPreserveHost On
 ProxyRequests On
 ProxyPass / http://10.123.1.1/
 ProxyPassReverse / http://10.123.1.1

</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
 ServerName collabora.adminpasbete.fr

SSLCertificateFile "/etc/apache2/ssl/collabora.adminpasbete.fr/ssl.cert"
 SSLCertificateKeyFile "/etc/apache2/ssl/collabora.adminpasbete.fr/ssl.key"
 SSLCACertificateFile "/etc/apache2/ssl/collabora.adminpasbete.fr/ssl.ca"

# 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://10.123.1.2:9980/loleaflet retry=0
 ProxyPassReverse /loleaflet https://10.123.1.2:9980/loleaflet

# WOPI discovery URL
 ProxyPass /hosting/discovery https://10.123.1.2:9980/hosting/discovery retry=0
 ProxyPassReverse /hosting/discovery https://10.123.1.2:9980/hosting/discovery

# Main websocket
 ProxyPassMatch "/lool/(.*)/ws$" wss://10.123.1.2:9980/lool/$1/ws nocanon

# Admin Console websocket
 ProxyPass /lool/adminws wss://10.123.1.2:9980/lool/adminws

# Download as, Fullscreen presentation and Image upload operations
 ProxyPass /lool https://10.123.1.2:9980/lool
 ProxyPassReverse /lool https://10.123.1.2:9980/lool

</VirtualHost>
</IfModule>

Les éléments indiqués en rouge sont à adapter suivant votre environnement

3) Puis on active le nouvel hôte virtuel avec la commande a2ensite

# a2ensite collabora.adminpasbete.fr.conf

4) Redémarrer Apache2 pour prendre en compte la nouvelle configuration

# /etc/init.d/apache2 restart

Installation de l’application sur le serveur Nextcloud

1) Pour installer l’application Collabora Online sur votre serveur Nextcloud, il vous suffit de vous connecter sur votre serveur web Nextcloud avec un compte ayant les droits administrateur, puis de vous rendre dans le menu Applications

2) Sélectionner ensuite la catégorie Bureautique & texte. Et cliquer sur Activer pour installer l’application Collabora Online

Activation de l’application sur le serveur Nextcloud

1) Pour rendre disponible et fonctionnelle l’application Collabora Online, il est nécessaire d’indiquer à votre serveur Nextcloud ou se trouve le serveur Collabora. Rendez vous dans le menu Administration

2) Cliquer sur Collabora en ligne. Indiquer l’URL de votre serveur Collabora Online (ici https://collabora.adminpasbete.fr) puis cliquer sur Appliquer

3) Vous pouvez désormais éditer vos documents office directement depuis votre portail web Nextcloud

adminpasbete