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.