Installer Collabora avec Nextcloud


#1

Bonjour,

J’ai remarqué une demande de la part de la communauté Yunohost pour un tutoriel d’installation de Collabora CODE (LibreOffice Online/une version collaborative en ligne de la suite bureautique LibreOffice) avec Nextcloud. J’y suis arrivé, donc je vous partage la démarche qui m’a mené au succès. Note : dans ce tutoriel, je vais montrer comment j’ai installé Collabora avec Docker.

J’ai utilisé un VPS chez OVH avec un nom de domaine délivré gratuitement par Freenom qui pointe vers l’IP publique de mon VPS (DNS Type A). J’ai également créé un sous-domaine qui pointe (DNS Type A) également vers l’IP publique de mon VPS.
Si vous n’avez pas de domaine, vous pouvez aussi créer un sous-domaine après l’installation de Yunohost (voir documentation).

Rappel sur l’adresse IP publique :
Elle ne peut pas être 10.xxx.xxx.xxx, 172.xxx.xxx.xxx, 192.168.xxx.xxx
Vous pouvez la connaître avec la commande « inet addr show », votre IP publique s’affiche dans le résultat de la commande après le mot « inet »

Tout ce que je viens d’expliquer est détaillé dans la documentation Yunohost, parties « DNS - Système de nom de domaine ».

Je détaille la marche à suivre à partir d’une installation Yunohost fonctionnelle, c’est à dire après l’installation du VPS/machine (sur Debian 8) et de Yunohost ainsi que les domaines/sous-domaine correctement configurés au niveau des DNS et de votre instance Yunohost.

Je débuterai par :

  • [Admin] les étapes qui peuvent s’effectuer sur l’administration web (dans le navigateur) de YNH
  • [Console] celles doivent se faire ligne de commande (par SSH pour un VPS, par exemple, ou dans simplement un terminal)
  • [Nextcloud] celles qui doivent se faire sur Nextcloud

Vous devez avoir au moins deux domaines différents (ou un sous-domaine et un domaine ou deux sous-domaines différents) pour installer Collabora avec Docker : l’un sera le principal pour Yunohost , et l’autre servira exclusivement à Collabora.

Installation de Nextcloud

  1. [Admin] Créer un nouvel utilisateur : « Utilisateurs » -> « + Nouvel utilisateur » -> Remplir les champs requis -> « Sauvegarder »
  2. [Admin] Installer l’application Nextcloud : « Applications » --> « + Installer » -> « Nextcloud » -> Renseigner le nom de domaine (ou sous-domaine) principal (mondomaine.tld) et l’utilisateur précédement créé. Testez l’application Nextcloud.
    Si elle ne fonctionne pas :
    Désinstaller puis installer de nouveau l’application. Normalement ça fonctionne ensuite. (Si vous savez comment faire fonctionner Nextcloud du premier coup je suis preneur.)

Installation de Docker

Documentation de Docker : https://docs.docker.com/ (navigation à gauche de la page)

  1. [Console] Installer Docker : dans la documentation de Docker, Get Docker/Docker CE/Debian
  2. [Console] Définir le pilote de stockage en « dispositif de mappage » (« devicemapper ») : dans la documentation de Docker, Manage application data/Store data within containers/Use the Device Mapper storage driver

Installation de Collabora

  1. [Admin] Faire certifier vos deux domaine(s)/sous-domaine(s) si ce n’est déjà fait.
  2. [Admin] Installer l’application Collabora : « Applications » -> « + Installer » -> En bas de la page « Installer une application personnalisée » -> Renseigner l’url « https://github.com/aymhce/collaboradocker_ynh » -> Définir le nom de domaine secondaire.
  3. [Nextcloud] Ajouter Collabora à Nextcloud : Cliquer sur son initiale en haut à droite -> « + Applications » -> « Bureautique & texte » -> Sous « Collabora Online », « Activer »
  4. [Nextcloud] Configurer Collabora sur Nextcloud : Cliquer sur son initiale en haut à droite -> « Paramètres » -> Sous « Administration », « Collabora en ligne » -> Renseigner le « Serveur Collabora en ligne » par votre nom de domaine secondaire précédé de « https:// »

Normalement après, on peut créer des documents LibreOffice sur Nextcloud et les éditer grâce à Collabora en ligne ! Je reste ouvert à toute suggestion, j’y suis arrivé que cette nuit alors il y a sûrement des améliorations à faire dans la procédure.

Sur Github, merci à aymhce le développeur principal de l’application, raphaeljolivet qui a remarqué et corrigé un bug crucial, lapineige et tous ceux qui reportent des bugs pour faire avancer le logiciel libre !


[Official app] Nextcloud
#2

Is there any chance to have this tutorial in English? Thanks


#3

Bonjour @aina, merci pour ce tutoriel ! Juste une précision, il n’y a pas besoin d’installer docker en pré-requis, ce qui fait qu’il n’y a pas besoin d’utiliser de terminal en ligne de commande (ssh). Si docker n’est pas installé de base, l’application yunohost collaboradocker_ynh s’en chargera automatiquement.


#4

Je galère avec Docker !
Quand je lance docker sudo yunohost service start docker j’obtiens :

Job for docker.service failed. See ‘systemctl status docker.service’ and ‘journalctl -xn’ for details.

Quand je fais systemctl status docker.service :

● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled)
Active: failed (Result: start-limit) since Sun 2018-04-29 15:16:15 UTC; 26s ago
Docs: https://docs.docker.com
Process: 9003 ExecStart=/usr/bin/dockerd -H fd:// (code=exited, status=1/FAILURE)
Main PID: 9003 (code=exited, status=1/FAILURE)

Apr 29 15:16:15 mondomaine.fr systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Apr 29 15:16:15 mondomaine.fr systemd[1]: Failed to start Docker Application Container Engine.
Apr 29 15:16:15 mondomaine.fr systemd[1]: Unit docker.service entered failed state.
Apr 29 15:16:15 mondomaine.fr systemd[1]: docker.service holdoff time over, scheduling restart.
Apr 29 15:16:15 mondomaine.fr systemd[1]: Stopping Docker Application Container Engine…
Apr 29 15:16:15 mondomaine.fr systemd[1]: Starting Docker Application Container Engine…
Apr 29 15:16:15 mondomaine.fr systemd[1]: docker.service start request repeated too quickly, refusing to start.
Apr 29 15:16:15 mondomaine.fr systemd[1]: Failed to start Docker Application Container Engine.
Apr 29 15:16:15 mondomaine.fr systemd[1]: Unit docker.service entered failed state.

Quand je fais docker info j’obtiens :

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Si jamais un expert Docker passe par là…


#5

J’ai résolu mes problèmes avec Docker.
J’ai donc réussi à installer Collabora.
Malheureusement, quand je veux éditer un document depuis Nextcloud, j’ai une page grise.
La console donne les erreurs suivantes :

The page at https://nuage.mondomaine.fr/index.php/apps/files/?dir=/&fileid=19 contains a form which targets an insecure URL http://documents.mondomaine.fr/loleaflet/8c976a0/loleaflet.html?WOPISrc=https%3A%2F%2Fnuage.mondomaine.fr%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F120990_ocl39q8f50xr&title=New%20Document.odt&lang=fr&closebutton=1&revisionhistory=1.

Refused to load http://documents.mondomaine.fr/loleaflet/8c976a0/loleaflet.html?WOPISrc=https%3A%2F%2Fnuage.mondomaine.fr%2Findex.php%2Fapps%2Frichdocuments%2Fwopi%2Ffiles%2F120990_ocl39q8f50xr&title=New%20Document.odt&lang=fr&closebutton=1&revisionhistory=1 because it does not appear in the frame-src directive of the Content Security Policy.

Des idées ?


#6

Je précise que j’ai bien un certificat Let’s Encrypt sur documents.mondomaine.fr


#7

Bonjour,

Est-ce que tu as une extension comme privacy badger sur ton navigateur ?


#8

I promise you nothing, I will try to find some time to translate it.

De rien ! J’ai l’impression que l’installation automatique de Docker ne configure pas automatiquement le driver ! Justement, @Limezy a du faire face à ce problème premièrement je crois.

@Limezy regarde bien dans la configuration de Nextcloud si tu as débuté l’adresse de Collabora par “https” et non “http” !


#9

Hélas, j’avais vérifié plusieurs fois et je viens de le refaire, j’ai bien configuré l’adresse en https.

Non. J’ai un ublock origin mais qui est débloqué sur mes URL.

J’avais installé mon certificat Let’s Encrypt après avoir installé Collabora sur ce domaine. Dans le doute, j’ai donc supprimé puis réinstallé Collabora, sans succès. J’ai toujours la même erreur !


#10

Alors essaye d’accéder au domaine où tu as installé Collabora et rajoute /loleaflet après dans ton navigateur.

Tu devrais avoir ça


#11

Hum :thinking: j’ai une superbe page blanche…


#12

Alors fait un sudo docker ps en ssh et regarde l’état du container Collabora

CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                     NAMES
cc1f687e70e9        collabora/code:3.2.0.3   "/bin/sh -c 'bash st…"   4 days ago          Up 3 days           0.0.0.0:31000->9980/tcp   collaboradocker

#13

Salut,
J’ai essayé d’installer collabora aussi, mais l’installation de l’application n’a pas fonctionné.
J’ai essayé directement à partir de la liste d’app communautaires, voici le log que j’ai :

La configuration de SSOwat a été générée

La configuration de SSOwat a été générée

+ yunohost app ssowatconf

+ dockerapp_ynh_reloadservices

+ sudo systemctl reload nginx

+ echo '/etc/nginx/conf.d/.d/collaboradocker.conf wasn'\''t deleted because it doesn'\''t exist.'

+ '[' -e /etc/nginx/conf.d/.d/collaboradocker.conf ']'

+ [[ f = \/ ]]

+ [[ /etc/nginx/conf.d/.d/collaboradocker.conf =~ ^/[[:alnum:]]+$ ]]

+ [[ /var/www /home/yunohost.app =~ /etc/nginx/conf\.d/\.d/collaboradocker\.conf ]]

+ local 'forbidden_path= /var/www /home/yunohost.app'

+ local path_to_remove=/etc/nginx/conf.d/.d/collaboradocker.conf

+ ynh_secure_remove /etc/nginx/conf.d/.d/collaboradocker.conf

/etc/nginx/conf.d/.d/collaboradocker.conf wasn't deleted because it doesn't exist.

+ ynh_remove_nginx_config

+ echo '/home/yunohost.docker/collaboradocker wasn'\''t deleted because it doesn'\''t exist.'

/home/yunohost.docker/collaboradocker wasn't deleted because it doesn't exist.

+ '[' -e /home/yunohost.docker/collaboradocker ']'

+ [[ r = \/ ]]

+ [[ /home/yunohost.docker/collaboradocker =~ ^/[[:alnum:]]+$ ]]

+ [[ /var/www /home/yunohost.app =~ /home/yunohost\.docker/collaboradocker ]]

+ local 'forbidden_path= /var/www /home/yunohost.app'

+ local path_to_remove=/home/yunohost.docker/collaboradocker

+ ynh_secure_remove /home/yunohost.docker/collaboradocker

1

+ bash docker/rm.sh

+ dockerapp_ynh_rm

+ incontainer=1

+ export incontainer=1

++ echo 1

++ '[' -f /.dockerenv ']'

++ dockerapp_ynh_incontainer

+ architecture=amd64

+ export architecture=amd64

++ dpkg --print-architecture

+ path_url=/

+ sudo yunohost app setting collaboradocker port --value=31000 --quiet

+ ynh_app_setting_set collaboradocker port 31000

+ port=31000

++ echo 31000

++ netcat -z 127.0.0.1 31000

++ test -n 31000

++ local port=31000

++ ynh_find_port 31000

+ '[' '' == '' ']'

+ port=

+ export port=

++ sudo yunohost app setting collaboradocker port --output-as plain --quiet

++ ynh_app_setting_get collaboradocker port

+ data_path=/home/yunohost.docker/collaboradocker

+ export data_path=/home/yunohost.docker/collaboradocker

+ domain=

+ export domain=

+ app=collaboradocker

+ export app=collaboradocker

+ dockerapp_ynh_loadvariables

+ domain=

++ sudo yunohost app setting collaboradocker domain --output-as plain --quiet

++ ynh_app_setting_get collaboradocker domain

+ app=collaboradocker

++ . /usr/share/yunohost/helpers.d/utils

++ '[' -r /usr/share/yunohost/helpers.d/utils ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/user

++ '[' -r /usr/share/yunohost/helpers.d/user ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/system

++ '[' -r /usr/share/yunohost/helpers.d/system ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/string

++ '[' -r /usr/share/yunohost/helpers.d/string ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/setting

++ '[' -r /usr/share/yunohost/helpers.d/setting ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/print

++ '[' -r /usr/share/yunohost/helpers.d/print ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/package

++ '[' -r /usr/share/yunohost/helpers.d/package ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ N_PREFIX=/opt/node_n

+++ export N_PREFIX=/opt/node_n

+++ node_version_path=/opt/node_n/n/versions/node

+++ n_install_dir=/opt/node_n

++ . /usr/share/yunohost/helpers.d/nodejs

++ '[' -r /usr/share/yunohost/helpers.d/nodejs ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/network

++ '[' -r /usr/share/yunohost/helpers.d/network ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ MYSQL_ROOT_PWD_FILE=/etc/yunohost/mysql

++ . /usr/share/yunohost/helpers.d/mysql

++ '[' -r /usr/share/yunohost/helpers.d/mysql ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/ip

++ '[' -r /usr/share/yunohost/helpers.d/ip ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ CAN_BIND=1

++ . /usr/share/yunohost/helpers.d/filesystem

++ '[' -r /usr/share/yunohost/helpers.d/filesystem ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/backend

++ '[' -r /usr/share/yunohost/helpers.d/backend ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ run-parts --list /usr/share/yunohost/helpers.d

+ source /usr/share/yunohost/helpers

+ source _common.sh

Exécution du script « /var/cache/yunohost/from_file/collaboradocker_ynh-27d2d16034358c6b48200d7928bad9ea0f1643dd/scripts/remove »...

!!

collaboradocker's script has encountered an error. Its execution was cancelled.

!!

Sorry ! Your Docker deamon don't work ... Please check your system logs.

+ exit 1

+ echo ''

+ ynh_die

+ type -t ynh_clean_setup

+ echo -e '!!\n collaboradocker'\''s script has encountered an error. Its execution was cancelled.\n!!'

+ set +eu

+ trap '' EXIT

+ '[' 1 -eq 0 ']'

+ local exit_code=1

+ ynh_exit_properly

+ exit 1

+ echo 'Sorry ! Your Docker deamon don'\''t work ... Please check your system logs.'

+ ynh_die 'Sorry ! Your Docker deamon don'\''t work ... Please check your system logs.'

+ '[' 1 '!=' 0 ']'

+ '[' 1 == 127 ']'

+ incontainer=1

++ echo 1

++ '[' -f /.dockerenv ']'

++ dockerapp_ynh_incontainer

+ ret=1

++ sh _dockertest.sh

+ dockerapp_ynh_checkinstalldocker

+ trap ynh_exit_properly EXIT

+ set -eu

+ ynh_abort_if_errors

++ . /usr/share/yunohost/helpers.d/utils

++ '[' -r /usr/share/yunohost/helpers.d/utils ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/user

++ '[' -r /usr/share/yunohost/helpers.d/user ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/system

++ '[' -r /usr/share/yunohost/helpers.d/system ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/string

++ '[' -r /usr/share/yunohost/helpers.d/string ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/setting

++ '[' -r /usr/share/yunohost/helpers.d/setting ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/print

++ '[' -r /usr/share/yunohost/helpers.d/print ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/package

++ '[' -r /usr/share/yunohost/helpers.d/package ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ N_PREFIX=/opt/node_n

+++ export N_PREFIX=/opt/node_n

+++ node_version_path=/opt/node_n/n/versions/node

+++ n_install_dir=/opt/node_n

++ . /usr/share/yunohost/helpers.d/nodejs

++ '[' -r /usr/share/yunohost/helpers.d/nodejs ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/network

++ '[' -r /usr/share/yunohost/helpers.d/network ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ MYSQL_ROOT_PWD_FILE=/etc/yunohost/mysql

++ . /usr/share/yunohost/helpers.d/mysql

++ '[' -r /usr/share/yunohost/helpers.d/mysql ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/ip

++ '[' -r /usr/share/yunohost/helpers.d/ip ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ CAN_BIND=1

++ . /usr/share/yunohost/helpers.d/filesystem

++ '[' -r /usr/share/yunohost/helpers.d/filesystem ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

++ . /usr/share/yunohost/helpers.d/backend

++ '[' -r /usr/share/yunohost/helpers.d/backend ']'

++ for helper in '$(run-parts --list /usr/share/yunohost/helpers.d 2>/dev/null)'

+++ run-parts --list /usr/share/yunohost/helpers.d

+ source /usr/share/yunohost/helpers

+ source _common.sh

+ domain=collabora.plaf.fr

+ app=collaboradocker

Exécution du script « /var/cache/yunohost/from_file/collaboradocker_ynh-27d2d16034358c6b48200d7928bad9ea0f1643dd/scripts/install »...

Vérification des paquets requis pour collaboradocker...

Terminé

Extraction...

Téléchargement...

J’ai l’impression que l’erreur vient de là :

+ echo 'Sorry ! Your Docker deamon don'\''t work ... Please check your system logs.'

Ce qui rejoindrait le problème de @Limezy.

Et en renseignant l’url github directement, j’ai une erreur du type “pas de manifest.json”.


#14

Bonjour à tous
il y a deux jours j’ai installé collaboradocker directement par un
yunohost app install https://github.com/aymhce/collaboradocker_ynh --verbose
Tout s’est bien déroulé, mais ce matin après la mise à jour de la version 2.7.12 de yunoHost collabora fonctionnait mais je n’avais qu’une page grise quand je voulais ouvrir un document.

Ne comprenant pas ce qui s’était passé j’ai dé-installé collaboradocker_ynh et docker-ce puis redémarré le serveur pour tout réinstaller, mais rien à faire j’avais toujours cette page grise.
En relisant les changements majeurs de la v2.7.12 j’ai lu cette modif:
Utilisation des headers recommandés par Mozilla dans la conf nginx
En changeant mon firefox esr v52.7.3 pour firefox v57.0.1 collabora fonctionne à nouveau correctement.
Si ça peut aider certains


#15

Alors, j’avance : un redémarrage du serveur a réglé le problème de docker. Par contre j’ai du changer le driver de stockage, qui était “aufs”, en le remplaçant par “devicemapper” :

sudo systemctl stop docker
sudo nano /etc/docker/daemon.json

ajouter ces lignes dans le fichier (qui n’existait pas chez moi) puis sauvegarder :

{
  "storage-driver": "devicemapper"
} 

Puis
sudo systemctl start docker

Maintenant je tombe sur cette fameuse page grise. @mib, je ne comprends pas ce que c’est que cet esr firefox, est-ce que tu peux détailler ? Ça se change sur mon navigateur ou sur le serveur ?

Merci !


#16

@tomdereub
sous debian testing collabora fonctionne avec firefox ver57.0.1 ou avec firefox ver59.0.2 et chromium ver62.0.3202.89-1 mais pas avec la ver52.7.3 de firefoxt ni avec epiphany-browser ver3.28.1-1
J’ai fais ces tests ce matin


#17

@mib
Moi je suis sur Jessie stable avec Yunohost 2.7.12, et mon navigateur est Firefox 59.0.3.


#18

@tomdereub peut-être que tu utilises uMatrix ou une extension du même genre sur ton firefox, tu devrais donc déactiver ces filtre sur ton nom de domaine.


#19

@mib
J’ai le même problème avec google chrome 55.0.2883.87 et sans aucune extension.
Et après mise à jour de chrome vers 66.0.3359.139, j’ai une phrase qui me dit ça : “Les requêtes vers le serveur ont été bloquées par une extension.”. Mais je ne vois vraiment pas ce que ça peut être…
Et toujours le problème avec firefox après avoir désactivé toutes les extensions…


#20

Est-ce que ton serveur n’aurait pas une architecture ARM ?