From c5fd144ff06928939b227d6c838370f01ea9cb3c Mon Sep 17 00:00:00 2001 From: 3wc <3wc@doesthisthing.work> Date: Sun, 31 Mar 2024 23:48:53 -0300 Subject: [PATCH] Error pages Re coop-cloud/organising#115 --- abra.sh | 4 ++-- compose.errors.yml | 29 +++++++++++++++++++++++++++++ file-provider.yml.tmpl | 15 ++++++++++++++- traefik.yml.tmpl | 7 +++++++ 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 compose.errors.yml diff --git a/abra.sh b/abra.sh index 550ac6b..aca7209 100644 --- a/abra.sh +++ b/abra.sh @@ -1,3 +1,3 @@ -export TRAEFIK_YML_VERSION=v19 -export FILE_PROVIDER_YML_VERSION=v9 +export TRAEFIK_YML_VERSION=v20 +export FILE_PROVIDER_YML_VERSION=v10 export ENTRYPOINT_VERSION=v2 diff --git a/compose.errors.yml b/compose.errors.yml new file mode 100644 index 0000000..c8e285b --- /dev/null +++ b/compose.errors.yml @@ -0,0 +1,29 @@ +--- +version: "3.8" + +services: + app: + environment: + - "CUSTOM_ERRORS=1" + volumes: + - "traefik-plugins:/plugins-local/" + errors: + image: "tarampampam/error-pages:2.27.0" + networks: + - proxy + deploy: + labels: + - "traefik.enable=true" + # use as "fallback" for any non-registered services (with priority below normal) + - "traefik.http.routers.${STACK_NAME}-error.rule=HostRegexp(`{host:.+}`)" + - "traefik.http.routers.${STACK_NAME}-error.priority=10" + - "traefik.http.routers.${STACK_NAME}-error.entrypoints=web-secure" + - "traefik.http.routers.${STACK_NAME}-error.tls.certresolver=${LETS_ENCRYPT_ENV}" + - "traefik.http.services.${STACK_NAME}-error.loadbalancer.server.port=8080" + # "errors" middleware settings + - "traefik.http.middlewares.${STACK_NAME}-error.errors.status=400-599" + - "traefik.http.middlewares.${STACK_NAME}-error.errors.service=${STACK_NAME}-error" + - "traefik.http.middlewares.${STACK_NAME}-error.errors.query=/{status}.html" + +volumes: + traefik-plugins: diff --git a/file-provider.yml.tmpl b/file-provider.yml.tmpl index aa827bd..7cb8300 100644 --- a/file-provider.yml.tmpl +++ b/file-provider.yml.tmpl @@ -1,6 +1,19 @@ --- + http: middlewares: + {{ if eq (env "CUSTOM_ERRORS") "1" }} + error: + plugin: + traefik-error-page: + debug: "true" + contentsOnly: "false" + contentsOnlyMatch: "Bad Gateway" + query: /{status}.html + service: http://{{ env "STACK_NAME" }}_errors:8080 + status: + - 502 + {{ end }} {{ if eq (env "KEYCLOAK_MIDDLEWARE_ENABLED") "1" }} keycloak: forwardAuth: @@ -48,4 +61,4 @@ tls: certificates: - certFile: /run/secrets/ssl_cert keyFile: /run/secrets/ssl_key - {{ end }} \ No newline at end of file + {{ end }} diff --git a/traefik.yml.tmpl b/traefik.yml.tmpl index 3f6aeab..a7d4791 100644 --- a/traefik.yml.tmpl +++ b/traefik.yml.tmpl @@ -115,3 +115,10 @@ certificatesResolvers: - "1.1.1.1:53" - "9.9.9.9:53" {{ end }} + +{{ if eq (env "CUSTOM_ERRORS") "1" }} +experimental: + localplugins: + traefik-error-page: + moduleName: "github.com/3-w-c/traefik-error-page" +{{ end }}