Update: Additional issue after upgrading to Umbrel 2.0
After upgrading to Umbrel 2.0, Public Pool stopped showing data again despite the previous
WebSocket fix still being in place.
Root Cause
Umbrel 2.0 changed the internal Docker network IP assignments. The nginx proxy had the
old IP 10.21.0.7 hardcoded as upstream for the API, but after the update the
public-pool_server_1 container was reassigned to 10.21.0.7 a new IP (10.21.0.5),
causing all API requests to fail with: connect() failed (111: Connection refused) while connecting to upstream:
http://10.21.0.7:2019/api/info
Fix
Replace the hardcoded IP in the nginx upstream with the container name. Docker resolves
container names to their current IP automatically, so this fix survives reboots and
future updates:
server {
listen 80;
location / {
proxy_pass http://public-pool_web_1:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location ~* ^/api/ {
proxy_pass http://public-pool_server_1:2019;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
Steps to apply
sudo bash -c 'cat > /home/umbrel/umbrel/app-data/public-pool/data/proxy/nginx.conf << '"'"'EOF'"'"'
server {
listen 80;
location / {
proxy_pass http://public-pool_web_1:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
location ~* ^/api/ {
proxy_pass http://public-pool_server_1:2019;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
EOF'
sudo docker exec public-pool_proxy_1 nginx -t && \
sudo docker exec public-pool_proxy_1 nginx -s reload
Environment
- umbrelOS: 2.0
- Hardware: PC x86 amd64
- Public Pool: Package public-pool · GitHub
Note
This fix combines both issues reported previously (missing WebSocket headers + hardcoded IP)
into a single robust nginx config. It should survive future Umbrel updates and Docker
network changes since it uses container names instead of IPs for upstream resolution.