Collabora Online est une suite bureautique en ligne basée sur LibreOffice Online.
Collabora Online permet à plusieurs personnes en simultanée de modifier tout document LibreOffice ou MS Office (textes, classeurs, diaporamas).
Chaque personne peut modifier le document et en parallèle voir les modifications des autres personnes connectées au document. Une liste déroulante présente les utilisateurs connectés (et la couleur qui leur est associée).
Collabora Online s’intègre également dans Nextcloud et c’est justement ce que nous allons voir dans ce tutoriel.
Pour en savoir plus sur la différence entre Collabora Online et LibreOffice Online -> https://www.collaboraoffice.com/community-en/understanding-the-differences-between-libreoffice-online-code-and-collabora-online/
Avant de démarrer, j’ai fait ce tutoriel sur Debian 8 (64 bits), Apache 2.4.10 et Nexcloud 12.
Bien évidemment, toutes les commandes mentionnées ci-après sont à exécuter en tant que root…
Installation de Docker
Si ce n’est pas déjà le cas, nous allons commencer par installer Docker.
On met à jour la liste des dépôts :
On installe les dépendances :
On ajoute le dépôt de Docker :
On ajoute la clé GPG du dépôt :
On remet à jour la liste des dépôts et on installe Docker :
Installation de Collabora Online
On lance le téléchargement du container :
On lance le container :
Attention de bien remplacer « domain=cloud\\.mydomain\\.tld » par le sous-domaine de votre instance Nextcloud et de bien veiller également à double-échapper chaque sous-domaine !
Activation des modules Apache
Afin de faire fonctionner correctement le reverse proxy ainsi que le support du SSL, vous allez devoir activer certains modules d’Apache :
On redémarre ensuite Apache pour activer les modules :
Mise en place des hôtes virtuels
Commençons par créer l’hôte virtuel pour le sous-domaine HTTP qui aura uniquement pour but de rediriger vers le sous-domaine en HTTPS :
On y insère ensuite le code ci-dessous :
Attention de bien remplacer les deux occurrences de « collabora.mydomain.tld » par le sous-domaine que vous aurez créé pour Collabora Online (et non celui de votre instance Nextcloud) !
On sauvegarde et on quitte le fichier :
On active ensuite l’hôte virtuel :
Crée le certifcat
letsencrypt --apache --agree-tos --email your-email-address -d office.mycloudnetwork.com
<VirtualHost *:443>
ServerName collabora.mydomain.tld
:443
<Location />
Require all granted
</Location>
ErrorLog /var/log/apache2/collabora-error.log
CustomLog /var/log/apache2/collabora-access.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/collabora.mydomain.tld
/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/collabora.mydomain.tld
/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
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-$
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
</VirtualHost>
a2ensite collabora-le-ssl.conf
Enfin, on redémarre Apache pour prendre en compte les nouveaux hôtes virtuels :
Du côté du Firewall…
Lors de l’activation du container, Docker va automatiquement ajouté des règles dans votre firewall (iPtables dans mon cas).
Cependant, (et notamment dans mon cas), il a fallu que j’ajoute manuellement les trois règles ci-dessous dans mon script Iptables en plus de celles ajoutées par Docker :
Et redémarrer ensuite Iptables :
Comme mon script Iptables réinitialise TOUTES les règles lors de son redémarrage, il a donc supprimé les règles ajoutées par Docker.
Je dois donc redémarrer également Docker pour qu’il puisse ajouter à nouveau ses règles aux miennes :
Et voilà ! C’est terminé pour l’installation sur le serveur !
Activation de l’application Collabora Online dans Nextcloud
- Allez dans le menu « Applications » de Nexcloud
- Dans la colonne de gauche, cliquez sur « Bureautique et texte »
- Recherchez et activez l’application « Collabora Online »
- Allez maintenant dans le menu « Administration »
- Dans la colonne de gauche, cliquez sur « Collabora Online »
- Renseignez le sous-domaine de votre instance Collabora Online (ex: collabora.mydomain.tld )
Et voilà ! Si tout s’est bien passé vous pouvez dorénavant créer et éditer des documents textes, tableurs ou diaporama dans Nexcloud !
Troubleshootings
Message d’erreur lors du lancement du container
Si, lors de lancement du container (commande docker run) vous voyez les message d’erreur ci-dessous :
Redémarrez simplement Docker :
Messages d’erreurs dans les logs du container
Si, dans vos les logs du container vous voyez le message d’erreur ci-dessous :
Alors je vous recommande suivre la solution de Guz (qui a bien fonctionnée dans mon cas) : https://help.nextcloud.com/t/collabora-docker-capabilities-problem/4774/10
Message d’erreur dans l’application Collabora Online de Nexcloud
Si, lorsque vous chargez un document dans Nexcloud, vous voyez le message d’erreur ci-dessous :
Alors vous pouvez tenter de suivre la solution de Jakub_Rocek : https://help.nextcloud.com/t/collabora-online-setup/4645/14
Cette solution consiste à effectuer un simple échappement au lieu d’un double lors du lancement du container :
Cette solution semble fonctionner dans mon cas.
Ressources :
Le site officiel de Docker : https://docs.docker.com/engine/installation/linux/docker-ce/debian/
Le site officiel de Collabora Online : https://nextcloud.com/collaboraonline/