# Media Stack - *arr services, Jellyfin, torrent client services: # ===== MEDIA MANAGEMENT ===== sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr profiles: ["media", "all"] environment: - TZ=${TZ} - PUID=${PUID} - PGID=${PGID} volumes: - ${DOCKER_CONFIG_ROOT}/Arrs/Sonarr/config:/config - ${DATA_ROOT}:/data - ${TORRENTS_PATH}:/downloads ports: - "8989:8989" networks: arr_network: ipv4_address: 172.20.0.3 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8989/ping"] interval: 30s timeout: 10s retries: 3 radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr profiles: ["media", "all"] environment: - TZ=${TZ} - PUID=${PUID} - PGID=${PGID} volumes: - ${DOCKER_CONFIG_ROOT}/Arrs/Radarr/config:/config - ${DATA_ROOT}:/data - ${TORRENTS_PATH}:/downloads ports: - "7878:7878" networks: arr_network: ipv4_address: 172.20.0.5 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:7878/ping"] interval: 30s timeout: 10s retries: 3 lidarr: image: lscr.io/linuxserver/lidarr:latest container_name: lidarr profiles: ["media", "all"] environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - ${DOCKER_CONFIG_ROOT}/Arrs/Lidarr/config:/config - ${DATA_ROOT}:/data - ${TORRENTS_PATH}:/downloads ports: - "8686:8686" restart: unless-stopped networks: arr_network: ipv4_address: 172.20.0.7 healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8686/ping"] interval: 30s timeout: 10s retries: 3 bazarr: image: lscr.io/linuxserver/bazarr:latest container_name: bazarr profiles: ["media", "all"] environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - ${DOCKER_CONFIG_ROOT}/Arrs/Bazarr/config:/config - ${DATA_ROOT}:/data networks: arr_network: ipv4_address: 172.20.0.6 ports: - "6767:6767" restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:6767/ping"] interval: 30s timeout: 10s retries: 3 prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr profiles: ["media", "all"] environment: - TZ=${TZ} - PUID=${PUID} - PGID=${PGID} volumes: - ${DOCKER_CONFIG_ROOT}/Arrs/Prowlarr/config:/config ports: - "9696:9696" networks: arr_network: ipv4_address: 172.20.0.4 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9696/ping"] interval: 30s timeout: 10s retries: 3 flaresolverr: image: ghcr.io/flaresolverr/flaresolverr:latest container_name: flaresolverr profiles: ["media", "all"] environment: - TZ=${TZ} ports: - "8191:8191" networks: arr_network: ipv4_address: 172.20.0.8 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8191/health"] interval: 30s timeout: 10s retries: 3 # ===== MEDIA STREAMING ===== jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin profiles: ["media", "all"] ports: - "8096:8096" volumes: - ${DOCKER_CONFIG_ROOT}/Arrs/Jellyfin/config:/config - ${DOCKER_CONFIG_ROOT}/Arrs/Jellyfin/cache:/cache - ${DATA_ROOT}:/data - /dev/dri/renderD128:/dev/dri/renderD128 group_add: - "104" restart: unless-stopped environment: - TZ=${TZ} - PUID=${PUID} - PGID=${PGID} - JELLYFIN_PublishedServerUrl=${JELLYFIN_URL} healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8096/health"] interval: 30s timeout: 10s retries: 3 jellyseerr: image: fallenbagel/jellyseerr:latest container_name: jellyseerr profiles: ["media", "all"] environment: - LOG_LEVEL=info - TZ=${TZ} volumes: - ${DOCKER_CONFIG_ROOT}/Arrs/Jellyseerr/config:/app/config - ${TORRENTS_PATH}:/downloads ports: - "5055:5055" networks: arr_network: ipv4_address: 172.20.0.14 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5055/api/v1/status"] interval: 30s timeout: 10s retries: 3 # ===== DOWNLOAD CLIENT ===== qbittorrent: container_name: qbittorrent image: lscr.io/linuxserver/qbittorrent:latest profiles: ["media", "all"] environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} - WEBUI_PORT=8080 ports: - "7070:8080" - "56881:6881" - "56881:6881/udp" volumes: - ./qBittorrent/config:/config - ${TORRENTS_PATH}:/downloads networks: arr_network: ipv4_address: 172.20.0.2 restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080"] interval: 30s timeout: 10s retries: 3 # ===== MUSIC SCROBBLING ===== multi-scrobbler: image: foxxmd/multi-scrobbler:latest container_name: multi-scrobbler profiles: ["media", "all"] environment: - TZ=${TZ} - PUID=${PUID} - PGID=${PGID} - BASE_URL=${SCROBBLE_URL} - SPOTIFY_CLIENT_ID=${SPOTIFY_CLIENT_ID} - SPOTIFY_CLIENT_SECRET=${SPOTIFY_CLIENT_SECRET} - SPOTIFY_REDIRECT_URI=${SPOTIFY_REDIRECT_URI} - MALOJA_URL=${MALOJA_URL} - MALOJA_API_KEY=${MALOJA_API_KEY} volumes: - "./scrobble/config:/config" ports: - "9078:9078" restart: unless-stopped depends_on: - maloja maloja: image: krateng/maloja:latest container_name: maloja profiles: ["media", "all"] ports: - "42010:42010" volumes: - "./maloja/config:/etc/maloja" - "./maloja/data:/var/lib/maloja" - "./maloja/logs:/var/log/maloja" environment: - MALOJA_FORCE_PASSWORD=${MALOJA_FORCE_PASSWORD} restart: unless-stopped networks: arr_network: external: true