Info about my software stack:
- Used Zammad version: 6.4.1-1742994139.560f34ed.noble
- Used Zammad installation type: package
- Operating system: Ubuntu 24.04.2 LTS
- Browser + version: Mozilla Firefox 136.0.3 (but that does not matter, the issue occurs in any browser, on desktop or mobile)
I built my Zammad instance on the registered domain (in example https://fqdndomain.xz/), which is proxied via Cloudflare with websockets enabled. On the server side I have Nginx Proxy Manager, to which is pointed the connection from Cloudflare. On the Nginx Proxy Manager is situated proxy host with websockets support enabled, pointing to my server with Zammad instance, which is behind NAT. Itās a fresh install on newly installed OS with Nginx as a main webserver with default recommended settings. On the local server I have SSL enabled via self-signed certificates, on the NPM I have SSL enabled with LE certificates and on the Cloudflare there is SSL enabled via their/Google certs. So the complete connection chain is secured via SSL.
Expected behavior:
Mobile version on the URL https://fqdndomain.xz/mobile should work without any issues with all websocket connections included (i.e. action cable).
Actual behavior:
If I open the Zammad in desktop web UI, everything works as it should (with successful wss connections upgrade (code 101)). But if I open mobile version on URL https://fqdndomain.xz/mobile, I get the error "The connection to the server was lost " displayed on top right of the screen.
When I open developer settings, I see there GET error ā404 Not Foundā in regards the GET wss://fqdndomain.xz/cable.
When I try to curl http://127.0.0.1:3000/cable on the server side, I get āPage not foundā error too.
Steps to reproduce the behavior:
I donāt know if the issue happen when you install new instance without Cloudflare or Nginx Proxy Manager. So my steps to reproduce the behavior is place Zammad behind the Nginx Proxy Manager and try to open https://fqdndomain.xz/mobile URL.
I donāt think the issue is happening because some incompatibility between Cloudflare, Nginx Proxy Manager and local webserver, because as I wrote above, I have enabled websocket support everywhere and if I open the web UI in desktop mode, I normally get 101 codes from GET wss://fqdndomain.xz/ws URLs.
Here is my proxy settings from the local Nginx webserver:
location /ws {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection āUpgradeā;
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
proxy_pass http://zammad-websocket;
}
location /cable {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection āUpgradeā;
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 86400;
proxy_pass http://zammad-railsserver;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header CLIENT_IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-User āā;
proxy_read_timeout 180;
proxy_pass http://zammad-railsserver;
gzip on;
gzip_types text/plain text/xml text/css image/svg+xml application/javascript application/x-javascript application/json application/xml;
gzip_proxied any;
}