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
- Prérequis
- Configuration du serveur SRV-Collabora
- Configuration du serveur SRV-ReverseProxy
- Installation de l'application sur le serveur Nextcloud
- Activation de l'application sur le serveur Nextcloud
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
Bonjour,
Merci pour ce tuto , super bien fait et qui correspond exactement à ce que je voulais faire.
J'ai donc suivi pas par pas et j'ai donc les 3 serveurs sous proxmox .
les 3 noms de domaine
cependant lorsque dans nextcloud je paramètre le serveur collabora, le test de connexion fonctionne très bien et "passe au vert". Mais des que je veux éditer un document un message me dit que le serveur n'est pas configuré et lorsque je retourne sur la page de configuration j'ai la croix rouge "Impossible d'établir la connexion au serveur Collabora Online"
Avez vous un idée ?
Cordialement
Bonjour,
Je viens de suivre le tuto (très bien fait d'ailleurs merci), mais malheureusement ca ne fonctionne pas pour moi.
En effet, lorsque j'active le reverse :
ProxyPreserveHost On
ProxyRequests On
ProxyPass / http://monip/
ProxyPassReverse / http://monip/
Ca ne répond plus.
J'ai essayé avec l'ip locale interne et l'ip externe, rien à faire.
Le container répond lui bien sur les 2 ip (netstat -lnpt).
Une idée ?
Merci beaucoup
François
Bonjour,
Super tuto ! merci.
Petite question pour l'utilisation Nextcloud et Collabora en ligne ; y a-t-il des licences ? restrictions ? ou c'est 100% open source ?
A ma connaissance, le projet Nextcloud est Open source. Concernant Collabora Online, il existe plusieurs versions. La version que j'ai installé (CODE) est limitée à 10 documents et 20 utilisateurs.