On discutait récemment du caractère disons, peu attractif, de Collabora Online (aka LibreOffice Online), dû à l’extrême difficulté d’obtenir une démo sans louer un Data Center Google (ce qui lui nuit face à son concurrent Office 365 !).
Alors si tu cherches des tutos, ça oui t’en trouves. MAIS ils se basent tous sur :
et surtout n’expliquent pas ce qui se passe, alors tu te retrouves avec 4 Go de RAM de moins, 42 ports ouverts et 23 démons de plus -en gros hein- et sans la moindre idée de ce qui tourne. Et, si tu suis le seul tuto basique pour « juste les paquets » de l’édition communautaire nommée CODE, tu te retrouves à poil avec rien qui marche.
Heureusement que je suis là.
Sommaire
Par la suite, toutes les commandes seront sur CentOS 7 (x86_64) et en root. Pour la planète.
I. Installer Collabora Online CODE
Collabora Online en fait, c’est deux choses :
- une suite bureautique avec interface Web ;
- un client WOPI, pour récupérer les documents de manière standardisée.
I.a. Installation
Les paquets s’installent par :
$ wget https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7/repodata/repomd.xml.key && rpm --import repomd.xml.key
$ yum-config-manager --add-repo https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-centos7
$ yum -y install loolwsd CODE-brand
L’installeur ne crée pas les paires de clés/certificats nécessaires au HTTPS, alors allons-y :
$ openssl genrsa -out ca.key 2048
$ openssl req -x509 -new -nodes -key ca.key -days 3650 -out ca.crt -subj "/C=FR/ST=IDF/L=Paris/O=Tarnyko/CN=localhost"
$ openssl genrsa -out server.key 2048
$ openssl req -sha256 -new -key server.key -out server.csr -subj "/C=FR/ST=IDF/L=Paris/O=Tarnyko/CN=localhost"
$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650 -out server.crt
$ cp server.key /etc/loolwsd/key.pem
$ cp server.crt /etc/loolwsd/cert.pem
$ cp ca.crt /etc/loolwsd/ca-chain.cert.pem
I.b. Tests
Ne reste plus qu’à lancer et vérifier l’état du truc :
$ systemctl restart loolwsd
$ systemctl status loolwsd
Alors comme ça, on n’a que la moitié de fait, car rien pour accéder aux docs qu’on veut éditer. Mais on peut déjà découvrir les formats supportés, et surtout l’URL de base de l’interface au :
https://localhost:9980/hosting/discovery
On peut même, en utilisant cette URL, essayer d’en crafter une plus complète utilisant la syntaxe WOPI pour fournir un fichier file.doc
et un token d’accès :
Ça ne marche pas car, même si nous avions effectivement un fichier file.doc
sur un serveur web local, CODE s’attend en fait à recevoir un fichier JSON contenant le nom, URL du fichier et plein de métadonnées propres à la norme WOPI.
Tu l’as compris, ownCloud/nextClould/… sont en fait des serveurs WOPI. Dans leur explorateur de fichiers, en faisant clic-droit->« Éditer dans LibreOffice », ils génèrent en fait un tel fichier et le fournissent à CODE via HTTP/REST ou WebSocket.
Heureusement, pas besoin d’installer ces monstres, on va s’entraîner avec plus simple !
II. Installer CS3 WOPI Server
II.a. Le serveur WOPI
Écrit en Python 3, ce serveur WOPI est un genre d’implémentation de référence. Il ne fournit pas d’interface mais a l’avantage de la simplicité, et nous permettra de jouer en ligne de commande :
$ git clone https://github.com/cs3org/wopiserver
$ cd wopiserver
Un CentOS 7 bien à jour fournira Python 3 :
$ yum install python3 python3-pip
Après tu as deux écoles, tu peux :
-
juste utiliser le gestionnaire de paquets PIP hors de vue du système :
$ pip3.6 install -r requirements.txt
installer les paquets (perso, je préfère cette méthode), tous ne sont pas dans EPEL alors j’ai préféré faire une archive avec un script
install.sh -y
a juste un usage de pip à la fin.
II.b. Installation et configuration
Reste à créer la structure de répertoires :
$ mkdir /var/wopi_local_storage && chmod a+rwx /var/wopi_local_storage
$ mkdir /var/log/wopi && chmod a+rwx /var/log/wopi
$ mkdir /etc/wopi && chmod a+rwx /etc/wopi
$ cp wopiserver.conf /etc/wopi/wopiserver.defaults.conf
$ echo 'testsecret' > /etc/wopi/wopisecret
$ echo 'testsecret' > /etc/wopi/iopsecret
Et éditer /etc/wopi/wopiserver.defaults.conf (je mets juste les sections à décommenter/modifier) :
[general]
storagetype = local
port = 8880
codeurl = https://localhost:9980
wopiurl = http://localhost:8880
downloadurl = http://localhost:8880/wopi/cbox/download
[local]
storagehomepath = /var/wopi_local_storage
Quelques explications :
- nos documents seront stockés en local dans /var/wopi_local_storage/ ;
- le serveur WOPI écoute sur HTTP:8880, CODE s’y connectera pour recevoir un descriptif JSON des fichiers ;
- le serveur WOPI fournit aussi une URL de téléchargement direct, renseignée dans le JSON, dont la base sera http://localhost:8880/wopi/cbox/download/.
Copions-y donc un document Waurde 2003 et démarrons le serveur :
$ cp file.doc /var/wopi_local_storage/
$ python3.6 src/wopiserver.py
(si le shell revient à la ligne, y a un souci, voir les logs dans /var/log/wopi/wopiserver.log)
II.c. Tests
Il est temps d’essayer de générer une URL avec l’outil shell :
$ PYTHONPATH=./src python3.6 tools/wopiopen.py -v READ_WRITE /file.doc testtoken
On peut tester la réception du JSON en utilisant la WOPI_URL (caractères spéciaux %3A,%2F remplacés par :,/) et complétée du WOPI_TOKEN (balise b''
retirée) :
et même utiliser la DownloadUrl
(encadrée ci-dessus) pour télécharger le doc en direct :
III. Mise en œuvre
La syntaxe à envoyer à CODE est donc au final :
https://localhost:9980/loleaflet/655a266/loleaflet.html?WOPISrc=$WOPI_URL&access_token=$WOPI_TOKEN
Et voilà !
Aller plus loin
- Journal à l’origine de la dépêche (94 clics)
- Collabora Online (86 clics)
# centos7
Posté par djip007 . Évalué à 3.
QQ éléments qui peuvent intéresser:
pour python3 plus besoin de passer par les EPELs (qui est d'ailleur vieux)
python3-3.6.8-18.el7.x86_64.rpm est dispo sur le depos centos:
Si vous voulez plus ressent une version 3.8 existe dans les SCL: https://www.softwarecollections.org/en/scls/rhscl/rh-python36/
rh-python38-python-3.8.6-1.el7.x86_64.rpm est dispo (le site web n'est pas a jours…)
de mémoire un truc comme ça doit marcher
et puis un env virtuel (comme ca plus besoin de faire le source a chaque fois)
[^] # Re: centos7
Posté par Tarnyko (site web personnel) . Évalué à 3. Dernière modification le 14 mars 2021 à 09:44.
Hello djip007, je vous remercie beaucoup !
Vous avez sans doute deviné que ma machine de démo a été mise en place il y a des plombes (encore heureux qu'elle ait les màj de sécu…). J'ai donc repris mes étapes "Python 3" d'époque avec indolence.
Je proposerais bien qu'on mette à jour la dépêche pour remplacer la partie EPEL par ce :
(pas besoin de 3.8.6), ce qui rapprochera en plus ce tuto de RHEL/CentOS 8 -c'est quasi la seule différence. C'est possible, Ysabeau ?
[^] # Re: centos7
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
Je remplace ça
par quoi ? Uniquement la commande ? Quelque chose du genre :
CentOS 7 ne fournit pas Python 3 de base, pour les installer :
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: centos7
Posté par Tarnyko (site web personnel) . Évalué à 2. Dernière modification le 15 mars 2021 à 10:47.
Tout le bloc que tu cites, par :
Ça devrait le faire. En te remerciant -et en m'excusant de ne pas avoir vu la dépêche de suite :).
[^] # Re: centos7
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 2.
OK, c'est fait. J'ai ajouté le $ devant soit dit en passant.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
# C'est valable pour d'autres distributions ?
Posté par Ysabeau 🧶 (site web personnel, Mastodon) . Évalué à 7.
Forcément, j’ai dû relire ça plus attentivement (et j’ai enfin compris la vanne sur en root pour la planète).
Du coup j’ai pensé concrètement à des gens à qui ça pourrait servir. Est-ce que ces commandes sont valables pour d’autres distributions ? Ou sont-elles spécifiques à CentOS (toutes ou certaines) ?
Une autre question, je ne suis pas bien sûre de comprendre ce qu’est un serveur WOPI par rapport à un serveur Apache, c’est un truc en plus ou un autre truc ou bien ?
Je sais, ce sont des questions basiques (même pas honte).
Merci.
« Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.
[^] # Re: C'est valable pour d'autres distributions ?
Posté par Tarnyko (site web personnel) . Évalué à 4. Dernière modification le 14 mars 2021 à 10:08.
Oui, et d'ailleurs quelqu'un pose ici la question pour Debian. Techniquement ça s'installe aussi sur Debian/Ubuntu/openSUSE -on note un biais "entreprise".
Ce qui est propre à CentOS, c'est toutes les commandes commençant par wget/yum qui sont des installations de paquets ; le reste devrait être universel, quoique… ils utilisent bien systemd sous Debian, hein ? ;-).
Alors un serveur WOPI, c'est effectivement d'abord un serveur Web comme Apache ; mais rien de fou quand un simple python3 -m http.server t'en lance un en local.
Sa spécificité, c'est sa capacité à générer, à partir de la tentative d'accès à une URL de document (mon fameux /Tarnyko/Documents/Waurde/file.doc), une série de réponses protocolaires en JSON/WebSockets qui permettent :
- d'obtenir des infos additionnelles (métadonnées) sur le document ;
- de télécharger le document, l'enregistrer, loguer les actions et le renvoyer au serveur, dans une optique collaborative (pas de verrou exclusif, etc).
Cette norme est supportée par toute la clique des suites online : Collabora Online, Nuxeo Office Online, M$ Office Online…
Tu pourrais recréer un WOPI à partir d'Apache et beaucoup d'huile de coude :-).
# LibreOffice
Posté par dark_moule . Évalué à 2. Dernière modification le 14 mars 2021 à 07:19.
Utiliser la version en ligne est contraignant.
Est-ce qu'il est possible de bénéficier d'une édition collaborative à partir de LibreOffice installé sur l'ordinateur en client lourd ?
Ou lorsque CODE est installé sur le serveur Nextcloud, il faut obligatoirement installer la suite Collabora Office pour en bénéficier ?
[^] # Re: LibreOffice
Posté par Tarnyko (site web personnel) . Évalué à 3. Dernière modification le 14 mars 2021 à 11:02.
En fait ce que tu demandes, c'est d'ajouter le support WOPI à la version "client lourd" de LibreOffice.
Cela vous permettrait de répartir vos documents sur des serveur distants, et d'y accéder en simultané (et bien plus après !).
( Perso, j'ai vraiment eu du mal avec le discours entre LibreOffice/LibreOffice Online/Collabora Online/Collabora Office. Même la FAQ m'a peu aidé. Mais j'ai trouvé cette page :
Donc si les fonctions collab' (WOPI) de CODE proviennent de Collabora Office, qui se trouve être la version "entreprise", ça voudrait bien dire qu'il faut passer par elle… ?
Après techniquement LibreOffice est OSS, CODE est OSS… mais tu devrais t'adresser d'abord à Collabora, ils tentent de vivre de leur bébé :).
[^] # Re: LibreOffice
Posté par dark_moule . Évalué à 2.
Merci pour ces précisions. J'ai également beaucoup de mal à comprendre les différences et les fonctions dont on est en mesure de bénéficier selon les versions. La page que tu cites et que j'avais consulté, censée expliquer les différences ne précise même pas que la version CODE est limité à 10 documents ouverts en simultané. Uniquement que c'est une version non adapté pour les entreprises…
Je voulais me renseigner avant d'appeler Collabora, mais il n'y a pas le choix, au moins pour connaître le prix qui n'est même pas indiqué sur leur site.
[^] # Re: LibreOffice
Posté par Tarnyko (site web personnel) . Évalué à 2.
Tu me l'apprends 😲 !
C'est donc vraiment une "démo" ; il y a sans doute d'autres limites si on pousse plus loin…
Ça paraît le plus sage.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.