Collabora Online es un paquete de oficina en línea de código abierto desarrollado por Collabora Productivity, una división de Collabora. Está basada en el núcleo de LibreOffice, y permite la edición colaborativa de documentos de texto, hojas de cálculo y presentaciones.
Observaciones:
Asumo que se dispone de una instancia de nextcloud corriendo y actualizada basada en este tutorial.
El docker está solo disponible para x86-64, así que no hay nada de amor para ARM64 :-(.
Procedimiento para desplegar Collabora Online sobre Docker:
El primer paso es actualizar la biblioteca de software disponible y descargar docker y docker-compose.
sudo apt update && sudo apt install docker.io docker-compose -y
Asumo que tenes instaladas las utilidades básicas para linux que documenté acá (voy actualizando este post en el tiempo).
A continuación iniciamos el servicio de docker y configuramos para que inicie el mismo con el sistema.
sudo systemctl daemon-reload sudo systemctl enable docker.service sudo systemctl start docker.service sudo systemctl status docker.service
Ahora creo un directorio /opt/docker/collabora, donde copio el docker-compose.yaml que generé.
sudo mkdir -p /opt/docker/collabora cd /opt/docker/collabora sudo wget https://raw.githubusercontent.com/fsismo/docker-compose/main/collabora/docker-compose.yml
Hay que adecuar el archivo yaml para que el mismo refleje la configuración de nuestro entorno (en rojo usuario y contraseña, en verde la url de nuestro servidor nextcloud).
version: '3.7' services: collabora: image: collabora/code:6.4.6.7 container_name: collabora ports: - 9980:9980/tcp environment: - domain=nextcloud.sismonda.com.ar - username=admin - password=S3cr3t0 - dictionaries=es_AR es_ES en_GB en_US - TZ=America/Argentina/Buenos_Aires restart: unless-stopped
Para iniciar el servicio tenemos que ejecutar:
cd /opt/docker/collabora sudo docker-compose up -d
Podemos ingresar a una url para verificar que el docker inicio correctamente accediendo a la url (va a dar un error de certificado porque es un autogenerado):
https://10.0.0.11:9980/loleaflet/dist/admin/admin.html
El usuario y contraseña que solicita es el definido en el docker-compose.yml (en rojo).
Bajamos el docker en forma previa a configurarlo como servicio.
cd /opt/docker/collabora sudo docker-compose down
Ahora vamos proceder a configurar el docker para que inicie en forma automática cuando prendemos el equipo. Esto lo hacemos creando el archivo /etc/systemd/system/docker-collabora.service
sudo vi /etc/systemd/system/docker-collabora.service
Con el contenido:
[Unit] Description=Docker Collabora Online Requires=docker.service After=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/opt/docker/collabora/ ExecStart=/usr/bin/docker-compose up -d ExecStop=/usr/bin/docker-compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target
Le damos permisos de ejecución:
sudo chmod 640 /etc/systemd/system/docker-collabora.service
Como punto final vamos a recargar la configuración de systemd para que incorpore el archivo, configurar el servicio para que se inicie con el sistema.
sudo systemctl daemon-reload
sudo systemctl enable docker-collabora.service
Ahora podemos iniciar o parar este set de dockers ejecutando los comando:
sudo systemctl start docker-collabora.service sudo systemctl stop docker-collabora.service
Configuración de apache.
Ahora tenemos que configurar el apache donde funciona nuestro servidor de nextcloud para redireccione las peticiones de collabora al puerto donde se ejecuta collabora.
Tenemos que hacer es habilitar los siguientes módulos de proxy de apache.
sudo a2enmod proxy sudo a2enmod proxy_wstunnel sudo a2enmod proxy_http sudo systemctl restart apache2
Y creamos el archivo de configuración. En mi caso voy a configurar el dominio collabora.sismonda.com.ar
sudo vi /etc/apache2/sites-available/collabora.sismonda.com.ar.conf
<VirtualHost *:80>
ServerName collabora.sismonda.com.ar
ServerAdmin webmaster@sismonda.com.ar
DocumentRoot /var/www/servers/collabora.sismonda.com.ar/htdocs
# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode
# Container uses a unique non-signed certificate
SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off
# keep the host
ProxyPreserveHost On
# static html, js, images, etc. served from loolwsd
# loleaflet is the client part of Collabora Online
ProxyPass /loleaflet https://10.0.0.11:9980/loleaflet retry=0
ProxyPassReverse /loleaflet https://10.0.0.11:9980/loleaflet
# WOPI discovery URL
ProxyPass /hosting/discovery https://10.0.0.11:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery https://10.0.0.11:9980/hosting/discovery
# Capabilities
ProxyPass /hosting/capabilities https://10.0.0.11:9980/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities https://10.0.0.11:9980/hosting/capabilities
# Main websocket
ProxyPassMatch "/lool/(.*)/ws$" wss://10.0.0.11:9980/lool/$1/ws nocanon
# Admin Console websocket
ProxyPass /lool/adminws wss://10.0.0.11:9980/lool/adminws
# Download as, Fullscreen presentation and Image upload operations
ProxyPass /lool https://10.0.0.11:9980/lool
ProxyPassReverse /lool https://10.0.0.11:9980/lool
</VirtualHost>
Los valores en negrita y rojo son los propios de mi configuración.
El equipo donde ejecuto docker no es el mismo que el que tiene el servidor web (si esta todo en la misma caja podemos usar la ip 127.0.0.1), sino ajustar a la ip del equipo donde se ejecutar el docker de collabora.
El domino cada uno usa el suyo, asumo que si llegaste acá eso lo sabés.
Faltando ya poco para ponerlo en marcha, vamos a habilitar el sitio, y recargar la configuración del apache.
sudo a2ensite collabora.sismonda.com.ar.conf sudo systemctl reload apache2.service
Para dejar las cosas prolijas ejecutamos el procedimiento de cerbot para obtener los certificados ssl firmados en apache.
Configuración de Nexcloud para intergralo con Collabora Online
Por último nos falta configurar nuestro servidor cloud para integrarlo con el docker que pusimos en marcha.
Debemos ingresar a nextcloud con un usuario administrador. Sobre el ícono que se encuentra en la parte superior a la derecha hacer click y desplegar el menú.
Sobre el menú hacer click en Apps.
Una vez dentro del gestor de aplicaciones hacer click en «Office and Text».
Buscar la opción Collabora Online y realizar click sobre Download and Enable.
Esto va a demandar un par de segundos. Solo nos falta ahora configurar el módulo para terminar la integración.
Volvemos a hacer click sobre el ícono que se encuentra en la parte superior a la derecha, desplegar el menú y realizamos click en «Settings».
Dentro del bloque de administración buscamos la entrada «Collabora Online Developement …).
Ahí accedemos a la pantalla de configuración del módulo, donde elegí la opción «Use your own server» (Usar un servidor propio) y le cargue la url donde escucha el servicio.
Si todo va bien vemos un check verde con la leyenda «Collabora Online Server is reachable».
Felicitaciones!!! Ya tenes tu servidor Nextcloud con el editor Online Collabora.