services:
  plex:
    image: linuxserver/plex:latest
    container_name: plex_plex
    restart: "no"
    networks:
      - web
    ports:
      - 32400:32400/tcp
      - 32400:32400/udp
      - 3005:3005/tcp
      - 8324:8324/tcp
      - 32469:32469/tcp
      - 1900:1900/udp
      - 32410:32410/udp
      - 32412:32412/udp
      - 32413:32413/udp
      - 32414:32414/udp
    env_file:
      - path: ./plex.env
        required: true
      - path: ./plex_stack.env
        required: true
      - path: ./plex_secrets.env
        required: false
    volumes:
      - "${MOVIES_DIR}:/movies"
      - "${SHOWS_DIR}:/shows"
      - "${MUSIC_DIR}:/music"
      - "${DOCKER_DATA}/plex:/config"
    labels:
      - traefik.http.routers.plex.rule=Host(`plex.jafner.net`)
      - traefik.http.routers.plex.tls.certresolver=lets-encrypt
      - traefik.http.services.plex.loadbalancer.server.port=32400

  ombi:
    image: ghcr.io/linuxserver/ombi:latest
    container_name: plex_ombi
    restart: "no"
    networks:
      - web
    env_file:
      - path: ./plex_stack.env
        required: true
    volumes:
      - "${DOCKER_DATA}/ombi:/config"
    labels:
      - traefik.http.routers.ombi.rule=Host(`ombi.jafner.net`)
      - traefik.http.routers.ombi.tls.certresolver=lets-encrypt
      - traefik.http.routers.ombi.tls.options=tls12@file
      - traefik.http.routers.ombi.middlewares=securityheaders@file
      - traefik.http.services.ombi.loadbalancer.server.port=3579   

  exporter-plex:
    image: granra/plex_exporter:latest
    container_name: plex_exporter
    restart: "no"
    networks:
      - monitoring
    command: 
      - "--plex-server=https://plex.jafner.net"
      - "--token=***REMOVED***"
      - "--auto-discover"
    labels:
      - traefik.enable=false

networks:
  web:
    external: true
  monitoring:
    external: true