Cant connect to the socket when hosted by proxy
See original GitHub issue⚠️ Please verify that this bug has NOT been raised before.
- I checked and didn’t find similar issue
🛡️ Security Policy
- I agree to have read this project Security Policy
Description
I just installed Uptime Kuma and im very happy with it. However, as im hosting it with docker and i want to point a subdomain to it through my Plesk installation, i have to do that through a ProxyPass like so:
RewriteEngine On
ProxyPass / https://ip:3001/
ProxyPassReverse / https//ip:3001/
When doing that, i can successfully open the subdomain, and it will be directed to the Docker installation, but the websocket connection fails:

Can this somehow be fixed?
👟 Reproduction steps
- Install Uptime Kuma through Docker.
- Point a ProxyPass to the IP and Port of the Docker instance.
- Visit the host configured through the ProxyPass.
- See Error 😛
👀 Expected behavior
I would like to still be able to use Uptime Kuma even when hosted with a ProxyPass. The Websocket should be able to connect.
😓 Actual Behavior
The Websocket can not connect properly. View image above.
🐻 Uptime-Kuma Version
1.10.2
💻 Operating System and Arch
Windows 10
🌐 Browser
Chrome
🐋 Docker Version
19.03.15
🟩 NodeJS Version
No response
📝 Relevant log output
vendor.f3bba5ad.js:55 WebSocket connection to 'wss://kuma.example.de/socket.io/?EIO=4&transport=websocket' failed: 
doOpen @ vendor.f3bba5ad.js:55
index.3fc36d03.js:1 Failed to connect to the backend. Socket.io connect_error: websocket error
(anonymous) @ index.3fc36d03.js:1
vendor.f3bba5ad.js:55 WebSocket connection to 'wss://kuma.example.de/socket.io/?EIO=4&transport=websocket' failed: 
doOpen @ vendor.f3bba5ad.js:55
index.3fc36d03.js:1 Failed to connect to the backend. Socket.io connect_error: websocket error
(anonymous) @ index.3fc36d03.js:1
vendor.f3bba5ad.js:55 WebSocket connection to 'wss://kuma.example.de/socket.io/?EIO=4&transport=websocket' failed: 
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
index.3fc36d03.js:1 Failed to connect to the backend. Socket.io connect_error: websocket error
(anonymous) @ index.3fc36d03.js:1
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
onerror @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
vendor.f3bba5ad.js:55 WebSocket connection to 'wss://kuma.example.de/socket.io/?EIO=4&transport=websocket' failed: 
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
index.3fc36d03.js:1 Failed to connect to the backend. Socket.io connect_error: websocket error
(anonymous) @ index.3fc36d03.js:1
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
onerror @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
vendor.f3bba5ad.js:55 WebSocket connection to 'wss://kuma.example.de/socket.io/?EIO=4&transport=websocket' failed: 
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
index.3fc36d03.js:1 Failed to connect to the backend. Socket.io connect_error: websocket error
(anonymous) @ index.3fc36d03.js:1
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
onerror @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
vendor.f3bba5ad.js:55 WebSocket connection to 'wss://kuma.example.de/socket.io/?EIO=4&transport=websocket' failed: 
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
index.3fc36d03.js:1 Failed to connect to the backend. Socket.io connect_error: websocket error
(anonymous) @ index.3fc36d03.js:1
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
onerror @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
vendor.f3bba5ad.js:55 WebSocket connection to 'wss://kuma.example.de/socket.io/?EIO=4&transport=websocket' failed: 
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
index.3fc36d03.js:1 Failed to connect to the backend. Socket.io connect_error: websocket error
(anonymous) @ index.3fc36d03.js:1
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
onerror @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
emitReserved @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
setTimeout (async)
reconnect @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
t.emit @ vendor.f3bba5ad.js:55
onError @ vendor.f3bba5ad.js:55
ws.onerror @ vendor.f3bba5ad.js:55
error (async)
addEventListeners @ vendor.f3bba5ad.js:55
doOpen @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
QM @ vendor.f3bba5ad.js:55
dC.exports @ vendor.f3bba5ad.js:55
open @ vendor.f3bba5ad.js:55
(anonymous) @ vendor.f3bba5ad.js:55
Issue Analytics
- State:
- Created 2 years ago
- Comments:18 (1 by maintainers)
 Top Results From Across the Web
Top Results From Across the Web
Can't connect to HTTPS sites using Socket HTTP-proxy
For HTTPS though it cannot work: with HTTPS you need to first read the request (CONNECT) from the client and forward it to...
Read more >What can I do if I see "Cannot connect to WebSocket" when ...
Go to Control Panel > Login Portal > Advanced > Reverse Proxy. · Select the rule with the issue and click Edit. ·...
Read more >"WebSocket Unable to Connect” error message, what should I ...
The “WebSocket unable to connect” error message indicates that you are likely working behind a proxy that doesn't support the WebSocket ...
Read more >HAProxy Network Error: cannot bind socket - DigitalOcean
An HAProxy cannot bind socket error message is generated when there is another process listening on the same interface and TCP port ...
Read more >How to Fix "Can't Connect to Proxy Server" on Windows 10
This videos shows how to fix the " unable to connect to the proxy server" error on Windows 10. System Restore tool command:rstrui.exe....
Read more > Top Related Medium Post
Top Related Medium Post
No results found
 Top Related StackOverflow Question
Top Related StackOverflow Question
No results found
 Troubleshoot Live Code
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free Top Related Reddit Thread
Top Related Reddit Thread
No results found
 Top Related Hackernoon Post
Top Related Hackernoon Post
No results found
 Top Related Tweet
Top Related Tweet
No results found
 Top Related Dev.to Post
Top Related Dev.to Post
No results found
 Top Related Hashnode Post
Top Related Hashnode Post
No results found

I had a similar problem first when using Apache as reverse proxy. With the following setup it works now fine:
I also did activate these apache modules for it to run:
The Status page don’t use Sockets I think but in your dashboard look at the errors in console