services: mediamtx: image: bluenviron/mediamtx:1.17.0 container_name: streamhub-mediamtx restart: unless-stopped depends_on: - backend ports: - "1935:1935" # RTMP ingest - "8888:8888" # HLS / LL-HLS preview - "8889:8889" # WebRTC HTTP signaling (optional for later) - "8189:8189/udp" # WebRTC ICE/UDP (optional for later) - "127.0.0.1:9997:9997" # MediaMTX API (local only) - "127.0.0.1:9998:9998" # Metrics (local only) volumes: - ./mediamtx/mediamtx.yml:/mediamtx.yml:ro networks: - streamhub backend: build: ./backend container_name: streamhub-backend restart: unless-stopped env_file: - .env volumes: - ./data/db:/app/data - ./data/logs:/app/logs networks: - streamhub caddy: image: caddy:2.8 container_name: streamhub-caddy restart: unless-stopped depends_on: - backend ports: - "80:80" - "443:443" volumes: - ./proxy/Caddyfile:/etc/caddy/Caddyfile:ro - ./data/caddy:/data - ./data/caddy_config:/config networks: - streamhub networks: streamhub: driver: bridge