Reverse proxy with apache2 fails with collabora not able to connect to websocket running with docker on same m/c as my webservice (WOPI host) no SSL

Hi,

I have installed docker version of collabora CODE and home grown webserver (WOPI Host) running locally with no SSL/TLS and reverse proxy of apache2.

I see that the websocket connection terminates abruptly on the first try

024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124010 +0000 [ websrv_poll ] ERR #36: Read failed, have 0 buffered bytes (ECONNREFUSED: Connection refused)| net/Socket.hpp:1268
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124331 +0000 [ websrv_poll ] TRC #36: performWrites: sending request (buffered: 0 bytes, capacity: 16384)| net/HttpRequest.hpp:1607
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124374 +0000 [ websrv_poll ] TRC performWrites (request header)| net/HttpRequest.hpp:694
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124522 +0000 [ websrv_poll ] TRC performWrites (request body)| net/HttpRequest.hpp:711
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124573 +0000 [ websrv_poll ] TRC performWrites (request body): finished, total: 2411| net/HttpRequest.hpp:729
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124584 +0000 [ websrv_poll ] ERR #36: Socket write returned -1 (EPIPE: Broken pipe)| net/Socket.hpp:1606
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124602 +0000 [ websrv_poll ] ERR #36: Socket write returned -1 (EPIPE: Broken pipe)| net/Socket.hpp:1606
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124607 +0000 [ websrv_poll ] DBG #36: Disconnected while writing (EPIPE): Broken pipe)| net/Socket.hpp:1563
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124612 +0000 [ websrv_poll ] TRC #36: Closed. Firing onDisconnect.| net/Socket.hpp:1575
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124615 +0000 [ websrv_poll ] TRC #36: onDisconnect| net/HttpRequest.hpp:1635
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124618 +0000 [ websrv_poll ] TRC #36: Async shutdown requested.| net/Socket.hpp:1101
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124624 +0000 [ websrv_poll ] TRC #36: Socket shutdown RDWR. StreamSocket[#36, HTTP, IPv4 @ :0]| net/Socket.hpp:218
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124681 +0000 [ websrv_poll ] TRC #36: State::Error| net/HttpRequest.hpp:1048
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124743 +0000 [ websrv_poll ] TRC #36: Finishing: State::Error| net/HttpRequest.hpp:1078
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124831 +0000 [ websrv_poll ] TRC #36: onFinished| net/HttpRequest.hpp:1464
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124847 +0000 [ websrv_poll ] TRC #36: onFinished calling client| net/HttpRequest.hpp:1473
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124896 +0000 [ websrv_poll ] TRC #36: WOPI::CheckFileInfo returned 0 (Unknown)| wsd/wopi/CheckFileInfo.cpp:53
2024-12-17 03:18:37 wsd-00001-00032 2024-12-17 11:18:37.124946 +0000 [ websrv_poll ] ERR #36: WOPI::CheckFileInfo failed fo

My Apache config:
ProxyErrorOverride off
AllowEncodedSlashes NoDecode
ProxyPreserveHost On
RewriteEngine on

static html, js, images, etc. served from coolwsd

browser is the client part of Collabora Online

ProxyPass /browser http://127.0.0.1:9980/browser retry=0
ProxyPassReverse /browser http://127.0.0.1:9980/browser

WOPI discovery URL

ProxyPass /hosting/discovery http://127.0.0.1:9980/hosting/discovery retry=0
ProxyPassReverse /hosting/discovery http://127.0.0.1:9980/hosting/discovery

Capabilities

ProxyPass /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities retry=0
ProxyPassReverse /hosting/capabilities http://127.0.0.1:9980/hosting/capabilities

Main websocket

ProxyPassMatch “/cool/(.*)/ws$” ws://127.0.0.1:9980/cool/$1/ws nocanon

Admin Console websocket

ProxyPass /cool/adminws ws://127.0.0.1:9980/cool/adminws

Download as, Fullscreen presentation and Image upload operations

ProxyPass /cool http://127.0.0.1:9980/cool
ProxyPassReverse /cool http://127.0.0.1:9980/cool

Compatibility with integrations that use the /lool/convert-to endpoint

ProxyPass /lool http://127.0.0.1:9980/cool
ProxyPassReverse /lool http://127.0.0.1:9980/cool

If I’m not wrong CODE defaults to TLS config and you must disable TLS in reverse proxy scenario first… please review