Skip to content

pascaliske/docker-traefik-errors

Repository files navigation

Custom error pages for your traefik installation.

Docker Image Version (tag latest semver) Docker Image Size (tag) Docker Pulls GitHub Tag Build Status GitHub Last Commit License: MIT Awesome Badges

Image

Registry Image
Docker Hub pascaliske/traefik-errors
GitHub ghcr.io/pascaliske/traefik-errors

The following platforms are available for this image:

$ docker run --rm mplatform/mquery pascaliske/traefik-errors:latest
Image: pascaliske/traefik-errors:latest
 * Manifest List: Yes
 * Supported platforms:
   - linux/amd64
   - linux/arm/v7
   - linux/arm64

Usage

To use the error pages you have to do these two steps:

1. Setup error service

The easiest way to use the service is docker-compose:

version: '3.7'
services:
  # proxy
  traefik:
    image: traefik:latest
    container_name: traefik
    ports:
      - '80:80'
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.http.address=:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /path/to/traefik/config:/etc/traefik

  # custom error pages
  traefik-errors:
    image: ghcr.io/pascaliske/traefik-errors:latest # or: pascaliske/traefik-errors:latest
    container_name: traefik-errors
    labels:
      - traefik.enable=true
      - traefik.http.routers.traefik-errors.rule=HostRegexp(`{host:.+}`)
      - traefik.http.routers.traefik-errors.entrypoints=http
      - traefik.http.routers.traefik-errors.priority=1
      - traefik.http.routers.traefik-errors.middlewares=error-pages@file

  # demo service
  whoami:
    image: traefik/whoami
    container_name: whoami
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.rule=Host(`whoami.domain.tld`)
      - traefik.http.routers.whoami.entrypoints=http
      - traefik.http.routers.whoami.middlewares=error-pages@file

2. Configure traefik middleware

Create a dynamic config file for traefik:

http:
  middlewares:
    error-pages:
      errors:
        service: traefik-errors
        query: "/?code={status}&home=domain.tld" # home parameter is optional
        status:
          - 400-599

Kubernetes

If you want to use this tool inside of a Kubernetes cluster check out my ready to deploy Helm chart!

License

MIT – © 2023 Pascal Iske