version: "3.8" services: traefik: image: "traefik:v2.9.4" container_name: "traefik" command: - "--accesslog" - "--accesslog.filepath=/var/log/traefik/access.log" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--experimental.plugins.bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin" - "--experimental.plugins.bouncer.version=v1.0.9" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "logs:/var/log/traefik" ports: - 8000:80 - 8080:8080 depends_on: - 'crowdsec' whoami1: image: traefik/whoami container_name: "simple-service-1" labels: - "traefik.enable=true" # Definition of the router - "traefik.http.routers.router1.rule=Host(`localhost`) && Path(`/foo`)" - "traefik.http.routers.router1.entrypoints=web" - "traefik.http.routers.router1.middlewares=crowdsec2@docker" # Definition of the service - "traefik.http.services.service1.loadbalancer.server.port=80" # Definition of the middleware - "traefik.http.middlewares.crowdsec1.plugin.bouncer.enabled=true" # crowdseclapikey must be unique to the middleware attached to the service - "traefik.http.middlewares.crowdsec1.plugin.bouncer.crowdseclapikey=FIXME-LAPI-KEY-1" # forwardedheaderstrustedips should be the IP of the proxy that is in front of traefik (if any) - "traefik.http.middlewares.crowdsec1.plugin.bouncer.forwardedheaderstrustedips=172.21.0.5" whoami2: image: traefik/whoami container_name: "simple-service-2" labels: - "traefik.enable=true" # Definition of the router - "traefik.http.routers.router2.rule=Host(`localhost`) && Path(`/bar`)" - "traefik.http.routers.router2.entrypoints=web" - "traefik.http.routers.router2.middlewares=crowdsec2@docker" # Definition of the service - "traefik.http.services.service2.loadbalancer.server.port=80" # Definitin of the middleware - "traefik.http.middlewares.crowdsec2.plugin.bouncer.enabled=true" # crowdseclapikey must be unique to the middleware attached to the service - "traefik.http.middlewares.crowdsec2.plugin.bouncer.crowdseclapikey=FIXME-LAPI-KEY-2" # forwardedheaderstrustedips should be the IP of the proxy that is in front of traefik (if any) - "traefik.http.middlewares.crowdsec2.plugin.bouncer.forwardedheaderstrustedips=172.21.0.5" crowdsec: image: crowdsecurity/crowdsec:v1.4.1 container_name: "crowdsec" environment: COLLECTIONS: crowdsecurity/traefik CUSTOM_HOSTNAME: crowdsec # We need to register one api key per service we will use BOUNCER_KEY_TRAEFIK_1: FIXME-LAPI-KEY-1 BOUNCER_KEY_TRAEFIK_2: FIXME-LAPI-KEY-2 volumes: - ./acquis.yaml:/etc/crowdsec/acquis.yaml:ro - logs:/var/log/traefik:ro - crowdsec-db:/var/lib/crowdsec/data/ - crowdsec-config:/etc/crowdsec/ labels: - "traefik.enable=false" volumes: logs: crowdsec-db: crowdsec-config: