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 jellyseerr: container_name: jellyseerr image: fallenbagel/jellyseerr:latest restart: unless-stopped networks: - proxy ports: - 5056:5055 environment: - LOG_LEVEL=debug - TZ=Asia/Riyadh depends_on: - jellyfin volumes: - /lake/starr/jellyseerr:/app/config labels: - traefik.enable=true - traefik.http.routers.jellyseerr-secure.entrypoints=https - traefik.http.routers.jellyseerr-secure.rule=Host(`jellyseerr.example.com`) - traefik.http.routers.jellyseerr-secure.tls=true - traefik.http.routers.jellyseerr-secure.service=jellyseerr - traefik.http.services.jellyseerr.loadbalancer.server.port=5055 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 jellystat-db: container_name: jellystat-db image: postgres:15.2 restart: unless-stopped networks: - proxy environment: - POSTGRES_DB=jfstat - POSTGRES_USER=jfstat - POSTGRES_PASSWORD=DB_PASSWORD # CHANGE THIS TO A SECURE PASSWORD volumes: - /lake/starr/jellystat/db:/var/lib/postgresql/data jellystat: container_name: jellystat image: cyfershepard/jellystat:latest restart: unless-stopped networks: - proxy ports: - 3040:3000 environment: - POSTGRES_USER=jfstat - POSTGRES_PASSWORD=DB_PASSWORD # CHANGE THIS TO THE SAME SECURE PASSWORD FROM ABOVE - POSTGRES_IP=jellystat-db - POSTGRES_PORT=5432 - JWT_SECRET=SUPER_SECRET_STRING # CHANGE THIS TO A RANDOM SECURE STRING depends_on: - jellystat-db - jellyfin volumes: - /lake/starr/jellystat:/app/backend/backup-data labels: - traefik.enable=true - traefik.http.routers.jellystat-secure.entrypoints=https - traefik.http.routers.jellystat-secure.rule=Host(`jellystat.example.com`) - traefik.http.routers.jellystat-secure.tls=true - traefik.http.routers.jellystat-secure.service=jellystat - traefik.http.services.jellystat.loadbalancer.server.port=3000 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 maintainerr: container_name: maintainerr image: ghcr.io/jorenn92/maintainerr:latest # or jorenn92/maintainerr:latest restart: unless-stopped networks: - proxy user: 1000:1000 environment: - TZ=Asia/Riyadh # CHANGE THIS TO YOUR TIMEZONE # - DEBUG=true # uncomment to enable debug logs ports: - 6246:6246 depends_on: - radarr - sonarr - plex - overseerr volumes: - type: bind source: /lake/starr/maintainerr target: /opt/data labels: - traefik.enable=true - traefik.http.routers.maintainerr-secure.entrypoints=https - traefik.http.routers.maintainerr-secure.rule=Host(`maintainerr.example.com`) - traefik.http.routers.maintainerr-secure.tls=true - traefik.http.routers.maintainerr-secure.service=maintainerr - traefik.http.services.maintainerr.loadbalancer.server.port=6246 networks: proxy: external: true