Used Zammad version: 6.0.0-1689860438.de5a066a.focal
Used Zammad installation type: (source, package, docker-compose, …) source
Operating system: Ubunutu
Browser + version: Mobile Safari / Mobile Chrome
Expected behavior:
Ability to access the new /mobile interface behind a reverse proxy
Actual behavior:
“The connection to the server was lost”
I have my Zammad install behind a separate Apache webserver, using it as a reverse proxy. I have gone and added the following line to the config on the reverse proxy:
ProxyPass /cable ws://192.168.1.244:3000/cable
192.168.1.244 is the internal IP address of the zammad server.
If I am local on the network and go to 192.168.1.244/mobile the page loads without issue
When I am remote and go through the apache reverse proxy I get the error.
I’m sure I’m missing something stupid here, but I’d appreciate any help.
Please have a look at your production.log. What happens if the request from the mobile view to /cable is made? Is it successful?
Example:
I, [2023-08-04T07:17:35.007724#75029-211740] INFO -- : Started GET "/cable" for 127.0.0.1 at 2023-08-04 07:17:35 +0200
I, [2023-08-04T07:17:35.060753#75029-211740] INFO -- : Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2023-08-04 07:17:35 +0200
I, [2023-08-04T07:17:35.061283#75029-211740] INFO -- : Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
If I attempt to access the mobile view externally (through my reverse proxy in my DMZ), no request ever appears in the production.log
If I attempt to access it internally, it shows this in the log:
I, [2023-08-04T08:10:47.791104#21044-685860] INFO – : Started GET “/cable” for 192.168.1.106 at 2023-08-04 08:10:47 -0400
I, [2023-08-04T08:10:47.794500#21044-685860] INFO – : Started GET “/cable/” [WebSocket] for 192.168.1.106 at 2023-08-04 08:10:47 -0400
I, [2023-08-04T08:10:47.794592#21044-685860] INFO – : Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: WebSocket)
So I had those settings correct before my 6.0 upgrade, but for the sake of testing, I restarted it and tried again and it didn’t change anything.
Yes. Please compare and adjust it. If the response from external is not logged at all in the production.log, it’s a configuration issue with your apache I guess.
I agree. I had Zammad working perfectly with this setup prior to the 6.0 release. These changes don’t have any documentation for anyone who uses a proxy for their setups.
The mobile UI requires websockets. The old desktop variant has an Ajax fallback.
So technically while it seemed to be working it was just falling back but still failed before.
In the future this will also affect the Desktop app.
I have exact the same problem. Internally it works fine but if I connect from an external device the mobile view says „The connection to the server was lost“
We use a reverse proxy in our DMZ too. The cable rule in the Nginx config is set.
Maybe you have a solution and can describe it, please?
Needs websockets another port?
Only 443 and 80 is forwarded in my case.