From 0ccebc38279cd431eecd73e418d9ee50db6d91d7 Mon Sep 17 00:00:00 2001 From: Jens Date: Sun, 30 Aug 2026 15:51:44 +0200 Subject: [PATCH] Fehlerseiten: 404/500 Middleware (v3.6 errors + nginx errorpages + file-Provider) --- .gitignore | 1 + docker-compose.yaml | 26 ++++++++++++++++++++++- dynamic.yaml | 18 ++++++++++++++++ traefik.yaml | 7 +++++- web/404.html | 52 +++++++++++++++++++++++++++++++++++++++++++++ web/500.html | 52 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 dynamic.yaml create mode 100644 web/404.html create mode 100644 web/500.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9616630 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +acme/acme.json diff --git a/docker-compose.yaml b/docker-compose.yaml index da2a1bf..f694f30 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,4 +1,21 @@ services: + + errorpages: + image: nginx:1.27-alpine + container_name: errorpages + restart: unless-stopped + expose: + - "80" + volumes: + - ./web:/usr/share/nginx/html:ro + command: + - nginx + - -g + - "daemon off;" + networks: + - traefik-net + labels: + - traefik.enable=true traefik: image: traefik:3.6 # Gepinnt auf Version 3.6 container_name: traefik @@ -20,13 +37,20 @@ services: - traefik-net labels: - "traefik.enable=true" + # Dashboard Router - Korrigierte Syntax für Host-Regel - "traefik.http.routers.dashboard.rule=Host(`traefik.ljh31.de`)" - "traefik.http.routers.dashboard.entrypoints=websecure" - "traefik.http.routers.dashboard.tls=true" - "traefik.http.routers.dashboard.tls.certresolver=letsencrypt" - "traefik.http.routers.dashboard.service=api@internal" + + # Middleware Auswahl: Aktuell ist Basic Auth aktiv - "traefik.http.routers.dashboard.middlewares=dashboard-auth" + + # Basic Auth Definition - "traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$apr1$$xyz$$..." + + # Keycloak ForwardAuth Middleware (bereitgestellt, aber aktuell nicht im Router zugewiesen) - "traefik.http.middlewares.keycloak-oauth2.forwardauth.address=http:///oauth2/auth" - "traefik.http.middlewares.keycloak-oauth2.forwardauth.trustForwardHeader=true" - "traefik.http.middlewares.keycloak-oauth2.forwardauth.authResponseHeaders=X-Auth-Request-User,X-Auth-Request-Email" @@ -38,4 +62,4 @@ services: networks: traefik-net: - driver: bridge \ No newline at end of file + driver: bridge diff --git a/dynamic.yaml b/dynamic.yaml new file mode 100644 index 0000000..0bffdd3 --- /dev/null +++ b/dynamic.yaml @@ -0,0 +1,18 @@ +http: + services: + errorpages-backend: + loadBalancer: + servers: + - url: "http://errorpages:80" + passHostHeader: false + middlewares: + error-404: + errors: + status: "400-499" + service: errorpages-backend + query: "/{status}.html" + error-500: + errors: + status: "500-599" + service: errorpages-backend + query: "/{status}.html" diff --git a/traefik.yaml b/traefik.yaml index 43a9e79..3080a84 100644 --- a/traefik.yaml +++ b/traefik.yaml @@ -3,6 +3,7 @@ api: ping: {} # /ping-Endpunkt für Docker Healthcheck + entryPoints: sshtls: address: ":2222" @@ -19,6 +20,10 @@ entryPoints: address: ":9090" providers: + file: + filename: "/etc/traefik/dynamic.yaml" + watch: true + debugLogGeneratedTemplate: true docker: exposedByDefault: false @@ -37,4 +42,4 @@ metrics: prometheus: entryPoint: traefik -accessLog: {} \ No newline at end of file +accessLog: {} diff --git a/web/404.html b/web/404.html new file mode 100644 index 0000000..559443a --- /dev/null +++ b/web/404.html @@ -0,0 +1,52 @@ + + + + + +404 · Seite nicht gevonden + + + +
+ +

Seite nicht gefunden

+

Die angefragte Adresse ist unter  nicht belegt. Vielleicht ein Tippfehler – oder die Seite war nie da.

+ Zur Startseite → +
ljh31.de ·
+
+ + + diff --git a/web/500.html b/web/500.html new file mode 100644 index 0000000..5402fe6 --- /dev/null +++ b/web/500.html @@ -0,0 +1,52 @@ + + + + + +500 · Etwas ist schiefgelaufen + + + +
+ +

Etwas ist schiefgelaufen

+

Der Dienst hinter  meldet einen internen Fehler. Das ist meist nur vorübergehend – ein späterer Versuch führt weiter.

+ Zur Startseite → +
ljh31.de ·
+
+ + +