version: '3.9'
services:
  plex:
    image: linuxserver/plex
    container_name: plex_plex
    restart: "no"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    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:
      - plex_stack.env
      - plex.env
      - plex_secrets.env
    volumes:
      - "${MEDIA_DIR}/Video/Movies:/movies"
      - "${MEDIA_DIR}/Video/Shows:/shows"
      - "${MEDIA_DIR}/Audio/Music:/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
    container_name: plex_ombi
    restart: "no"
    networks:
      - web
    env_file:
      - plex_stack.env
    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
    container_name: plex_exporter
    restart: "no"
    networks:
      - monitoring
    command: 
      - "--plex-server=https://plex.jafner.net"
      - "--token=4eBmSrpfXxxgT3cRF2gC"
      - "--auto-discover"
    labels:
      - traefik.enable=false

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