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
# ---------------------------------------------------------------------------- #