Traefik labels, Proxy header und HSTS

Hallo,
ich habe ein Problem mit den Einstellungen des Traefik Proxy. Das ich trotz Anleitung lesen und intensiver google-Suche und ausprobieren nicht gelöst bekomme. Würde mich freuen, wenn ich hier Experten-Rat bekäme.

Ich möchte Nextcloud auf meinem Homeserver (einem Raspberry Pi 5) betreiben. Der Dienst wird nicht öffentlich via eigener URL bereitgestellt, sondern per http im lokalen Heimnetz und per Tailscale VPN mobil. Weil Tailscale eigene https- / TLS-Zertifikate bereitstellt, möchte ich diese mittels Traefik-Proxy auch nutzen.
Ich setze also den offiziellen nextcloud:latest Container vom Docker Hub ein, möchte aber keinen ausschließlichen https-Redirect. Wenn es bei Tailscale oder Traefik irgendwo klemmt, nutze ich die Necxtloud “einfach so” per http.

Die Installation der Nextcloud habe ich per Docker run vorgenommen (exotisch, ich weiss. Andere nehmen Docker compose), grundsätzlich läuft alles. Aber beim Finetuning der Administration settings / Security & setup warnings werde ich zwei Fehlermeldungen nicht los:

  • The reverse proxy header configuration is incorrect. This is a security issue and can allow an attacker to spoof their IP address as visible to the Nextcloud. For more details see the documentation :up_right_arrow:.

  • Some headers are not set correctly on your instance - The Strict-Transport-Security HTTP header is not set (should be at least 15552000 seconds). For enhanced security, it is recommended to enable HSTS. For more details see the documentation :up_right_arrow:.

So sehen meine Traefik Labels aus:

-l traefik.enable="true" \
-l traefik.docker.network="proxy" \
-l traefik.http.routers.nextcloud-secure.entrypoints="websecure" \
-l traefik.http.routers.nextcloud-secure.rule="Host(\`[raspi5.******.ts.net]\`)" \
-l traefik.http.routers.nextcloud-secure.tls="true" \
-l traefik.http.routers.nextcloud-secure.tls.certresolver="tailnet" \
-l traefik.http.routers.nextcloud-secure.middlewares="nextcloud-header" \
-l traefik.http.middlewares.nextcloud-header.headers.stsSeconds="15552000" \
-l traefik.http.middlewares.nextcloud-header.headers.stsIncludeSubdomains="true" \
-l traefik.http.middlewares.nextcloud-header.headers.stsPreload="true" \
-l traefik.http.middlewares.nextcloud-header.headers.forceSTSHeader="true" \

Warum funktioniert das HSTS-Ding nicht??! Und welche Reverse Proxy Header muss ich noch ändern?
Oder (welche?) weiteren Config-Files der Nextcloud ändern? Bisher habe ich sämtliche Einstellungen per Traefik Labels und per Docker Environment Variables vorgenommen.

Wäre schön, wenn jemand helfen könnte!

die Setup checks werden serverseitig ausgeführt - vermutlich greift der Server auf sich selbst direkt ohne Umweg über den traefik es gab eine Menge Topics zu dem Thema als die checks umgestellt wurden mit nc29 oder nc30.. lese die Topics mit setup_warning durch vermutlich findest du Hinweise.

als hands-on würde curl -I https://raspi5.******.ts.net/status.php aus dem Conatainer ausführen - dann siehst du die “Server Sicht” und kannst beurteilen ob die Header vorhanden sind oder nicht. Wenn es aus Client Sicht korrekt ist und nur der Check falsch funktioniert - einfach ignorieren.. dein Setup ist nicht Standard da können die “normalen” Checks schon mal falsche Ergebnisse liefern.

Danke!
So siehts bei mir aus:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-XGNvhcZGYW3lKYdxcj56ZIeXdh8y3yISwyWXTJuBuBY='; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *; object-src 'none'; base-uri 'self';
Content-Type: application/json
Date: Sat, 07 Jun 2025 11:46:13 GMT
Referrer-Policy: no-referrer
Server: Apache/2.4.62 (Debian)
Set-Cookie: nc_sameSiteCookielax=true; path=/; httponly;expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=lax
Set-Cookie: nc_sameSiteCookiestrict=true; path=/; httponly;expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=strict
Strict-Transport-Security: max-age=15552000; includeSubDomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-Powered-By: PHP/8.3.22
X-Robots-Tag: noindex, nofollow
X-Xss-Protection: 1; mode=block

Strict-Transport-Security sieht für mich richtig aus, aber das muss nix heissen, denn ich bin ja ahnungslos. :thinking:

Der Nextcloud-Check reportet jedenfalls weiterhin falsche Proxy-Header und fehlendes STS. :man_shrugging:
Schade.

Fehlermeldung 1 beseitigt!
Durch Hinzufügen der Adresse des IPV4 IPAM Subnets desjenigen bei mir “proxy” heissenden Docker bridge networks, in welchem uA der Traefik und der Nextcloud container laufen zur config.php:

'trusted_proxies' => 
  array (
    0 => '172.19.0.0/16',
  ),

Die Adresse kann man zB mal eben in Portainer im Networks Menüpunkt nachgucken.
Die Nextcloud-Fehlermeldung “The reverse proxy header configuration is incorrect.” ist danach verschwunden.

Aber: Fehlermeldung 2 mit den HSTS-Settings verbleibt. :roll_eyes: