Outils pour utilisateurs

Outils du site


collabora_online_via_docker_nextcloud

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
collabora_online_via_docker_nextcloud [2021/02/05 01:27] – créée n1c0collabora_online_via_docker_nextcloud [2024/02/26 00:31] (Version actuelle) – [Configurer Apache] n1c0
Ligne 1: Ligne 1:
-===== Collabora Online via Docker dans Nextcloud =====+====== Collabora Online via Docker dans Nextcloud =====
 + 
 +[[https://nextcloud.com/|Nextcloud]] est un nuage personnel installable sur son propre serveur comprenant non seulement un espace de fichiers (comme Dropbox) mais aussi de multiples applications comme un calendrier, un tableau de gestion de projet (comme Trello), de la visio/tchat, de la gestion de mots de passe (via Keepass), un webmail...etc, le tout de manière collaborative à travers des groupes. 
 + 
 +[[https://www.collaboraoffice.com/fr/code/|Collabora Online Development]] permet de bénéficier d'une suite bureautique en ligne, du même type que celles de Google par exemple. On peut la connecter à Nextcloud pour travailler directement sur les fichiers stockés dans le nuage. 
 + 
 +Pour la suite, on supposera que l'on est sur un serveur Debian 10 (buster), que le serveur web est Apache et que Nextcloud est déjà installé sur l'adresse nextcloud.monserveur.org. On installera la suite Collabora sur l'adresse collabora.monserveur.org, ce qui suppose que ce sous domaine est ddéjà confi 
 + 
 +Docker doit aussi être préalablement installé. [[https://docs.docker.com/engine/install/debian/|Voir la doc d'installation de Docker]]. 
 + 
 +Enfin, pour créer un certificat SSL et passer le trafic de Collabora en HTTPS, [[https://certbot.eff.org/|Certbot]] doit aussi être installé. 
 + 
 +===== Installer et démarrer Collabora dans Docker ===== 
 + 
 +On commence par aller chercher l'image de Collabora sur le [[https://hub.docker.com/r/collabora/code|Docker Hub]] qui sera utilisé dans un container Docker : 
 + 
 +<code bash> 
 +docker pull collabora/code 
 +</code> 
 + 
 +Ensuite on démarre le container : 
 + 
 +<code bash> 
 +docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.monserveur\\.org' --restart always --cap-add MKNOD collabora/code 
 +</code> 
 + 
 +Avec : 
 +  * -t : crée une pseudo-TTY 
 +  * -d : éxécute le programme en fond de tâche 
 +  * -p 127.0.0.1:9980:9980 : map et écoute sur le port 9980 
 +  * -e 'domain=nextcloud\\.monserveur\\.org' : passe une variable spécifiant l’url sur laquelle nextcoud est installé (pas celle de Collabora !) 
 +  * --restart always : rédémarre systématiquement si le container crash 
 +  * --cap-add MKNOD : donne des capabilités linux au container 
 +  * collabora/code : nom de l’image qui démarrera dans le container 
 + 
 +On peut vérifier que le container est démarré avec : 
 + 
 +<code bash> 
 +docker ps -a 
 +// ou 
 +netstat -lnpt | grep docker 
 +</code> 
 + 
 +Mettre cette commande de lancement dans un script shell simplifiera les choses pour les futurs démarrages. 
 + 
 +===== Configurer Apache ===== 
 + 
 +Vérifier que ces modules apache sont bien activés : 
 +  * proxy 
 +  * proxy_connect 
 +  * proxy_http 
 +  * proxy_wstunnel 
 +  * ssl 
 + 
 +S'ils ne le sont pas, les activer et relancer Apache. 
 + 
 +Créer un Virtual Host sur le port 80 (pour le moment) qui définira le domaine de Collabora (collabora.monserveur.org). Par exemple on crée le fichier **/etc/apache2/sites-available/collabora.monserveur.org.conf** dans lequel on met : 
 + 
 +<code bash> 
 +<VirtualHost *:80> 
 + 
 +        ServerName collabora.monserveur.org 
 + 
 +        # 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 
 + 
 +        # Endpoint with information about availability of various features 
 +        ProxyPass           /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0 
 +        ProxyPassReverse    /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities 
 + 
 +        # Logs 
 +        ErrorLog "/var/log/apache2/collabora_error" 
 + 
 +</VirtualHost> 
 +</code> 
 + 
 +Activer ce virtual host : 
 + 
 +<code bash> 
 +a2ensite collabora.monserveur.org.conf 
 +</code> 
 + 
 +Puis redémarrer Apache. 
 + 
 +===== Configurer un certificat SSL ===== 
 + 
 +Il faut maintenant obtenir un certificat SSL pour signer le trafic HTTPS de collabora.monserveur.org. Pour cela, utiliser Certbot avec la commande : 
 + 
 +<code bash> 
 +certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d collabora.monserveur.org 
 +</code> 
 + 
 +Cela va automatiquement créer un nouveau virtual host collabora.monserveur.org-le-ssl.conf qui écoute le port 443 (https) et rediriger le trafic du port 80 (précédemment créé) vers le 443. 
 + 
 +Puis rédémarrer Apache. 
 + 
 +===== Autre config ===== 
 + 
 +Parfois, pour que Nextcloud puisse voir correctement Collabora, il faut ajouter dans **/etc/hosts** une ligne indiquant l'IP du serveur vers laquelle pointe le domaine collabora.monserveur.org comme ceci : 
 + 
 +<code bash> 
 +XXX.XXX.XXX.XXX    collabora.monserveur.org 
 +</code> 
 + 
 +===== Configurer Nextcloud ===== 
 + 
 +Le container docker de Collabora est démarré, le certificat SSL est prêt, il reste à indiquer à Nextcloud où se trouve Collabora. 
 + 
 +Pour ça, en tant qu'admin, installer l'application [[https://apps.nextcloud.com/apps/richdocuments|Collabora Online]]. **Attention** à ne pas installer l'application "Collabora Online - Built-in CODE Server" qui installerait une version allégée de Collabora qui rentrerait alors en conflit avec que l'on vient de configurer. 
 + 
 +Ensuite, toujours en tant qu'admin, aller dans les Paramètres puis "Collabora Online Development Edition". Choisir "Utiliser votre propre serveur" et indiquer l'url de Collabora : https://collabora.monserveur.org 
 + 
 +Et voilà :) 
 + 
 +===== Mettre à jour Collabora ===== 
 + 
 +D'abord il faut éteindre et supprimer le container qui fait actuellement tourner Collabora. Récupèrer son ID dans la liste affichée par la commande : 
 + 
 +<code bash> 
 +docker ps -a 
 +</code> 
 + 
 +Puis supprimer le container : 
 + 
 +<code bash> 
 +docker rm -f <id-du-container> 
 +</code> 
 + 
 +Récupérer la dernière image de Collabora : 
 + 
 +<code bash> 
 +docker pull collabora/code 
 +</code> 
 + 
 +Enfin, relancer le container avec la même commande Docker vu au début (d'où le côté pratique de la mettre dans un script). 
 + 
 + 
 + 
 +{{tag>autohebergement nextcloud collabora}}
collabora_online_via_docker_nextcloud.1612488421.txt.gz · Dernière modification : 2021/02/05 01:27 de n1c0