fbonalair/traefik-crowdsec-bouncer

View on GitHub
examples/docker-compose.yaml

Summary

Maintainability
Test Coverage
version: "3.8"

services:
  traefik:
    image: traefik:v2.5
    container_name: "traefik-example"
    command:
#      - "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  whoami:
    image: traefik/whoami:latest
    container_name: "simple-service-example"
    labels:
      # Create bouncer middleware
      - "traefik.http.middlewares.crowdsec-bouncer.forwardauth.address=http://bouncer:8080/api/v1/forwardAuth"

      # Traefik routing to this service
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`localhost`)"
      - "traefik.http.routers.whoami.entrypoints=web"
      - "traefik.http.routers.whoami.middlewares=crowdsec-bouncer@docker"

  crowdsec:
    image: crowdsecurity/crowdsec:v1.2.0
    container_name: "crowdsec-example"
    environment:
      COLLECTIONS: "crowdsecurity/nginx"
      GID: "${GID-1000}"
    depends_on:
      - 'traefik'
    volumes:
      - crowdsec-db-example:/var/lib/crowdsec/data/
      - crowdsec-config-example:/etc/crowdsec/

  bouncer:
    image: fbonalair/traefik-crowdsec-bouncer:0.1.1
    container_name: "bouncer-example"
    environment:
      CROWDSEC_BOUNCER_API_KEY: MyApiKey
      CROWDSEC_AGENT_HOST: crowdsec:8080

volumes:
  logs-example:
  crowdsec-db-example:
  crowdsec-config-example: