Bonjour à tous, je voulais vous faire partager un tutoriel, probablement le plus simple pour installer Collabora, en effet pas de reverse, pas de sous-domaine dédié avec ses certificats etc, tout se passe en "direct".

Collabora est une application qui vous permettra de créer, éditer et partager des documents (texte, tableur, présentation) au sein même de votre Nextcloud à l'instar de ce que propose Google Drive ou Onedrive :

Collabora Online

Après diverses recherches et batailles, notamment sur les certificats SSL, le sous-domaine dédié à collabora ou encore la configuration Nginx, j'ai réussi à faire fonctionner la bête avec une manière assez simple vous verrez.

Ce tutoriel ne requiert pas de sous domaine pour collabora TOUT se passe avec votre domaine "nextcloud.ndd.tld"

Pour ma part testé sur :
serveur = Debian 9
Nextcloud = version 14
PHP = 7.1

Pré-requis
- Avoir installé Nextcloud sur un sous domaine dédié (Important ni nextcloud, ni collabora n'aiment les mondomaine.tld/nextcloud) ex "nextcloud.ndd.tld" Installer nextcloud
- Une cafetière fonctionnelle 😉
- Un peu de temps

Tutoriel

Installer environnement Docker

apt remove docker docker-engine docker.io
apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sed -i '$adeb https://download.docker.com/linux/ubuntu artful stable' /etc/apt/sources.list
apt update && apt install docker-ce

Tester le fonctionnement de docker

docker run hello-world

Vous devez avoir un résultat semblable :
Réponse Docker Hello World

On télécharge l'image Docker de Collabora :

docker pull collabora/code

Configuration Nginx

Si vous avez suivi le tuto de mondédié cité plus haut pour l'installation de nextcloud, alors votre fichier conf se trouve /etc/nginx/sites-enabled/nextcloud.conf sinon il peut se trouver etc/nginx/conf.d/nextcloud.conf si vous avez utilisé un tuto autre que celui de mondédié.

Donc on édite le bon fichier conf, ici, celui du tutoriel d'installation Nextcloud de mondédié

nano /etc/nginx/sites-enabled/nextcloud.conf 

On ajoute à ce fichier

### Début Config Collabora Online ###
location ^~ /loleaflet {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
location ^~ /hosting/discovery {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
location ^~ /lool {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
### Fin Config Collabora Online ###

Voilà mon fichier afin que vous puissiez avoir une idée :

ATTENTION AUX URL, METTEZ BIEN VOTRE NDD A LA PLACE DE nextcloud.ndd.tld

server {
 
listen 80;
server_name nextcloud.ndd.tld;  
return 301 https://$host$request_uri;
}
 
server {
	listen 443 ssl;
	server_name nextcloud.ndd.tld;
	index index.php;
 
   ssl on; 

   ssl_certificate /etc/letsencrypt/live/www.ndd.tld/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/www.ndd.tld/privkey.pem;
   
   add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
   add_header Referrer-Policy no-referrer always;  

#	include /etc/nginx/conf.d/ciphers.conf;                 #à désactiver si vous ne faites pas le tuto Logjam
	ssl_prefer_server_ciphers on;                                  #à activer si vous ne faites pas le tuto Logjam
  	ssl_protocols TLSv1 TLSv1.1 TLSv1.2;             # à activer si vous ne faites pas le tuto Logjam
  	ssl_ciphers 'AES256+EECDH:AES256+EDH';   #à activer si vous ne faites pas le tuto Logjam
#	ssl_session_cache shared:SSL:10m; (limite la session ssl à 10mn, à activer ou non si vous le souhaitez.
 
#LOGS
	access_log /var/log/nginx/nextnextcloud-access.log combined;
	error_log /var/log/nginx/nextnextcloud-error.log error;	
 
# root doit pointer vers le chemin d'installation de Nextnextcloud. Typiquement /var/www/nextnextcloud.
       root /var/www/nextnextcloud;
 
client_max_body_size 10G; # set max upload size
fastcgi_buffers 64 4K;
 
#rewrite url pour la synchronisation caldav/webdav.
	rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
	rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
	rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
 
 
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
 
#eviter le référencement de votre nextcloud par google.
	location = /robots.txt {
		allow all;
		log_not_found off;
		access_log off;
	}
 
#interdire l'accès aux sous dossiers de nextnextcloud.
	location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
		deny all;
	}
 
location / {
	# The following 2 rules are only needed with webfinger
	rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
	rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
 
	rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
	rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
 
	rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
 
	try_files $uri $uri/ index.php;
}

### Start Collabora Online ###
location ^~ /loleaflet {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
location ^~ /hosting/discovery {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
}
location ^~ /lool {
proxy_pass https://localhost:9980;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
### End Collabora Online ###
 
#config php
	location ~ ^(.+?\.php)(/.*)?$ {
		try_files $1 = 404;
 
	include fastcgi_params;
	fastcgi_param SCRIPT_FILENAME $document_root$1;
	fastcgi_param PATH_INFO $2;
	fastcgi_pass unix:/run/php/php7.1-fpm.sock;
}
 
# Mise en cache des images
	location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
		expires 30d;
		# Optional: Don’t log access to assets
		access_log off;
	}
 
}

On lance l'image Docker de Collabora
On change l'url pour y mettre celle de son instance nextcloud, en gardant bien les doubles anti slash !

sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=nextcloud\\.your-domain\\.com' --restart always --cap-add MKNOD collabora/code

On vérifie que le port écouté soit le bon

sudo netstat -lnpt

On cherche cette ligne :

test port écouté

Si vous avez ce résultat alors on continue ... 😜

On vérifie Nginx :

sudo nginx -t

Si pas d'erreur alors on le relance Nginx :

service nginx restart

Maintenant on passe à la partie sur l'interface de Nextcloud, on active l'application Collabora on se rend dans les paramètres de nextcloud, sur la gauche on sélectionne Collabora en ligne, et dans l'URL on y met l'adresse de Nextcloud soit "https://nextcloud.ndd.tld" on applique et voilà.

7 mois plus tard

[UPDATE] Pour ceux qui veulent l'utiliser avec PHP7.3 = remplacer la ligne :
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
par
fastcgi_pass unix:/run/php/php7.3-fpm.sock;

Pour ceux qui poseront la question dans le futur 😉 !

10 mois plus tard

Bonjour,
tuto très bien fait pour la config nginx.
En revanche pour httpd sur centos7, je cherche l'équivalent du fichier nextcloud.conf.
Je suppose que cela doit être httpd.conf, voir le.htaccess si on l'utilise.
Avez-vous l'équivalent du code à ajouter pour httpd?
D'avance merci.

Répondre…