# Example of Docker Compose setup using Traefik reverse proxy version: '3' services: traefik: image: traefik:v2.2.11 restart: always ports: - 80:80 - 443:443 - 9710:9710 volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik_data:/data command: # Read docker-compose labels but do not expose by default - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" # Define entrypoints - "--entrypoints.web.address=:80" - "--entrypoints.web.http.redirections.entryPoint.to=websecure" - "--entrypoints.websecure.address=:443" - "--entrypoints.srtsecure.address=:9710" # Define certificates - "--certificatesResolvers.mytlschallenge.acme.email=root@example.com" - "--certificatesResolvers.mytlschallenge.acme.storage=/data/acme.json" - "--certificatesResolvers.mytlschallenge.acme.httpChallenge.entryPoint=web" ghostream: build: .. restart: always volumes: - ./ghostream_data:/etc/ghostream:ro labels: - "traefik.enable=true" - "traefik.http.routers.ghostream.rule=Host(`stream.example.com`)" - "traefik.http.routers.ghostream.entrypoints=websecure" - "traefik.http.routers.ghostream.tls.certresolver=mytlschallenge" - "traefik.http.routers.ghostream.service=ghostream" - "traefik.http.services.ghostream.loadbalancer.server.port=8080" - "traefik.http.routers.ghostream-metrics.rule=Host(`stream.example.com`) && PathPrefix(`/metrics`)" - "traefik.http.routers.ghostream-metrics.priority=100" - "traefik.http.routers.ghostream-metrics.entrypoints=websecure" - "traefik.http.routers.ghostream-metrics.tls.certresolver=mytlschallenge" - "traefik.http.routers.ghostream-metrics.service=ghostream-metrics" - "traefik.http.services.ghostream-metrics.loadbalancer.server.port=2112" - "traefik.tcp.routers.ghostream-srt.rule=HostSNI(`stream.example.com`)" - "traefik.tcp.routers.ghostream-srt.entrypoints=srtsecure" - "traefik.tcp.routers.ghostream-srt.tls.certresolver=mytlschallenge" - "traefik.tcp.routers.ghostream-srt.service=ghostream-srt" - "traefik.tcp.services.ghostream-srt.loadbalancer.server.port=9710"