You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was updating my heimdall deployment in k3s today and notice that mobile layout breaks for anything v2.8.0,v2.8.1,v2.8.2 (I tried all three).
Desktop works fine though (linux, Librewolf)
Possibly windows (edge) does not. but I haven't delved into this one too much so could have been a fluke (a friend was over briefly).
Attached is the screenshot of normal vs not.
I did rule out a browser cache issue. I can deploy any number of times between v2.7.6 and v2.8.0 and refresh the page and it will simply work or not-work depending on the version.
Your "broken" screenshot is the page rendering with no stylesheet at all (plain heading, bullet list, full-size logo), so the CSS request is failing on the phone rather than a mobile layout rule going wrong. That narrows it to how the asset URLs are generated.
Two things changed in 2.8.0 that can affect this:
Heimdall no longer trusts the X-Forwarded-Host header from a proxy (this was a host-header injection fix, CVE-2025-50578). If your ingress rewrites Host to the internal service name and relied on X-Forwarded-Host to carry the public name, the generated URLs now use the internal name. Setting APP_URL covers the host part, which you have done.
The scheme of generated asset URLs still comes from the request, not from APP_URL. If the pod does not see the request as HTTPS (proxy IP not in the trusted list, or X-Forwarded-Proto not forwarded), the page links http://.../css/app.css and the browser blocks it as mixed content on an HTTPS page. That would also explain why one client works and another does not if they reach the site by different paths.
Could you check on the phone:
View the page source (or load view-source:https://heimdal.homelab.lan/) and paste the <base href=...> line and the <link rel="stylesheet" href="...css/app.css..."> line.
Which browser the phone is running, and whether it reaches the site the same way as the desktop (same network, no VPN or Tailscale, same DNS).
Quick things to try:
Set FORCE_HTTPS=true in the container environment. If that fixes it, the pod is not seeing the request as HTTPS and the real fix is passing X-Forwarded-Proto through and setting TRUSTED_PROXIES to your ingress's pod or node CIDR.
If your ingress rewrites Host, configure it to pass the original Host through instead.
This issue has been automatically marked as stale because it has not had recent activity. This might be due to missing feedback from OP. It will be closed if no further activity occurs. Thank you for your contributions.
Activity
aptalca commentedon Aug 15, 2026
2.8.0 released more than 5 weeks ago and you're the only person to report this.
I can't reproduce it on Chrome for Android.
Make sure you set the public url in the .env file
ErgoPraxis commentedon Aug 15, 2026
Yup. APP_URL env was set correctly in k3s. I did check www/.env and it was local so I updated it.
No change.
Since I'm the only one reporting, I will simply keep it at v2.7.6.
Thanks.
KodeStar commentedon Sep 5, 2026
Your "broken" screenshot is the page rendering with no stylesheet at all (plain heading, bullet list, full-size logo), so the CSS request is failing on the phone rather than a mobile layout rule going wrong. That narrows it to how the asset URLs are generated.
Two things changed in 2.8.0 that can affect this:
X-Forwarded-Hostheader from a proxy (this was a host-header injection fix, CVE-2025-50578). If your ingress rewritesHostto the internal service name and relied onX-Forwarded-Hostto carry the public name, the generated URLs now use the internal name. SettingAPP_URLcovers the host part, which you have done.APP_URL. If the pod does not see the request as HTTPS (proxy IP not in the trusted list, orX-Forwarded-Protonot forwarded), the page linkshttp://.../css/app.cssand the browser blocks it as mixed content on an HTTPS page. That would also explain why one client works and another does not if they reach the site by different paths.Could you check on the phone:
view-source:https://heimdal.homelab.lan/) and paste the<base href=...>line and the<link rel="stylesheet" href="...css/app.css...">line.Quick things to try:
FORCE_HTTPS=truein the container environment. If that fixes it, the pod is not seeing the request as HTTPS and the real fix is passingX-Forwarded-Protothrough and settingTRUSTED_PROXIESto your ingress's pod or node CIDR.Host, configure it to pass the originalHostthrough instead.LinuxServer-CI commentedon Oct 5, 2026
This issue has been automatically marked as stale because it has not had recent activity. This might be due to missing feedback from OP. It will be closed if no further activity occurs. Thank you for your contributions.