services:
    jellyfin:
        container_name: jellyfin
        devices:
            - /dev/dri:/dev/dri
        environment:
            - PUID=1000
            - PGID=1000
            - TZ=America/Denver
            - UMASK_SET=022
        group_add:
            - '105'
        image: jellyfin/jellyfin
        labels:
            traefik.docker.network: traefik
            traefik.enable: true
            traefik.http.routers.jellyfin.entrypoints: websecure
            traefik.http.routers.jellyfin.rule: Host(`jellyfin.alexlebens.net`)
            traefik.http.routers.jellyfin.service: jellyfin
            traefik.http.services.jellyfin.loadbalancer.server.port: 8096
        logging:
            driver: json-file
            options:
                max-size: 50m
                max-file: "3"
        networks:
            traefik: null
        privileged: true
        ports:
            - 7359:7359/udp
        restart: unless-stopped
        volumes:
            - config:/config
            - cache:/cache
            - media:/media
            - anime_nfs:/anime
            - anime_movies_nfs:/anime_movies
            - documentaries_nfs:/documentaries
            - documentary_shows_nfs:/documentary_shows
            - dvr_nfs:/dvr
            - movies_nfs:/movies
            - movies_classics_nfs:/movies_classics
            - movies_foreign_nfs:/movies_foreign
            - music_nfs:/music
            - standup_nfs:/standup
            - tvshows_nfs:/tvshows

    vue:
        container_name: jellyfin_vue
        image: ghcr.io/jellyfin/jellyfin-vue:unstable
        labels:
            traefik.docker.network: traefik
            traefik.enable: true
            traefik.http.routers.jellyfin_vue.entrypoints: websecure
            traefik.http.routers.jellyfin_vue.rule: Host(`jellyvue.alexlebens.net`)
            traefik.http.routers.jellyfin_vue.service: jellyfin_vue
            traefik.http.services.jellyfin_vue.loadbalancer.server.port: 80 
        logging:
            driver: json-file
            options:
                max-size: 50m
                max-file: "3"
        networks:
            traefik: null
        restart: unless-stopped

networks:
    traefik:
        name: traefik
        external: true

volumes:
    config:
        driver: local
        driver_opts:
            type: none
            o: bind
            device: /var/lib/docker/volumes/partition/jellyfin_config

    media:
        driver: local
        driver_opts:
            type: none
            o: bind
            device: /var/lib/docker/volumes/partition/jellyfin_media

    cache:
        driver: local
        driver_opts:
            type: none
            o: bind
            device: /var/lib/docker/volumes/partition/jellyfin_cache

    anime_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Anime"

    anime_movies_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Anime Movies"

    documentaries_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Documentaries" 

    documentary_shows_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Documentary Shows" 

    dvr_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/DVR"

    movies_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Movies"

    movies_classics_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Movies Classics"

    movies_foreign_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Movies Foreign"

    music_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Music"

    standup_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/Stand Up"

    tvshows_nfs:
        driver: local
        driver_opts:
            type: nfs
            o: addr=192.168.1.194,nfsvers=4
            device: ":/volume2/Storage/TV Shows"
