Nginx or any reverse proxy configuration? Dashboards

While I am running the C7, I don't think the hardware is relevant. I've scoured the forums here and reddit looking for working examples of nginx/etc configurations for Hubitat. No combination of them seem to work. Dashboard pages load up the background, and all other content is missing. No 404 type errors. Unfortunately most threads on this that I could find were closed with no response, or they're too old/irrelevant per my testing. I would think more people in the home automation community would be demanding this in the core documentation. All my hass stuff is 100% self-hosted without cloud, which might end up being my workaround.

Clicking the dashboard link in [fqdn]/dashboard/select takes me to:
[fqdn]/apps/api/12/dashboard/108?access_token=[redacted]
Simply replacing fqdn with the local IP, when local, works.

The hits in the nginx logs seem to look okay...ish. My PC request shows a bit more information while the phone has "-" -- but I don't think that's related.

[PC/Brave/LAN] - - [15/Aug/2024:17:32:47 +0000] "GET /apps/api/12/dashboard/108?access_token=[redacted] HTTP/2.0" 200 1339 "https://[fqdn]/dashboard/select" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"

[Android/Brave/LAN] - - [15/Aug/2024:17:33:09 +0000] "GET /apps/api/12/dashboard/108?access_token=[redacted] HTTP/2.0" 200 1339 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"

[Android/Brave/WAN] - - [15/Aug/2024:17:37:10 +0000] "GET /apps/api/12/dashboard/108?access_token=[redacted] HTTP/2.0" 200 1339 "-" "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Mobile Safari/537.36"

Why would I want to connect directly to my own hub instead of relaying through the cloud? Speed. Sometimes I'm testing something and I want instant responses on the dash. Also, why do I need the cloud for anything? I've moved away from those services almost entirely and Hubitat should be no exception.

Anyone have a config they feel like sharing?

Another reason I want to use self-hosted is so I can send API requests to RM or WebCore without going through the cloud. This way when I'm programming various automations via external scripts, I can just use the fqdn for everything, rather than local IP vs Hubitat cloud URL. This already works, oddly enough, but it's specifically something with the dashboards. I'm guessing it has to do with how frames are loaded.

If you're on your local LAN, either directly connected or via a VPN, the cloud isn't used.

Without actually checking, I remember that local dashboards use a websocket to update current state, so you probably need to also forward that via nginx.

When loaded using the cloud link, websockets are not used (they don't scale properly cause they keep the http connection busy) so state is updated using polling.

Personally not the biggest fan of VPNs. Too many hoops to jump through when I want to take a quick glance at a dash board, but thank you for the insight.

Thank you -- that might help me in the right direction.