Traefik not accepting multiple hosts

Hello, I'm new to using traefik and I'd like to understand why when I execute my docker compose I access my n8n instance via my domain but I can't access prometheus or grafana. (Grafana and Promeheus works, but can't access them through my domain)

Thanks for help !

version: "3.7"

volumes:
  traefik_data:
  prometheus-data:
    driver: local
  grafana-data:
    driver: local

networks:
  prometheus-network:
    driver: bridge
  traefik-proxy:
    driver: bridge

services:

  # ---------------------------------------------------------------------------- #
  #                                    TRAEFIK                                   #
  # ---------------------------------------------------------------------------- #

  traefik:
    image: "traefik"
    container_name: "traefik"
    restart: always
    command:
      - "--api=true"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.cfresolver.acme.dnschallenge=true"
      - "--certificatesresolvers.cfresolver.acme.dnschallenge.provider=cloudflare"
      - "--certificatesresolvers.cfresolver.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.cfresolver.acme.storage=/letsencrypt/acme.json"
      - "--certificatesResolvers.cfresolver.acme.dnsChallenge.resolvers=1.1.1.1:53,1.0.0.1:53"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - CF_API_EMAIL=${CF_EMAIL}
      - CF_API_KEY=${CF_API_KEY}
    networks:
      - traefik-proxy
    depends_on:
      - n8n
      - prometheus
      - grafana
      - node_exporter

  # ---------------------------------------------------------------------------- #
  #                                      N8N                                     #
  # ---------------------------------------------------------------------------- #

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${N8N_SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=cfresolver
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_HOST=${N8N_SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${N8N_SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - ./n8n_data:/home/node/.n8n
      - ./n8n_local_files:/files
    networks:
      - traefik-proxy

  # ---------------------------------------------------------------------------- #
  #                                  PROMETHEUS                                  #
  # ---------------------------------------------------------------------------- #

  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    labels:
      - traefik.enable=true
      - traefik.http.routers.prometheus.rule=Host(`${PROMETHEUS_SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.prometheus.tls=true
      - traefik.http.routers.prometheus.entrypoints=web,websecure
      - traefik.http.routers.prometheus.tls.certresolver=cfresolver
      - traefik.http.middlewares.prometheus.headers.SSLRedirect=true
      - traefik.http.middlewares.prometheus.headers.STSSeconds=315360000
      - traefik.http.middlewares.prometheus.headers.browserXSSFilter=true
      - traefik.http.middlewares.prometheus.headers.contentTypeNosniff=true
      - traefik.http.middlewares.prometheus.headers.forceSTSHeader=true
      - traefik.http.middlewares.prometheus.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.prometheus.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.prometheus.headers.STSPreload=true
      - traefik.http.routers.prometheus.middlewares=prometheus@docker
    restart: unless-stopped
    volumes:
      - ./config:/etc/prometheus/
      - prometheus-data:/prometheus
    networks:
      - prometheus-network
    ports:
      - "127.0.0.1:9090:9090"

  # ---------------------------------------------------------------------------- #
  #                                    GRAFANA                                   #
  # ---------------------------------------------------------------------------- #

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    labels:
      - traefik.enable=true
      - traefik.http.routers.grafana.rule=Host(`${GRAFANA_SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.grafana.tls=true
      - traefik.http.routers.grafana.entrypoints=web,websecure
      - traefik.http.routers.grafana.tls.certresolver=cfresolver
      - traefik.http.middlewares.grafana.headers.SSLRedirect=true
      - traefik.http.middlewares.grafana.headers.STSSeconds=315360000
      - traefik.http.middlewares.grafana.headers.browserXSSFilter=true
      - traefik.http.middlewares.grafana.headers.contentTypeNosniff=true
      - traefik.http.middlewares.grafana.headers.forceSTSHeader=true
      - traefik.http.middlewares.grafana.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.grafana.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.grafana.headers.STSPreload=true
    restart: unless-stopped
    volumes:
      - grafana-data:/var/lib/grafana
    networks:
      - prometheus-network
      - traefik-proxy
    ports:
      - "127.0.0.1:3000:3000"
    depends_on:
      - prometheus

  # ---------------------------------------------------------------------------- #
  #                                 NODE EXPORTER                                #
  # ---------------------------------------------------------------------------- #

  node_exporter:
    image: quay.io/prometheus/node-exporter:latest
    container_name: node_exporter
    command:
      - '--path.rootfs=/host'
    pid: host
    restart: unless-stopped
    volumes:
      - '/:/host:ro,rslave'
    networks:
      - prometheus-network

# ---------------------------------------------------------------------------- #

Add the target port of each target service in labels. See simple Traefik example.

Add docker.network in labels (or central with provider) when using multiple Docker networks. Make sure the network name is fixed (name:), so compose does not create a prefix.

Enable and check Traefik debug log (doc).

Thank you very much, that fixed my issue :innocent:

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.