Docker Collabora en Nextcloud: Ubuntu 22.04

Es posible que no desees implementar Collabora Online desde la propia app que tiene disponible Nextcloud y por cualquier motivo prefieras hacerlo como antes, mediante un docker en el propio servidor donde tienes alojado Nextcloud.

Una de las ventajas de esta configuración es tener la última versión disponible.

Lo primero que vamos a realizar es la instalación de docker en el propio servidor, para ello primeramente actualizamos los repositorios e instalamos los prerequisitos.

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common

Añadimos la clave GPG para añadir el repositorio de docker, así como el repositorio

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Volvemos a actualizar la lista de paquetes e instalamos la versión Community Edition de Docker

sudo apt update
sudo apt install docker-ce

Comprobamos su estado con

sudo systemctl status docker

En caso de que nos indique que su estado es activo vamos a descargar la imagen docker de collabora a nuestro sistema

docker pull collabora/code

Iniciaremos la imagen con el siguiente comando.
Ten en cuenta sustituir cloud.nextcloud.com por el dominio donde tengas tu instancia de Nextcloud:

docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.nextcloud\\.com' -e 'dictionaries=de en es ..' --restart always --cap-add MKNOD collabora/code

A partir de este momento ya tenemos Collabora funcionando en un contenedor docker, sin embargo aún nos faltan unos pasos para que tu instancia de Nextcloud pueda conectarse a ella.

A partir de aquí es necesario que hayas configurado un subdominio nuevo para Collabora del tipo oficina.dominio.com

Vamos a crear un reverse proxy para nuestro subdominio

Para ello es posible que tengamos que habilitar los módulos necesarios en Apache

a2enmod proxy
a2enmod proxy_wstunnel
a2enmod proxy_http
a2enmod ssl

Una vez hecho esto vamos a crear un nuevo fichero de configuración en /etc/apache2/sites-available

nano oficina.conf

y lo rellenamos con el siguiente código

<VirtualHost *:80>
ServerName oficina.dominio.com
Redirect permanent / https://oficina.dominio.com/
</VirtualHost>

Activalo con

a2ensite oficina.conf

y si usamos certbot en nuestro sistema vamos a desplegar los certificados de nuestro nuevo sitio con

certbot --apache

Seleccionamos nuestro subdominio y esperamos a que automáticamente se desplieguen los certificados.

Una vez finalizado se nos habrá creado en /etc/apache2/sites-available un fichero denominado oficina-le-ssl.conf. Vamos a editarlo.

nano oficina-le-ssl.conf

y añadimos de forma que nos quede de la siguiente forma

<VirtualHost *:443>
ServerName oficina.subdominio.com

SSLEngine on
SSLCertificateFile /path al certificado
SSLCertificateKeyFile /path a la clave privada
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
SSLHonorCipherOrder on

# Encoded slashes need to be allowed
AllowEncodedSlashes NoDecode

SSLProxyEngine On
SSLProxyVerify None
SSLProxyCheckPeerCN Off
SSLProxyCheckPeerName Off

ProxyPreserveHost On

# static html, js, images, etc. served from coolwsd
# browser is the client part of LibreOffice Online
ProxyPass           /browser https://127.0.0.1:9980/browser retry=0
ProxyPassReverse    /browser https://127.0.0.1:9980/browser

# WOPI discovery URL
ProxyPass           /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse    /hosting/discovery https://127.0.0.1:9980/hosting/discovery

# Main websocket
ProxyPassMatch "/cool/(.*)/ws$" wss://127.0.0.1:9980/cool/$1/ws nocanon

# Admin Console websocket
ProxyPass   /cool/adminws wss://127.0.0.1:9980/cool/adminws

# Download as, Fullscreen presentation and Image upload operations
ProxyPass           /cool https://127.0.0.1:9980/cool
ProxyPassReverse    /cool https://127.0.0.1:9980/cool

# Endpoint with information about availability of various features
ProxyPass           /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse    /hosting/capabilities https://127.0.0.1:9980/hosting/capabilities
</VirtualHost>

Hecho esto reiniciamos el servidor Apache

systemctl restart apache2

En nuestra instancia de Nextcloud nos dirijimos a Configuración del Servidor / Office

Seleccionamos que usaremos nuestro propio servidor e indicamos en el campo de texto denominado URL (y puerto) del servidor de Collabora Online la dirección de nuestro Collabora, la cual si has seguido este ejemplo es https://oficina.dominio.com

¡¡Ya tenemos integrado Collabora Online en nuestra instancia de NextCloud!!

Actualizaciones

Para actualizar la versión de Collabora Online simplemente tendremos que actualizar la imagen del docker, así como parar y borrar el docker activo. Para ello:

docker pull collabora/code
docker ps
docker stop CONTAINER_ID
docker rm CONTAINER_ID

e iniciar de nuevo con

docker run -t -d -p 127.0.0.1:9980:9980 -e 'domain=cloud\\.nextcloud\\.com' -e 'dictionaries=de en es ..' --restart always --cap-add MKNOD collabora/code

Nota informativa: La información contenida en esta entrada, así como el código incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en la presente entrada.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.