NC#4 – Edition de documents en ligne avec Collabora

Une des choses bien dans Nextcloud est le fait que nous puissions éditer en ligne des documents grâce au module Collabora. Nous allons le faire tourner sur une instance Docker afin d’avoir la souplesse de gestion du module. Avec l’édition online des documents Office, nous commençons à avoir une vraie solution de gestion de nos fichiers.

Edition des documents Office

Pour éditer des documents Office dans Nextcloud, il faut que nous ayons un serveur qui fasse tourner la suite CODE (Collabora Online Development Edition). Pour ce faire, nous allons faire tourner cette suite sur une instance Docker.

Docker est un système de container qui tournent indépendamment les uns des autres en tirant parti de l’hyperviseur sur lequel in tourne. Découvrez le concept docker complet ici : http://ippon.developpez.com/tutoriels/virtualisation/docker-presentation-part-1/

Pour paramétrer notre CODE, il faut d’abord lui définir un sous domaine et le créer dans Plesk (voir tuto ici). On va choisir ici collabora.mondomaine.tld. Sécurisez le dans Plesk avec un certificat Let’s encrypt.

Creation de l’instance Docker

Pour créer l’instance, on pourrait le faire sous Plesk mais deux ou trois trucs ne fonctionnent pas comme il faut, nous allons donc le faire en SSH. Connectez vous en SSH et tapez ensuite le code suivant :

docker run -t -d -p 9980:9980 -m 1024M -e 'domain=nextcloud\\.domaine\\.tld' -e 'username=admin' -e 'password=xxxx' --name collabora_nextcloud  --restart always --cap-add MKNOD collabora/code

Explications des paramètres :

  • -p : on mappe le port local du container 9980 sur le port 9980 du serveur
  • -m : on limite la mémoire du container à 1024Mb
  • -e : options générales du container :
    • domain : il faut déclarer l’url de votre serveur nextcloud (ne pas se tromper avec l’url du domaine collabora)
    • username : login pour la console d’administration
    • password : password pour la console d’administration
    • name : nom du container
    • restart : always pour que le container redémarre si le serveur est redémarré
    • cap-add : le serveur va aller récupérer le container nommé collabora/code sur le Hub docker

Lancer la ligne de commande, le serveur va télécharger l’image sur le hub docker et ensuite créer le container. Quand le serveur vous a rendu la main, vous pouvez lister les container via la commande ps :

[root@mail ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
823d6327636d        collabora/code      "/bin/sh -c 'bash ..."   5 weeks ago         Up About an hour    0.0.0.0:9980->9980/tcp   collabora_nextcloud

En bas du menu Plesk, on peut accéder à la console Docker via le bouton Docker.
docker

On voit alors notre instance et on peut aller voir les logs et ses paramètres.

docker2

Configuration de Nextcloud

Connectez vous sur votre instance Nextcloud avec un compte administrateur. Dans le menu en haut à droite, aller dans Applications. Allez dans Bureautique et texte puis chercher Collabora online et activer l’application.

nextcloud_app

En haut à droite de l’écran, allez dans le menu Paramètres puis Collabora en ligne. Rentrez l’url de votre instance Docker comme vu plus haut puis cliquez sur appliquer.

collabora

Paramétrage du proxy Nginx

Pour que cela fonctionne en totalité, nous avons vu que l’instance Docker tourne sur le port 9980 et que dans Nextcloud nous avons mis directement en https. Nous allons configurer nginx en proxy pour accéder à notre instance.

Pour cela, allez dans Plesk sur votre sous domaine collabora.domaine.tld puis allez dans le menu Apache & nginx Settings.

Ensuite, il faut renseigner la directive Nginx suivante en remplaçant domaine.tld par votre nom de domaine :

listen 443 ssl http2;
server_name collabora.domaine.tld;
add_header X-XSS-Protection "1; mode=block";

ssl_certificate /usr/local/psa/var/modules/letsencrypt/etc/live/collabora.domaine.tld</span>/fullchain.pem;
ssl_certificate_key /usr/local/psa/var/modules/letsencrypt/etc/live/collabora.domaine.tld</span>/privkey.pem;

# static files
location ^~ /loleaflet {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}

# WOPI discovery URL
location ^~ /hosting/discovery {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}

# download, presentation and image upload
location ^~ /lool {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

# main websocket
location ~ ^/lool/(.*)/ws$ {
proxy_pass https://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}

# Admin Console websocket
location ^~ /lool/adminws {
proxy_pass https://localhost:9980;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_read_timeout 36000s;
}

Valider le tout.

Tests

Pour tester, allez à la racine de vos dossiers Nextcloud puis cliquez sur le « + » en haut de l’écran. Vous pouvez alors créer un document de type tableur, traitement de texte ou présentation sans problèmes.

collabora3

Donner un nom au fichier puis cliquez sur le fichier créé pour commencer l’édition.

collabora4

Pour fermer le fichier, cliquez sur la croix rouge en haut à droite.

Console d’administration

Vous pouvez accéder à la console d’administration de collabora via l’url https://collabora.domaine.tld/loleaflet/dist/admin/admin.html et ainsi accéder aux statistiques d’utilisation.

collabora5

Conclusion

En quelques minutes, nous avons paramétré une instance docker qui permet de faire de l’édition en ligne de documents Office. La suite collabora est très bien faite et assez accessible, avec un minimum de configuration. Nous verrons la partie Keepass et Draw.io dans un add-on de cet article.

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.