diff --git a/media-servarr/compose.yml b/media-servarr/compose.yml new file mode 100644 index 0000000..2ac1308 --- /dev/null +++ b/media-servarr/compose.yml @@ -0,0 +1,460 @@ +version: "3.9" +services: + qbittorrent: + container_name: qbittorrent + image: ghcr.io/hotio/qbittorrent + restart: unless-stopped + networks: + - proxy + ports: + - 9400:9400 + - 6882:6882 + - 6882:6882/udp + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + - WEBUI_PORTS=9400/tcp,9400/udp + volumes: + - /lake/starr/qbittorrent:/config + - /lake:/data + labels: + - traefik.enable=true + - traefik.http.routers.qbittorrent-secure.entrypoints=https + - traefik.http.routers.qbittorrent-secure.rule=Host(`qbit.example.com`) + - traefik.http.routers.qbittorrent-secure.tls=true + - traefik.http.routers.qbittorrent-secure.service=qbittorrent + - traefik.http.services.qbittorrent.loadbalancer.server.port=9400 + - traefik.docker.network=proxy + deluge: + container_name: deluge + image: lscr.io/linuxserver/deluge:latest + restart: unless-stopped + networks: + - proxy + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + - DELUGE_LOGLEVEL=error + volumes: + - /lake/starr/deluge:/config + - /lake/downloads/torrents:/downloads + ports: + - 8112:8112 + - 6881:6881 + - 6881:6881/udp + labels: + - traefik.enable=true + - traefik.http.routers.deluge-secure.entrypoints=https + - traefik.http.routers.deluge-secure.rule=Host(`del.example.com`) + - traefik.http.routers.deluge-secure.tls=true + - traefik.http.routers.deluge-secure.service=deluge + - traefik.http.services.deluge.loadbalancer.server.port=8112 + - traefik.docker.network=proxy + plex: + container_name: plex + image: lscr.io/linuxserver/plex:latest + restart: unless-stopped + networks: + - proxy + runtime: nvidia + ports: + - 32400:32400/tcp + - 8324:8324/tcp + - 32469:32469/tcp + - 32410:32410/udp + - 32412:32412/udp + - 32413:32413/udp + - 32414:32414/udp + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + - NVIDIA_VISIBLE_DEVICES=all + - VERSION=docker + - PLEX_CLAIM= #optional get from plex.tv/claim + - ADVERTISE_IP=http://PLEX_SERVER_IP_ADDRESS:32400/ + volumes: + - /lake/starr/plexmediaserver:/config + - /lake/media:/media + labels: + - traefik.enable=true + - traefik.http.routers.plex-secure.entrypoints=https + - traefik.http.routers.plex-secure.rule=Host(`plex.example.com`) + - traefik.http.routers.plex-secure.tls=true + - traefik.http.routers.plex-secure.service=plex + - traefik.http.services.plex.loadbalancer.server.port=32400 + - traefik.docker.network=proxy + jellyfin: + container_name: jellyfin + image: lscr.io/linuxserver/jellyfin:latest + restart: unless-stopped + networks: + - proxy + runtime: nvidia + ports: + - 8096:8096 + - 8920:8920 #optional + - 7359:7359/udp #optional + # - 1900:1900/udp #optional + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + - NVIDIA_VISIBLE_DEVICES=all + - JELLYFIN_PublishedServerUrl=JELLYFIN_SERVER_IP_ADDRESS + volumes: + - /lake/starr/jellyfin:/config + - /lake/media:/media + labels: + - traefik.enable=true + - traefik.http.routers.jellyfin-secure.entrypoints=https + - traefik.http.routers.jellyfin-secure.rule=Host(`jf.example.com`) + - traefik.http.routers.jellyfin-secure.tls=true + - traefik.http.routers.jellyfin-secure.service=jellyfin + - traefik.http.services.jellyfin.loadbalancer.server.port=8096 + - traefik.docker.network=proxy + radarr: + container_name: radarr + image: ghcr.io/hotio/radarr + restart: unless-stopped + networks: + - proxy + ports: + - 7878:7878 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + depends_on: + - prowlarr + volumes: + - /etc/localtime:/etc/localtime:ro + - /lake/starr/radarr:/config + - /lake:/data + labels: + - traefik.enable=true + - traefik.http.routers.radarr-secure.entrypoints=https + - traefik.http.routers.radarr-secure.rule=Host(`radarr.example.com`) + - traefik.http.routers.radarr-secure.tls=true + - traefik.http.routers.radarr-secure.service=radarr + - traefik.http.services.radarr.loadbalancer.server.port=7878 + - traefik.docker.network=proxy + sonarr: + container_name: sonarr + image: ghcr.io/hotio/sonarr + restart: unless-stopped + networks: + - proxy + ports: + - 8989:8989 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + depends_on: + - prowlarr + volumes: + - /etc/localtime:/etc/localtime:ro + - /lake/starr/sonarr:/config + - /lake:/data + labels: + - traefik.enable=true + - traefik.http.routers.sonarr-secure.entrypoints=https + - traefik.http.routers.sonarr-secure.rule=Host(`sonarr.example.com`) + - traefik.http.routers.sonarr-secure.tls=true + - traefik.http.routers.sonarr-secure.service=sonarr + - traefik.http.services.sonarr.loadbalancer.server.port=8989 + - traefik.docker.network=proxy + lidarr: + container_name: lidarr + image: ghcr.io/hotio/lidarr + restart: unless-stopped + networks: + - proxy + ports: + - 8686:8686 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + depends_on: + - prowlarr + volumes: + - /etc/localtime:/etc/localtime:ro + - /lake/starr/lidarr:/config + - /lake:/data + labels: + - traefik.enable=true + - traefik.http.routers.lidarr-secure.entrypoints=https + - traefik.http.routers.lidarr-secure.rule=Host(`lidarr.example.com`) + - traefik.http.routers.lidarr-secure.tls=true + - traefik.http.routers.lidarr-secure.service=lidarr + - traefik.http.services.lidarr.loadbalancer.server.port=8686 + - traefik.docker.network=proxy + readarr: + container_name: readarr + image: ghcr.io/hotio/readarr + restart: unless-stopped + networks: + - proxy + ports: + - 8787:8787 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + depends_on: + - prowlarr + volumes: + - /etc/localtime:/etc/localtime:ro + - /lake/starr/readarr:/config + - /lake:/data + labels: + - traefik.enable=true + - traefik.http.routers.readarr-secure.entrypoints=https + - traefik.http.routers.readarr-secure.rule=Host(`readarr.example.com`) + - traefik.http.routers.readarr-secure.tls=true + - traefik.http.routers.readarr-secure.service=readarr + - traefik.http.services.readarr.loadbalancer.server.port=8787 + - traefik.docker.network=proxy + whisparr: + container_name: whisparr + image: ghcr.io/hotio/whisparr + restart: unless-stopped + networks: + - proxy + ports: + - 6969:6969 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + depends_on: + - prowlarr + volumes: + - /etc/localtime:/etc/localtime:ro + - /lake/starr/whisparr:/config + - /lake:/data + labels: + - traefik.enable=true + - traefik.http.routers.whisparr-secure.entrypoints=https + - traefik.http.routers.whisparr-secure.rule=Host(`whisparr.example.com`) + - traefik.http.routers.whisparr-secure.tls=true + - traefik.http.routers.whisparr-secure.service=whisparr + - traefik.http.services.whisparr.loadbalancer.server.port=6969 + - traefik.docker.network=proxy + bazarr: + container_name: bazarr + image: ghcr.io/hotio/bazarr + restart: unless-stopped + networks: + - proxy + ports: + - 6767:6767 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + depends_on: + - radarr + - sonarr + volumes: + - /lake/starr/bazarr:/config + - /lake:/data + labels: + - traefik.enable=true + - traefik.http.routers.bazarr-secure.entrypoints=https + - traefik.http.routers.bazarr-secure.rule=Host(`bazarr.example.com`) + - traefik.http.routers.bazarr-secure.tls=true + - traefik.http.routers.bazarr-secure.service=bazarr + - traefik.http.services.bazarr.loadbalancer.server.port=6767 + - traefik.docker.network=proxy + prowlarr: + container_name: prowlarr + image: ghcr.io/hotio/prowlarr + restart: unless-stopped + networks: + - proxy + ports: + - 9696:9696 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + depends_on: + - qbittorrent + volumes: + - /etc/localtime:/etc/localtime:ro + - /lake/starr/prowlarr:/config + labels: + - traefik.enable=true + - traefik.http.routers.prowlarr-secure.entrypoints=https + - traefik.http.routers.prowlarr-secure.rule=Host(`prowlarr.example.com`) + - traefik.http.routers.prowlarr-secure.tls=true + - traefik.http.routers.prowlarr-secure.service=prowlarr + - traefik.http.services.prowlarr.loadbalancer.server.port=9696 + - traefik.docker.network=proxy + jackett: + container_name: jackett + image: lscr.io/linuxserver/jackett:latest + restart: unless-stopped + networks: + - proxy + ports: + - 9117:9117 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + - AUTO_UPDATE=true + depends_on: + - qbittorrent + volumes: + - /lake/starr/jackett:/config + - /lake/downloads/torrents:/downloads + labels: + - traefik.enable=true + - traefik.http.routers.jackett-secure.entrypoints=https + - traefik.http.routers.jackett-secure.rule=Host(`jackett.example.com`) + - traefik.http.routers.jackett-secure.tls=true + - traefik.http.routers.jackett-secure.service=jackett + - traefik.http.services.jackett.loadbalancer.server.port=9117 + - traefik.docker.network=proxy + overseerr: + container_name: overseerr + image: ghcr.io/hotio/overseerr + restart: unless-stopped + networks: + - proxy + ports: + - 5055:5055 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + - LOG_LEVEL=warn + depends_on: + - radarr + - sonarr + volumes: + - /lake/starr/overseerr:/config + labels: + - traefik.enable=true + - traefik.http.routers.overseerr-secure.entrypoints=https + - traefik.http.routers.overseerr-secure.rule=Host(`ovs.example.com`) + - traefik.http.routers.overseerr-secure.tls=true + - traefik.http.routers.overseerr-secure.service=overseerr + - traefik.http.services.overseerr.loadbalancer.server.port=5055 + - traefik.docker.network=proxy + tautulli: + container_name: tautulli + image: ghcr.io/hotio/tautulli + restart: unless-stopped + networks: + - proxy + ports: + - 8181:8181 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + volumes: + - /lake/starr/tautulli:/config + labels: + - traefik.enable=true + - traefik.http.routers.tautulli-secure.entrypoints=https + - traefik.http.routers.tautulli-secure.rule=Host(`tautulli.example.com`) + - traefik.http.routers.tautulli-secure.tls=true + - traefik.http.routers.tautulli-secure.service=tautulli + - traefik.http.services.tautulli.loadbalancer.server.port=8181 + - traefik.docker.network=proxy + ytdl_material: + container_name: youtube-dl + image: tzahi12345/youtubedl-material:latest + restart: unless-stopped + networks: + - proxy + ports: + - 8998:17442 + environment: + ytdl_mongodb_connection_string: mongodb://ytdl-mongo-db:27017 + ytdl_use_local_db: "false" + write_ytdl_config: "true" + depends_on: + - ytdl-mongo-db + volumes: + - /lake/starr/youtube-dl/appdata:/app/appdata + - /lake/media/youtube-music:/app/audio + - /lake/media/youtube:/app/video + - /lake/media/youtube-subscriptions:/app/subscriptions + - /lake/starr/youtube-dl/users:/app/users + labels: + - traefik.enable=true + - traefik.http.routers.youtube-dl-secure.entrypoints=https + - traefik.http.routers.youtube-dl-secure.rule=Host(`ytdl.example.com`) + - traefik.http.routers.youtube-dl-secure.tls=true + - traefik.http.routers.youtube-dl-secure.service=youtube-dl + - traefik.http.services.youtube-dl.loadbalancer.server.port=8686 + - traefik.docker.network=proxy + #- traefik.http.routers.youtube-dl-secure.middlewares=authelia@docker # Since yt-dl has no authentication system, you can use authelia or similar + ytdl-mongo-db: + container_name: youtube-dl-mongodb + image: mongo + restart: unless-stopped + networks: + - proxy + logging: + driver: none + volumes: + - /lake/starr/youtube-dl-mongodb/:/data/db + autoscan: + container_name: autoscan + image: ghcr.io/hotio/autoscan + restart: unless-stopped + networks: + - proxy + ports: + - 3030:3030 + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE + - PLEX_LOGIN= + - PLEX_PASSWORD= + depends_on: + - radarr + - sonarr + - lidarr + volumes: + - /lake/starr/autoscan:/config + - /lake:/data + #deleterr: # IF YOU WANT AUTOMATIC DELETION OF OLD WATCHED AND STALE MEDIA, UNCOMMENT THIS WHOLE SECTION BELOW. YOU CAN CONFIGURE IT https://github.com/rfsbraz/deleterr + #container_name: deleterr + #image: ghcr.io/rfsbraz/deleterr:latest + #restart: no + #networks: + #- proxy + #environment: + #LOG_LEVEL: INFO + #volumes: + #- /lake/starr/deleterr/config:/config + #- /lake/starr/deleterr/logs:/config/logs + #scheduler: + #container_name: deleterr-scheduler + #image: mcuadros/ofelia:latest + #restart: unless-stopped + #networks: + #- proxy + #depends_on: + #- deleterr + #command: daemon --docker + #volumes: + #- /var/run/docker.sock:/var/run/docker.sock:ro + #labels: + #ofelia.job-run.deleterr.schedule: "@weekly" + #ofelia.job-run.deleterr.container: deleterr +networks: + proxy: + external: true