Re-instalación del servidor Collabora para el Nextcloud

Hola en esta entrada dejaré registrado como he instalado el servidor de collabora online community edition (CODE).

Redirección HAproxy

Como ya tenía configurado el HAproxy, he podido usar una IP interna en vez de una pública. Lo que implica que el acceso pasa por dos proxy, uno en el servidor madre (HAproxy) y uno en el VPS para dirigir el tráfico al puerto 9980, que es el que escucha el servicio de collabora (nginx).

En el proxy HAproxy tan sólo he redirigido los tráfico por los puertos 80 y 443 del dominio office.anartist.org a la IP interna con los mismos puertos. Además, he definido un puerto específico para acceder via SSH en el proxy que luego redirige al 22 en la IP interna.

Actualización e instalación de paquetes

Una vez dentro del VPS, he actualizado repositorios, he añadido los respositorios de collabora e instalado lo necesario, basándome en la guia de su web

sudo apt update && sudo apt upgrade

#Import the signing key
cd /usr/share/keyrings
sudo wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg

#Add CODE package repositories
Types: deb
URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-ubuntu2204
Suites: ./
Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg

#Install packages
sudo apt update && sudo apt install coolwsd code-brand collaboraoffice*

Instalación de certificados SSL

Luego he instalado el certificado con Let’s Encrypt:

sudo apt install nginx python3-certbot-nginx
sudo certbot --nginx

Al intentar usar los certificados en la localizaci’on de let’s ecncrypt me da error de permisos, porque el usuario coolwsd, que es quién ejecuta el servicio, tiene permisos.

Para solventar ese problema, he copiado y cambiado el propietario de los ficheros de certificado necesarios, pero no es la solución óptima porque al actualizarse deberá repetirse la operación. Tengo que cambiar eso en un futuro creando un symlink y definiendo bien los permisos.

sudo cp /etc/letsencrypt/live/office.anartist.org/fullchain.pem /etc/coolwsd/
sudo cp /etc/letsencrypt/live/office.anartist.org/privkey.pem /etc/coolwsd/
sudo cp /etc/letsencrypt/live/office.anartist.org/chain.pem /etc/coolwsd/

sudo chown cool:cool /etc/coolwsd/privkey.pem
sudo chown cool:cool /etc/coolwsd/chain.pem
sudo chown cool:cool /etc/coolwsd/fullchain.pem

Como el destino ya es la ubicación que contempla coolwsd por defecto, no he tenido que tocar la configuración.

Proxy Nginx y levantamiento de servicios

Finalmente, he definido el fichero /etc/nginx/sites-available/office.anartist.org de configuración nginx a partir del propuesto en la documentación:

server {
 listen [::]:443 ssl ipv6only=on; # managed by Certbot
 listen       443 ssl;
 server_name  office.anartist.org;

 ssl_certificate /etc/letsencrypt/live/office.anartist.org/fullchain.pem; # managed by Certbot
 ssl_certificate_key /etc/letsencrypt/live/office.anartist.org/privkey.pem; # managed by Certbot
 include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

 # static files
 location ^~ /browser {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # WOPI discovery URL
 location ^~ /hosting/discovery {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # Capabilities
 location ^~ /hosting/capabilities {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }


 # main websocket
 location ~ ^/cool/(.*)/ws$ {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
   proxy_set_header Host $http_host;
   proxy_read_timeout 36000s;
 }

 # download, presentation and image upload
 location ~ ^/(c|l)ool {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Host $http_host;
 }

 # Admin Console websocket

 location ^~ /cool/adminws {
   proxy_pass https://127.0.0.1:9980;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
   proxy_set_header Host $http_host;
   proxy_read_timeout 36000s;
 }
}

Activamos la configuración de nginx y después levantamos los servicios nginx y coolwsd:

sudo ln -s /etc/nginx/sites-available/office.anartist.org /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default

sudo systemctl restart nginx.service
sudo systemctl restart coolwsd.service

Y con esto ya está el servicio funcional y se conecta bien des de el cloud.

1 me gusta

Gracias Marcel!

1 me gusta