Skip to content

Mobile wonky regression v2.7.6 -> v2.8.0 #1588

Open

Description

@ErgoPraxis

Hello,

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.

For now, I am locking my deployment to v2.7.6.

Image Image

Activity

  1. moved this to Non-Docker Issues in Issue & PR Trackeron Aug 15, 2026
  2. aptalca commented on Aug 15, 2026

    @aptalca
    Member

    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

  3. ErgoPraxis commented on Aug 15, 2026

    @ErgoPraxis
    Author

    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.

  4. KodeStar commented on Sep 5, 2026

    @KodeStar
    Member

    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:

    1. 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.
    2. 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.
  5. LinuxServer-CI commented on Oct 5, 2026

    @LinuxServer-CI

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions