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!
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.
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.
Primero pues, instalamos Docker mediante:
[sourcecode]sudo apt-get update
sudo apt-get install docker.io[/sourcecode]
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).
[sourcecode]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[/sourcecode]
Copiamos los siguientes directorios y ficheros necesarios, posteriormente pararemos en contenedor recién descargado y lo borramos, ya no será necesario más.
[sourcecode]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[/sourcecode]
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.
[sourcecode]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[/sourcecode]
Editamos el fichero de configuración donde indicaremos el FQDN del sitio además del usuario y contraseña del administrador de Nextcloud.
[sourcecode]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>[/sourcecode]
Editamos también el fichero del sitio seguro de Apache e introducimos las rutas correctas a los certificados:
[sourcecode]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[/sourcecode]
Bien, ahora es tiempo de instalar la aplicación de Collabora Online Connector, una vez logueados como administrador de Nextcloud, en Apps.
Una vez activado, desde “Administración” > “Additional settings”, podremos la URL correcta en ‘Servidor Collabora Online’ con formato https://fqdn:9980
Bien, creamos el usuario ‘lool’ y realizamos correcciones de permisos, arrancamos la plantilla de sistema y creamos el servicio.
[sourcecode]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[/sourcecode]
Creamos el servicio ‘/etc/systemd/system/loolwsd.service’ con el siguiente contenido:
[sourcecode]
[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
[/sourcecode]
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.
[sourcecode]
sudo systemctl enable /etc/systemd/system/loolwsd.service
sudo systemctl daemon-reload
sudo systemctl start loolwsd.service
sudo systemctl restart apache2[/sourcecode]
Modificaremos el ‘/etc/hosts’ agregando nuestro fqdn externo con resolución local.
Por último, no nos olvidaremos de quitar Docker, ya que no será necesario y a parte consumirá recursos 😉
[sourcecode]sudo apt-get remove docker.io[/sourcecode]
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.