Integrando Collabora Online con NextCloud

Bueno, en este documento, quería mostrar como integrar Collabora en Nextcloud, ¿alguien no conoce Collabora? ¿Te imaginas tener tu propio Google Docs? o tu Office 365? sería genial, no? Bueno pues Collabora nos permitirá eso mismo pero de forma totalmente gratuita, todo ello basado en LibreOffice. Podremos editar online documentos de ofimática y trabajar de forma colaborativa!

 

collabora00-bujarra

Este documento no sólo conseguiremos eso, si no que integraremos en una máquina con Nextcloud que ya tenemos previamente el entorno. Pudiendo tener nuestra nube privada, almacenando nuestros datos en nuestro propio CPD, ahora podremos permitir que los usuarios trabajen con los documentos de Office de forma online, que los editen desde el propio navegador, y además múltiples usuarios pueden trabajar al mismo tiempo con los mismos documentos!

Al basarse en LibreOffice, que por cierto, conocéis la nueva versión, no? Es impresionante, desde que se separaron de OpenOffice… Bueno, lo dicho, los documentos que podremos editar en linea, tienen entre otros más, los siguientes formatos: documentos de DOC, DOCX, hojas de cálculo tipo ODF, XLS, XLSX, o presentaciones de PPT y PPTX; además de visualizar archivos de Visio, Publisher.

 

collabora000-bujarra

 

Instalación de Collabora,

Nos basaremos en una imagen de Docker que ya hay preparada como contenedor, que podremos directamente correr en nuestro entorno. Este documento será algo diferente, ya que copiaremos del contenedor a la máquina Nextcloud todos los ficheros necesarios para no tener que correr además con Docker.

 

nextcloud-27-bujarra

Primero pues, instalamos Docker mediante:

sudo apt-get update
sudo apt-get install docker.io

 

nextcloud-28-bujarra

Con los siguientes comandos, arrancaremos como servicio Docker, además de descargar e instalar la imagen ‘collabora/code’ del repositorio, la arrancaremos indicando el puerto (9980 x defecto) además de indicar el dominio FQDN del servicio. Y confirmarmos al finalizar si está arrancada (anotamos el identificador del contenedor).

sudo systemctl enable docker
sudo docker pull collabora/code
sudo docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=datos.tundra-it.com' --restart always --cap-add MKNOD collabora/code
sudo docker ps -a

 

nextcloud-29-bujarra

Copiamos los siguientes directorios y ficheros necesarios, posteriormente pararemos en contenedor recién descargado y lo borramos, ya no será necesario más.

sudo docker cp 87ffdce147c8:/opt/collaboraoffice5.1/ /opt/
sudo docker cp 87ffdce147c8:/usr/bin/loolforkit /usr/bin/
sudo docker cp 87ffdce147c8:/usr/bin/loolmap /usr/bin/
sudo docker cp 87ffdce147c8:/usr/bin/loolmount /usr/bin/
sudo docker cp 87ffdce147c8:/usr/bin/looltool /usr/bin/
sudo docker cp 87ffdce147c8:/usr/bin/loolwsd /usr/bin/
sudo docker cp 87ffdce147c8:/usr/bin/loolwsd-systemplate-setup /usr/bin/
sudo docker cp 87ffdce147c8:/etc/loolwsd/ /etc/
sudo docker cp 87ffdce147c8:/usr/share/loolwsd/ /usr/share/
sudo docker cp 87ffdce147c8:/usr/lib/libPocoCrypto.so.45 /usr/lib/
sudo docker cp 87ffdce147c8:/usr/lib/libPocoFoundation.so.45 /usr/lib/
sudo docker cp 87ffdce147c8:/usr/lib/libPocoJSON.so.45 /usr/lib/
sudo docker cp 87ffdce147c8:/usr/lib/libPocoNet.so.45 /usr/lib/
sudo docker cp 87ffdce147c8:/usr/lib/libPocoNetSSL.so.45 /usr/lib/
sudo docker cp 87ffdce147c8:/usr/lib/libPocoUtil.so.45 /usr/lib/
sudo docker cp 87ffdce147c8:/usr/lib/libPocoXML.so.45 /usr/lib/

sudo docker stop 87ffdce147c8
sudo docker rm 87ffdce147c8

 

nextcloud-30-bujarra

A continuación, deberemos instalar un certificado válido en nuestra máquina si no lo tenemos. Lo más cómodo en mi caso, tengo ya el PFX por ahí, así que me lo copio con WinSCP o similar y extraigo el certificado y la clave privada, los ponemos en el directorio correspondiente. Además, deberemos generar un fichero con los certificados de las entidades emisoras intermedias y/o raiz que exportaremos en base64, & pegaremos en contenido de los certificados en este fichero.

openssl pkcs12 -in wildcard.tundra-it.com_2017.pfx -clcerts -nokeys -out wildcard.tundra-it.com_2017.cer
<pre>openssl pkcs12 -in wildcard.tundra-it.com_2017.pfx -nocerts -nodes -out wildcard.tundra-it.com_2017.key
sudo cp wildcard.tundra-it.com_2017.cer /etc/loolwsd/
sudo cp wildcard.tundra-it.com_2017.key /etc/loolwsd/
sudo vim /etc/loolwsd/ca_tundra.cer

nextcloud-31-bujarra

Editamos el fichero de configuración donde indicaremos el FQDN del sitio además del usuario y contraseña del administrador de Nextcloud.

sudo vim /etc/loolwsd/loolwsd.xml
...
 <host desc="Regex pattern of hostname to allow or deny." allow="true">datos.tundra-it.com</host>
...
 <host desc="Hostname to allow" allow="false">datos.tundra-it.com</host>
...
 <username desc="The username of the admin console. Must be set.">ncadmin</username>
 <password desc="The password of the admin console. Must be set.">XXXXXXX</password>
...
 <cert_file_path desc="Path to the cert file" relative="false">/etc/loolwsd/wildcard.tundra-it.com_2017.cer</cert_file_path>
 <key_file_path desc="Path to the key file" relative="false">/etc/loolwsd/wildcard.tundra-it.com_2017.key</key_file_path>
 <ca_file_path desc="Path to the ca file" relative="false">/etc/loolwsd/ca_tundra.cer</ca_file_path>

 

nextcloud-32-bujarra

Editamos también el fichero del sitio seguro de Apache e introducimos las rutas correctas a los certificados:

sudo vim /etc/apache2/sites-available/nextcloud_ssl_domain_self_signed.conf
SSLCertificateFile /etc/loolwsd/wildcard.tundra-it.com_2017.cer
SSLCertificateKeyFile /etc/loolwsd/wildcard.tundra-it.com_2017.key

 

nextcloud-33-bujarra

Bien, ahora es tiempo de instalar la aplicación de Collabora Online Connector, una vez logueados como administrador de Nextcloud, en Apps.

 

nextcloud-34-bujarra

Una vez activado, desde “Administración” > “Additional settings”, podremos la URL correcta en ‘Servidor Collabora Online’ con formato https://fqdn:9980

 

nextcloud-35-bujarra

Bien, creamos el usuario ‘lool’ y realizamos correcciones de permisos, arrancamos la plantilla de sistema y creamos el servicio.

sudo useradd lool
sudo setcap cap_fowner,cap_mknod,cap_sys_chroot=ep /usr/bin/loolforkit
sudo setcap cap_sys_admin=ep /usr/bin/loolmount
sudo mkdir /var/cache/loolwsd/
sudo mkdir /opt/lool/
sudo mkdir /opt/lool/child-roots/
sudo chown lool:lool /var/cache/loolwsd/ -R
sudo chown lool:lool /opt/lool/child-roots/ -R

sudo /usr/bin/loolwsd-systemplate-setup /opt/lool/systemplate /opt/collaboraoffice5.1/

sudo chown lool:lool /opt/lool/systemplate -R

sudo vim /etc/systemd/system/loolwsd.service

 

nextcloud-36-bujarra

Creamos el servicio ‘/etc/systemd/system/loolwsd.service’ con el siguiente contenido:

 [Unit]
 Description=loolwsd as a service

[Service]
 User=lool
 ExecStart=/usr/bin/loolwsd --o:sys_template_path=/opt/lool/systemplate --o:lo_template_path=/opt/collaboraoffice5.1 --o:child_root_path=/opt/lool/child-roots --o:file_server_root_path=/usr/share/loolwsd
 ExecReload=/bin/kill -HUP $MAINPID
 KillMode=process
 Restart=on-failure

[Install]
 WantedBy=multi-user.target

 

nextcloud-37-bujarra

Habilitamos el servicio y reiniciamos todos los servicios para releer las configuraciones, posteriormente con ‘sudo netstat -lnpt’ podremos verificar que tenemos los puertos 443tcp y 9980tcp levantados.

sudo systemctl enable /etc/systemd/system/loolwsd.service
sudo systemctl daemon-reload
sudo systemctl start loolwsd.service
sudo systemctl restart apache2

 

nextcloud-38-bujarra

Modificaremos el ‘/etc/hosts’ agregando nuestro fqdn externo con resolución local.

 

nextcloud-39-bujarra

Por último, no nos olvidaremos de quitar Docker, ya que no será necesario y a parte consumirá recursos 😉

sudo apt-get remove docker.io

 

nextcloud-42b-bujarra

Y nada, ya no queda más que probarlo! Abriremos nuestro Nextcloud y cualquier fichero que tengamos de ofimática podremos ya editarlo y trabajarlo online. Si lo tenemos compartido, además, veremos de forma simultánea qué usuario está modificando qué parte del documento.

 

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!

Últimos Posts de: Héctor Herrero (ver todos)