Instalando y configurando collabora online detr谩s de Reverse proxy de apache sin docker

Hola. Tengo un problema de configuraci贸n que no soy capaz de resolver. He estado consultando por internet, en estes foros de nexcloud, en la documentaci贸n y no soy capaz de resolverlo.
Voy a intentar explicar pormenorizadamente la estructura y los probelmas que tengo.

Actualmente tengo dos servidores en la red local, uno con ubuntu 18.04 (servidor A), con la IP 192.168.0.150 con un Nextcloud y un proxy inverso de apache. Este proxy inverso est谩 funcionando correctamente y redireccionando a otros servicios que tengo en mi red local (por ejemplo un Jellyfin).

En otro servidor (servidor B), con debian 10 y la IP 192.168.0.100, tengo instalado el collabora online, siguiendo las indicaciones de su pagina oficial

Tengo un dom铆nio para el servidor B de collabora, subdominio.dominio.com.

En el reverse proxy configur茅 un sitio collabora.conf con el contenido:

<VirtualHost *:80>
       
       ServerName subdominio.dominio.com
       ServerAlias www.subdominio.dominio.com 
       Options -Indexes

       # Deben permitirse las barras codificadas
       AllowEncodedSlashes NoDecode
       # keep the host
       ProxyPreserveHost on
    
       ProxyPass / http://192.168.0.100:9980/
       ProxyPassReverse / http://192.168.0.100:9980/

       #static html, js, images, etc. serverd from loolwsd
       #loleaflet is the client part of collabora online
       ProxyPass /loleaflet http://192.168.0.100:9980/loleaflet retry=0
       ProxyPassReverse /loleaflet http://192.168.0.100:9980/loleaflet

       # WOPI discovery URL
       ProxyPass           /hosting/discovery http://192.168.0.100:9980/hosting/discovery retry=0
       ProxyPassReverse    /hosting/discovery http://192.168.0.100:9980/hosting/discovery

       # Capabilities
       ProxyPass           /hosting/capabilities http://192.168.0.100:9980/hosting/capabilities retry=0
       ProxyPassReverse    /hosting/capabilities http://192.168.0.100:9980/hosting/capabilities

       # Main websocket
       ProxyPassMatch "/lool/(.*)/ws$" ws://192.168.0.100:9980/lool/$1/ws nocanon

       # Admin Console websocket
       ProxyPass   /lool/adminws ws://192.168.0.100:9980/lool/adminws

       # Download as, Fullscreen presentation and Image upload operations
       ProxyPass           /lool http://192.168.0.100:9980/lool
       ProxyPassReverse    /lool http://192.168.0.100:9980/lool

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.subdominio.dominio.com [OR]
RewriteCond %{SERVER_NAME} =subdominio.dominio.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Siguiendo tambi茅n las indicaciones de la documentaci贸n (https://www.collaboraoffice.com/code/apache-reverse-proxy/), concretamente el apartado 3.

En el servidor B, en el archivo de configuraci贸n /etc/loolwsd/loolwsd.xml, puse a false, en la l铆nea 93 (enable) y la 94 (termination), en el apartado de SSL.
Tambi茅n puse el nombre del dom铆nio en la l铆nea 12, en server_name

Despu茅s, en el servidor A, instal茅, por medio de certbot, un certificado de lets encrypt, para el sitio subdominio.dominio.com, que me gener贸 el archivo de configuraci贸n para https, con el contenido:

<IfModule mod_ssl.c>
<VirtualHost *:443>
   
   ServerName doc.farinha.cat
   ServerAlias www.doc.farinha.cat 
   Options -Indexes

   # Deben permitirse las barras codificadas
   AllowEncodedSlashes NoDecode
   # keep the host
   ProxyPreserveHost on

   ProxyPass / http://192.168.0.100:9980/
   ProxyPassReverse / http://192.168.0.100:9980/

   #static html, js, images, etc. serverd from loolwsd
   #loleaflet is the client part of collabora online
   ProxyPass /loleaflet http://192.168.0.100:9980/loleaflet retry=0
   ProxyPassReverse /loleaflet http://192.168.0.100:9980/loleaflet

   # WOPI discovery URL
   ProxyPass           /hosting/discovery http://192.168.0.100:9980/hosting/discovery retry=0
   ProxyPassReverse    /hosting/discovery http://192.168.0.100:9980/hosting/discovery

   # Capabilities
   ProxyPass           /hosting/capabilities http://192.168.0.100:9980/hosting/capabilities retry=0
   ProxyPassReverse    /hosting/capabilities http://192.168.0.100:9980/hosting/capabilities

   # Main websocket
   ProxyPassMatch "/lool/(.*)/ws$" ws://192.168.0.100:9980/lool/$1/ws nocanon

   # Admin Console websocket
   ProxyPass   /lool/adminws ws://192.168.0.100:9980/lool/adminws

   # Download as, Fullscreen presentation and Image upload operations
   ProxyPass           /lool http://192.168.0.100:9980/lool
   ProxyPassReverse    /lool http://192.168.0.100:9980/lool


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/doc.farinha.cat/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/doc.farinha.cat/privkey.pem
</VirtualHost>
</IfModule>

Con esta configuraci贸n, si en un navegador pongo el dom铆nio o la IP:PUERTO me sale una p谩gina que 煤nicamente pone OK.

Si accedo al IP:PUERTO/hosting/discovery o dominio/hosting/discovery me sale una p谩gina con el contenido de un xml:

    <wopi-discovery>
       <net-zone name="external-http">
           <app name="image/svg+xml">
               <action ext="svg" name="view" urlsrc="http://dominio/loleaflet/48938d4/loleaflet.html?"/>
           </app>
           <app name="application/vnd.ms-powerpoint"></app>
   ...
   ...
 
       </net-zone>
   </wopi-discovery>"

Si accedo a una de esas direcciones del archivo anterior (http://dominio/loleaflet/48938d4/loleaflet.html?) me sale una p谩gina con lo siguiente

Si accedo con la 192.168.0.100:9980/loleaflet/48938d4/loleaflet.html? me sale

Despu茅s, en el nextcloud, al configurar el plugin de collabora me sale al darle a Apply 鈥淪aved with error: Collabora Online should use the same protocol as the server instalation鈥

No se muy bien por donde tirar, por lo que veo, soy capaz de acceder al servidor Collabora, tanto desde la red local como desde fuera, pero supongo que tengo mal configurado el archivo loolwsd.xml.

Si alguien me puede ayudar os lo agradecer铆a mucho.

moved to spanish subcategory as this is an englishspeaking forum.
though we are offering other languages in subcategories鈥 like dutch, russian, french, german and 鈥 spanish.

Ok, thanK you, excuse me!

1 Like

thats no problem鈥 so no real reason for an excuse鈥 :wink:

1 Like

I think you should change http to https and in your ProxyPass and ProxyPassReverse and ws to wss in ProxyPassMatch and ProxyPass. And restart your Apache server.

Hi. Thanks for the answer, if I configure the proxy like this, I cannot access the Collabora server. I suppose it is because I do not have a certificate installed on the Collabora server. I installed the certificate in the proxy through certbot.
Would it be better to install the certificate on the Collabora server?
I will continue testing to see if I can get it to work.

Hola. Gracias por la respuesta, si configuro as铆 el proxy no consigo acceder al servidor de Collabora. Supongo que es porque en el servidor de Collabora no tengo instalado ning煤n certificado. El certificado lo instal茅 en el proxy por medio de certbot.
驴Ser谩 mejor instalar el certificado en el servidor de Collabora?
Seguir茅 haciendo pruebas a ver si consigo hacer que ande.

Buenas!
Si no ando muy desencaminado, deberias de tener en el servidor del collabora instalados unos certificados. Esos mismo certificados, deberias de copiarlos al servidor de Nextcloud y usarlos en la configuracion del proxy, para poder acceder al servidor. En el collabora.conf, creo que deberia de estar:

SSLEngine on
SSLCertificateFile /carpeta/del/certificado-firmado-collabora
SSLCertificateChainFile  /carpeta/del/certificado-intermedio-collabora
SSLCertificateKeyFile /carpeta/de/clave-privada-collabora
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

Yo creo que esa parte deberia de estar, porque si no, no le veo mucho sentido configurar un acceso a una https (en el servidor A) si no usas certificados para la seguridad. A ver si alguien nos lo aclara.

Un saludo :wink:

As is said in 鈥渆l plugin de collabora鈥:Collabora Online should use the same protocol as the server instalation.
Your server installation uses ssl, so your collabora installation shoud use it too.
For Collabora it is sufficient to use a 鈥渟elf signed"certificate鈥:
openssl genrsa -out /etc/loolwsd/root.key.pem 2048
openssl req -x509 -new -nodes -key /etc/loolwsd/root.key.pem -days 9131 -out /etc/loolwsd/ca-chain.cert.pem -subj 鈥/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=Dummy Authority鈥
openssl genrsa -out /etc/loolwsd/key.pem 2048 -key /etc/loolwsd/key.pem
openssl req -key /etc/loolwsd/key.pem -new -sha256 -out /etc/loolwsd/localhost.csr.pem -subj 鈥/C=DE/ST=BW/L=Stuttgart/O=Dummy Authority/CN=localhost鈥
openssl x509 -req -in /etc/loolwsd/localhost.csr.pem -CA /etc/loolwsd/ca-chain.cert.pem -CAkey /etc/loolwsd/root.key.pem -CAcreateserial -out /etc/loolwsd/cert.pem -days 9131

You have to include those files in your /etc/loolwsd.xml:



<cert_file_path desc=鈥淧ath to the cert file鈥 relative=鈥渇alse鈥>/etc/loolwsd/cert.pem</cert_file_path>
<key_file_path desc=鈥淧ath to the key file鈥 relative=鈥渇alse鈥>/etc/loolwsd/key.pem</key_file_path>
<ca_file_path desc=鈥淧ath to the ca file鈥 relative=鈥渇alse鈥>/etc/loolwsd/ca-chain.cert.pem</ca_file_path>
<cipher_list desc=鈥淟ist of OpenSSL ciphers to accept. If empty the defaults are used. These can be overriden only if absolutely needed.鈥></cipher_list>

And you have to do the changes I mentioned above.