Tabla de Contenidos
Generalidades
Para este escenario se considera que se tiene dos servidores distintos, uno para Nextcloud y otro con Collabora, con estas direcciones IPv4:
- IP Nextcloud: 192.168.0.126
- IP Collabora CODE: 192.168.0.125
La instalación de Collabora CODE será con las siguientes versiones de software:
- SO: Debian 10 Buster AMD64
- Collabora CODE AMD64
- loolwsd 6.4.3-3
- code-brand 6.4-11
- collaboraoffice6.4 6.4.10.19-19
- Nginx: 1.14.2
- IP: Dirección IPv4 de la Raspberry 192.168.0.125
- DOMINIO: collaboran.floresvillatoro.com
Además se considera que:
- Collabora CODE recibira conexiones en el puerto local 9980 (:::9980) sin certificado
- Nginx será nuestro servidor proxy que publicara collabora en el puerto 443 con certificado
NOTA: Para generar certificados con el certbot es necesario tener una IPv4 y Dominio Público asociado al servidor. En esta guia aunque se hace alución al dominio publico, se presenta una IPv4 privada 192.168.0.126 por cuestiones de seguridad. Por lo tanto si tiene IPv4 y dominio público utilice el cerbot, sino utilice certificados snakeoil, certificados auto firmados o no utilice certificados (no recomendado para producción).
Collabora 6.4
Instalación de Paquetes
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0C54D189F4BA284D sudo echo 'deb https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-debian10 ./' >> /etc/apt/sources.list apt update apt upgrade apt install loolwsd code-brand apt install certbot nginx-full
Configuración de Certificados
Para generar un certificado para nuestro dominio publico collaboran.floresvillatoro.com , debemos asegurarnos que tenemos una IP publica y que tenemos abierto los puertos 80 y 443.
Luego hacemos la solicitud para generar nuestro certificado con:
certbot -d collaboran.floresvillatoro.com
Y contestamos las siguientes preguntas:
1: Spin up a temporary webserver (standalone)
- Select the appropriate number [1-2] then [enter] : 1
- Enter email address (used for urgent renewal and securi70.119.215.239ty notices): su.correo.electronico EN gmail PUNTO com
- (A)gree/(C)ancel: A
- (Y)es/(N)o: N
Luego verificamos que los certificados estan en: /etc/letsencrypt/live/collaboran.floresvillatoro.com/
ls -lh /etc/letsencrypt/live/collaboran.floresvillatoro.com/
Ahi debe de mostrar cuatro archivos .pem que vamos a utilizar en la configuración del servidr web.
Configuración Nginx
Configuramos los VirtualHosts :
cd /etc/nginx/ ls -lh --color sites-available/ ls -lh --color sites-enabled/
Agregamos la configuración que esta mas abajo y deben de cambiar el dominio collaboran.floresvillatoro.com por el que esten configurando. Además, deben prestarle atención a las siguientes lineas:
- ssl_certificate : Que define el certificado del nuestro sitio con su certificado cadena.
- ssl_certificate_key: Define la llave privada de nuestro certificado.
- proxy_pass http://localhost:9980;: Define a donde envía las solicitudes que recibe; aca las envia a donde esta escuchando Collabora en el puerto 9980 sin certificado de seguridad (http y no https)
nano sites-available/collaboran.floresvillatoro.com.conf
server { listen 443 ssl; server_name collaboran.floresvillatoro.com; client_max_body_size 16G; ssl_certificate /etc/letsencrypt/live/collaboran.floresvillatoro.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/collaboran.floresvillatoro.com/privkey.pem; # static files location ^~ /loleaflet { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # WOPI discovery URL location ^~ /hosting/discovery { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # Capabilities location ^~ /hosting/capabilities { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # main websocket location ~ ^/lool/(.*)/ws$ { proxy_pass http://localhost: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 ~ ^/lool { proxy_pass http://localhost:9980; proxy_set_header Host $http_host; } # Admin Console websocket location ^~ /lool/adminws { proxy_pass http://localhost:9980; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header Host $http_host; proxy_read_timeout 36000s; } }
Activamos nuestro sitio con:
cd /etc/nginx/ ln -s /etc/nginx/sites-available/collaboran.floresvillatoro.com.conf sites-enabled/
Ahora borramos la configuración por defecto de nginx con:
rm sites-enabled/default
Reiniciamos el nginx y verificamos su estado con:
systemctl restart nginx systemctl status nginx
Si hay algun error, es de ver los logs en /var/log/syslog
Configuración de Collabora CODE
Modificamos el archivo /etc/loolwsd/loolwsd.xml (nano /etc/loolwsd/loolwsd.xml) modificando las siguientes lineas:
. . . <host desc="Regex pattern of hostname to allow or deny." allow="true">192\.168\.0\.126</host> . . . <ssl desc="SSL settings"> <enable type="bool" desc="Controls whether SSL encryption between browser and loolwsd is enabled (do not disable for production deployment). If default is false, must first be compiled with SSL support to enable." default="true">false</enable> <termination desc="Connection via proxy where loolwsd acts as working via https, but actually uses http." type="bool" default="true">true</termination> . . . <host desc="Regex pattern of hostname to allow or deny." allow="true">192\.168\.0\.126</host> . . . <ssl desc="SSL settings"> <as_scheme type="bool" default="true" desc="When set we exclusively use the WOPI URI's scheme to enable SSL for storage">false</as_scheme> . . . <username desc="The username of the admin console. Ignored if PAM is enabled.">pepe</username> <password desc="The password of the admin console. Deprecated on most platforms. Instead, use PAM or loolconfig to set up a secure password.">lepuf</password> . . .
Agregando la IP del servidor de Nextcloud (192.168.0.126) para que pueda usar el servidor de collabora
Reiniciamos Collabora con:
systemctl restart loolwsd
Interfáz de administración de Collabora CODE: https://collaboran.floresvillatoro.com/loleaflet/dist/admin/admin.html
Collabora 23
Instalación de Paquetes
cd /usr/share/keyrings sudo wget https://collaboraoffice.com/downloads/gpg/collaboraonline-release-keyring.gpg cat << EOF > /etc/apt/sources.list.d/collaboraonline.sources Types: deb URIs: https://www.collaboraoffice.com/repos/CollaboraOnline/CODE-deb Suites: ./ Signed-By: /usr/share/keyrings/collaboraonline-release-keyring.gpg EOF apt update apt upgrade apt install coolwsd code-brand apt install certbot nginx-full python3-certbot-nginx
Configuración de Certificados
Para generar un certificado para nuestro dominio publico collaboran.floresvillatoro.com , debemos asegurarnos que tenemos una IP publica y que tenemos abierto los puertos 80 y 443.
Luego hacemos la solicitud para generar nuestro certificado con:
certbot --nginx -d collaboran.floresvillatoro.com
Y contestamos las siguientes que hace el cerbot
Luego verificamos que los certificados estan en: /etc/letsencrypt/live/collaboran.floresvillatoro.com/
ls -lh /etc/letsencrypt/live/collaboran.floresvillatoro.com/
Ahi debe de mostrar cuatro archivos .pem que vamos a utilizar en la configuración del servidr web.
Configuración Nginx
Configuramos los VirtualHosts :
cd /etc/nginx/ ls -lh --color sites-available/ ls -lh --color sites-enabled/
Agregamos la configuración que esta mas abajo y deben de cambiar el dominio collaboran.floresvillatoro.com por el que esten configurando. Además, deben prestarle atención a las siguientes lineas:
- ssl_certificate : Que define el certificado del nuestro sitio con su certificado cadena.
- ssl_certificate_key: Define la llave privada de nuestro certificado.
- proxy_pass http://localhost:9980;: Define a donde envía las solicitudes que recibe; aca las envia a donde esta escuchando Collabora en el puerto 9980 sin certificado de seguridad (http y no https)
nano sites-available/collaboran.floresvillatoro.com.conf
server { listen 443 ssl; server_name collaboran.floresvillatoro.com; client_max_body_size 16G; ssl_certificate /etc/letsencrypt/live/collaboran.floresvillatoro.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/collaboran.floresvillatoro.com/privkey.pem; # static files location ^~ /browser { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $http_host; } # WOPI discovery URL location ^~ /hosting/discovery { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $http_host; } # Capabilities location ^~ /hosting/capabilities { proxy_pass http://127.0.0.1:9980; proxy_set_header Host $http_host; } # main websocket location ~ ^/cool/(.*)/ws$ { proxy_pass http://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 http://127.0.0.1:9980; proxy_set_header Host $http_host; } # Admin Console websocket location ^~ /cool/adminws { proxy_pass http://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 nuestro sitio con:
cd /etc/nginx/ ln -s /etc/nginx/sites-available/collaboran.floresvillatoro.com.conf sites-enabled/
Ahora borramos la configuración por defecto de nginx con:
rm sites-enabled/default
Reiniciamos el nginx y verificamos su estado con:
systemctl restart nginx systemctl status nginx
Si hay algún error, es de ver los logs en /var/log/syslog
Configuración de Collabora CODE
Modificamos el archivo /etc/coolwsd/coolwsd.xml (nano /etc/coolwsd/coolwsd.xml) modificando las siguientes lineas:
. . <proto type="string" default="all" desc="Protocol to use IPv4, IPv6 or all for both">IPv4</proto> <listen type="string" default="any" desc="Listen address that coolwsd binds to. Can be 'any' or 'loopback'.">loopback</listen> . . <host desc="Regex pattern of hostname to allow or deny." allow="true">192\.168\.0\.126</host> . . . <ssl desc="SSL settings"> <enable type="bool" desc="Controls whether SSL encryption between browser and loolwsd is enabled (do not disable for production deployment). If default is false, must first be compiled with SSL support to enable." default="true">false</enable> <termination desc="Connection via proxy where loolwsd acts as working via https, but actually uses http." type="bool" default="true">true</termination> . . . <mode type="string" desc="Controls the user interface style. The 'default' means: Take the value from ui_defaults, or decide for one of compact or tabbed (default|compact|tabbed)" default="default">tabbed</mode> . . <alias_groups desc="default mode is 'first' it allows only the first host when groups are not defined. set mode to 'groups' and define group to allow multiple host and its aliases" mode="groups"> . . . <group> <host desc="Regex pattern of hostname to allow or deny." allow="true">192\.168\.0\.126</host> </group> . . . <ssl desc="SSL settings"> <as_scheme type="bool" default="true" desc="When set we exclusively use the WOPI URI's scheme to enable SSL for storage">false</as_scheme> . . . <username desc="The username of the admin console. Ignored if PAM is enabled.">pepe</username> <password desc="The password of the admin console. Deprecated on most platforms. Instead, use PAM or loolconfig to set up a secure password.">lepuf</password> . . .
Agregando la IP del servidor de Nextcloud (192.168.0.126) para que pueda usar el servidor de collabora
Reiniciamos Collabora con:
systemctl restart coolwsd
Interfáz de administración de Collabora CODE: https://collaboran.floresvillatoro.com/browser/dist/admin/admin.html
Configuración de Nextcloud
Ya en el nextcloud se debe hacer:
- Descargar y activar la aplicacion Collabora Online
- Dentro de Configuración→Administración→Collabora Develment Edition definir Usar su propio servidor con URL https://collaboran.floresvillatoro.com
- Verificar que nos muestre el signo de chek verde
- Luego probar la edición de documentos.
Agregar nuevas fuentes
Para agregar nuevas fuentes de letras, se debe hacer:
Instalar las fuentes
apt install ttf-ubuntu-font-family ttf-xfree86-nonfree ttf-ancient-fonts ttf-sjfonts ttf-mscorefonts-installer
Los cuales se guardan en /opt/cool/systemplate/
Actualizar el template de collabora
coolconfig update-system-template
Reiniciar collabora
systemctl restart coolwsd