## Notre version d'OnlyOffice - Depuis mars 2022 : Nous utilisons le container Docker buildé par Liiibre/IndieHoster (en verison 6.4.2.6) - Jusqu'en mars 2022 : Nous utilisons actuellement [une version de OnlyOffice buildé par nos soins](https://framagit.org/CloudGirofle/lecloudgirofle-oo-build-tools/-/tree/lecloudgirofle) (actuellement en version 6.0.0.0), - Avant 2021 : Nous utilisons l'[app Yunohost](https://github.com/YunoHost-Apps/onlyoffice_ynh) depuis mai 2020 environ. ## Commandes utiles - List active containers: `docker ps` - Stop active container: `docker stop ` _Lancement au démarrage_ : quand on lance le docker en `--restart=always` celui-ci sera redémarré lors du redémarrage du démon docker/de la machine, il n'est pas nécessaire de faire des manips en plus pour les relancer au démarrage. _Commande de lancement_ - Pour OO 7.2 : ``` sudo docker run -d -p 127.0.0.1:8098:80 --restart=always \ -v /app/onlyoffice/7.2.2/DocumentServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/7.2.2/DocumentServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/7.2.2/DocumentServer/lib:/var/lib/onlyoffice \ -v /app/onlyoffice/7.2.2/DocumentServer/db:/var/lib/postgresql \ -e JWT_ENABLED=false \ --dns 80.67.169.12 --dns 89.234.141.66 --dns 1.1.1.1 \ --name onlyoffice-girofle-v7.2.2 cloudgirofle/onlyoffice:7.2.2.56 ``` _Remarques sur la commande de lancement_ : - \*_/!\*_ Ne pas lancer plusieurs containers avec les mêmes points de montage des volumes, sinon les contenus risquent d'être écrasés à chaque écriture ; - On a besoin de spécifier le DNS racine (`--dns`) car celui par défaut a un souci de propagation pour l'un des utilisateurs (voir plus bas pour plus d'infos) - Le port 8098 et le port déclaré dans la config nginx pour qu'il serve de reverse-proxy ## OnlyOffice et Nextcloud Voilà ce qu'il se passe quand on édite un doc avec NC sur mutu et OO sur chif : * l'user demande à mutu le loader OO (le connecteur NC-OO) * l'user va récupérer le reste de l'éditeur JS sur chif.fr * chif va charger le document à éditer vers mutu * l'édition est faite en local chez l'user, les modifications sont poussées sur chif.fr périodiquement ou à la fin de l'édition, la synchro chif -> mutu est forcée et le .docx est renvoyé vers NC. ### (In)Compatibilité | Nextcloud | OnlyOffice | OnlyOffice | OnlyOffice | |-----------|------------|------------|------------| | | `6.0.0.0` | `6.4.2.6` | `7.2.2.56` | | `20.0.7.1` | {+OUI+} | | | | `20.0.14.2` | {+OUI+} | {+OUI+} | | | `21.0.3.1` | {+OUI+} | | | | `21.0.9.0` | NON\* | {+OUI+} | | | `22.2.5.1` | NON | {+OUI+} | | | `23.0.2.1` | NON | {+OUI+} | | | `25.0.2` | | {+OUI+} | {+OUI+} | \*fonctionne lorsque que le plugin OnlyOffice est en version 7.1.2, ne fonctionne pas avec le plugin in 7.3.2 ## Mutualisation du serveur OnlyOffice Afin de pouvoir accéder au serveur onlyoffice depuis d'autres serveurs des copains, il faut ajouter la ligne suivante dans le fichier `/etc/nginx/conf.d/chif.fr.d/onlyoffice.conf`: ``` add_header Content-Security-Policy "frame-ancestors chif.fr utopia.chif.fr chif.demainenmain.fr utopia.woringer.fr cloud.coquelicoop.fr nuage.resiliencealimentaire.org"; ``` **Attention, cette ligne n'est pas préservée lors de la mise à jour de l'app via Yunohost.** Si cette ligne est manquante, il ne sera plus possible d'accéder au serveur Onlyoffice depuis d'autres serveurs. ![image](uploads/97577aa9b9131fec11e0c479ae0c9151/image.png) ## Suivi des statistiques de connexion à OnlyOffice La page suivante (par défaut dans OnlyOffice), donne accès à des [statistiques et historiques du nombre de connexions](https://chif.fr/onlyoffice/info/). C'est une page publique. ## Docker Image Build Nous créons notre propre image Docker, basée sur [celle de IndieHosters](https://lab.libreho.st/libre.sh/docker/onlyoffice). Pour cela, nous avons créé [un repo gitlab](https://framagit.org/CloudGirofle/docker/onlyoffice-girofle/-/tree/main/). Il vous faut donc cloner ce repo en local (sur votre machine perso), et se placer sur la branche `main`. Une fois vos modifications apportées, vous pouvez lancer la commande de build : `docker build -t "cloudgirofle/onlyoffice:x.x.x.x" .` Exemple: `docker build -t "cloudgirofle/onlyoffice:6.4.2.6" .` Nous taggons nos images en utilisant la version de Onlyoffice (6.4.2.6 dans cet exemple). Une fois le build fini (\~2min), vous pouvez pousser l'image sur [Docker-Hub](https://hub.docker.com/orgs/cloudgirofle) : `docker push cloudgirofle/onlyoffice:x.x.x.x` Exemple: `docker push cloudgirofle/onlyoffice:6.4.2.6` Cette étape peut prendre un certain temps si vous êtes sur une connexion ADSL. ## Update Docker Container Pour utiliser la dernière version de votre image Docker (buildé et publiée dans l'étape précédente), vous devez d'abord récupérer l'image (à lancer depuis la machine sur laquelle tourne Onlyoffice) : `sudo docker pull cloudgirofle/onlyoffice:x.x.x.x` Exemple: `sudo docker pull cloudgirofle/onlyoffice:6.4.2.6` Vous devez ensuite stopper le conteneur existant : `sudo docker ps` pour identifier la liste des conteneurs en cours `sudo docker stop onlyoffice-girofle-vx.x.x` pour stopper le conteneur onlyoffice `sudo docker rm onlyoffice-girofle-vx.x.x` pour supprimer le conteneur onlyoffice Pour finir, vous devez créer et lancer le nouveau conteneur : ``` sudo docker run -d -p 8098:80 --restart=always \ -v /app/onlyoffice/7.2.2/DocumentServer/logs:/var/log/onlyoffice \ -v /app/onlyoffice/7.2.2/DocumentServer/data:/var/www/onlyoffice/Data \ -v /app/onlyoffice/7.2.2/DocumentServer/lib:/var/lib/onlyoffice \ -v /app/onlyoffice/7.2.2/DocumentServer/db:/var/lib/postgresql \ -e JWT_ENABLED=false \ --dns 80.67.169.12 --dns 89.234.141.66 --dns 1.1.1.1 \ --name onlyoffice-girofle-v7.2.2 cloudgirofle/onlyoffice:7.2.2.56 ``` * `-d` pour lancer le conteneur en mode "détaché" * `--restart=always` pour que le conteneur démarre tout seul au démarrage de la machine Attention : les dossiers utilisés (via les paramètres `-v`) ne doivent pas être utilisés par un autre conteneur ou il risque d'y avoir des conflits ! ## DNS Petit bonus de la fin, changement des DNS. On pourrait le faire via un Dockerfile mais pour l'instant c'est fait dans la config Docker par défaut. Dans `/etc/default/docker` nous avons donc: `DOCKER_OPTS="--dns 80.67.169.12 --dns 89.234.141.66 --dns 1.1.1.1"` Le premier serveur est celui de [FDN](https://www.fdn.fr/actions/dns/). Le deuxième serveur est celui de [ARN](https://www.arn-fai.net/recursif). Le dernier est un [fallback](https://1.1.1.1/fr-FR/dns/). ``` ## Bugs qu'on a rencontrés - Sur chif.fr "Host violates rules" ([solution](https://github.com/nextcloud/integration_moodle/issues/24)) - "Error while downloading the document file to be converted." En ouvrant un document OnlyOffice. Cela est généralement dû au fait que la machine (ou le conteneur) qui héberge OO n'arrive pas à joindre le serveur qui héberge l'instance Nextcloud. - Page Info : Nous avons besoin de la page [https:///info](https:/info) afin de récupérer le nombre d'utilisateurices pour les stats de momo.girofle.cloud. Par défault cette route n'est pas accessible. Il faut donc modifier le fichier `/etc/nginx/includes/ds-docservice.conf` du Docker afin de permettre à momo d'accèder à cette page. La section à modifier: ``` location \~\* ^(/\[\\d\]+.\[\\d\]+.\[\\d\]+\[.|-\]\[\\d\]+)?/(info|internal)(/.\*)$ { allow 127.0.0.1; allow 5.196.67.140; # momo.girofle.cloud allow 2001:41d0:a:ff8c::1; # momo.girofle.cloud deny all; proxy_pass [http://docservice/$2$3](http://docservice/%242%243); } ``` Ref: https://powerfolder.atlassian.net/wiki/spaces/PF/pages/301726/ONLYOFFICE+Setup+Guide **Il faut redémarrer le Docker, et pas seulement `reload nginx` (sinon nginx est dans un état chelou).** ### Editeur est mis à jour ![image](uploads/bce1ca82f79ba41f408b9dd460135f4f/image.png) Solution: c'est un problème de cache du navigateur, il suffit de recharger la page en écrasant le cache (ctrl+Maj+f5 sur Firefox). # Troubleshoot ### Conversion error Keo: J'ai eu cette erreur lors que j'ai essayé de changer de serveur OO via l'admin Nextcloud, et de passer un serveur avec une version majeure antérieure. L'erreur est partie lors que j'ai sélectionné un autre serveur de la même version que celle initiale. ``` Erreur durant la tentative de connexion (Une erreur s'est produite dans le service de document: Conversion error) (version 6.4.2.6) ```