services: sonarr: # Sonarr - TV show management and automation image: linuxserver/sonarr:4.0.0 container_name: sonarr restart: unless-stopped networks: - homelab-network - traefik-network ports: - '8989:8989' volumes: - ./sonarr/config:/config - ${MEDIA_DIR}:/media - ${DOWNLOAD_DIR}:/downloads # Large downloads on separate drive environment: - PUID=1000 - PGID=1000 - TZ=America/New_York healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:8989/'] interval: 30s timeout: 10s retries: 3 start_period: 60s labels: - ${SONARR_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/sonarr.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Media management with Sonarr' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.sonarr.entrypoints=websecure' - 'traefik.http.routers.sonarr.tls.certresolver=letsencrypt' - 'traefik.http.routers.sonarr.middlewares=authelia@docker' - 'traefik.http.services.sonarr.loadbalancer.server.port=8989' # Radarr - Movie automation radarr: image: linuxserver/radarr:5.2.6 container_name: radarr restart: unless-stopped networks: - homelab-network - traefik-network ports: - '7878:7878' volumes: - ./radarr/config:/config - ${MEDIA_DIR}:/media - ${DOWNLOAD_DIR}:/downloads # Large downloads on separate drive environment: - PUID=1000 - PGID=1000 - TZ=America/New_York healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:7878/'] interval: 30s timeout: 10s retries: 3 start_period: 60s labels: - ${RADARR_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/radarr.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Media management with Radarr' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.radarr.entrypoints=websecure' - 'traefik.http.routers.radarr.tls.certresolver=letsencrypt' - 'traefik.http.routers.radarr.middlewares=authelia@docker' - 'traefik.http.services.radarr.loadbalancer.server.port=7878' # Prowlarr - Indexer manager prowlarr: image: linuxserver/prowlarr:1.11.4 container_name: prowlarr restart: unless-stopped networks: - homelab-network - traefik-network ports: - '9696:9696' volumes: - ./prowlarr/config:/config environment: - PUID=1000 - PGID=1000 - TZ=America/New_York healthcheck: test: ['CMD', 'curl', '-f', 'http://localhost:9696/'] interval: 30s timeout: 10s retries: 3 start_period: 60s labels: - ${PROWLARR_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/prowlarr.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Prowlarr indexer management' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.prowlarr.entrypoints=websecure' - 'traefik.http.routers.prowlarr.tls.certresolver=letsencrypt' - 'traefik.http.routers.prowlarr.middlewares=authelia@docker' - 'traefik.http.services.prowlarr.loadbalancer.server.port=9696' # Readarr - Ebook and audiobook management readarr: image: linuxserver/readarr:0.4.19-nightly container_name: readarr restart: unless-stopped networks: - homelab-network - traefik-network ports: - '8787:8787' volumes: - ./readarr/config:/config - ${MEDIA_DIR}/books:/books - ${DOWNLOAD_DIR}:/downloads environment: - PUID=1000 - PGID=1000 - TZ=America/New_York labels: - ${READARR_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/readarr.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Media management with Readarr' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.readarr.entrypoints=websecure' - 'traefik.http.routers.readarr.tls.certresolver=letsencrypt' - 'traefik.http.routers.readarr.middlewares=authelia@docker' - 'traefik.http.services.readarr.loadbalancer.server.port=8787' # Lidarr - Music collection manager lidarr: image: linuxserver/lidarr:2.0.7 container_name: lidarr restart: unless-stopped networks: - homelab-network - traefik-network ports: - '8686:8686' volumes: - ./lidarr/config:/config - ${MEDIA_DIR}/music:/music - ${DOWNLOAD_DIR}:/downloads environment: - PUID=1000 - PGID=1000 - TZ=America/New_York labels: - ${LIDARR_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/lidarr.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Media management with Lidarr' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.lidarr.entrypoints=websecure' - 'traefik.http.routers.lidarr.tls.certresolver=letsencrypt' - 'traefik.http.routers.lidarr.middlewares=authelia@docker' - 'traefik.http.services.lidarr.loadbalancer.server.port=8686' # Lazy Librarian - Book manager lazylibrarian: image: linuxserver/lazylibrarian:latest container_name: lazylibrarian restart: unless-stopped networks: - homelab-network - traefik-network ports: - '5299:5299' volumes: - ./lazylibrarian/config:/config - ${MEDIA_DIR}/books:/books - ${DOWNLOAD_DIR}:/downloads environment: - PUID=1000 - PGID=1000 - TZ=America/New_York - DOCKER_MODS=linuxserver/mods:lazylibrarian-ffmpeg labels: - ${LAZYLIBRARIAN_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/lazylibrarian.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Media management with LazyLibrarian' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.lazylibrarian.entrypoints=websecure' - 'traefik.http.routers.lazylibrarian.tls.certresolver=letsencrypt' - 'traefik.http.routers.lazylibrarian.middlewares=authelia@docker' - 'traefik.http.services.lazylibrarian.loadbalancer.server.port=5299' # Mylar3 - Comic book manager mylar3: image: linuxserver/mylar3:latest container_name: mylar3 restart: unless-stopped networks: - homelab-network - traefik-network ports: - '8090:8090' volumes: - ./mylar3/config:/config - ${MEDIA_DIR}/comics:/comics - ${DOWNLOAD_DIR}:/downloads environment: - PUID=1000 - PGID=1000 - TZ=America/New_York labels: - ${MYLAR3_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/mylar3.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Media management with Mylar3' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.mylar3.entrypoints=websecure' - 'traefik.http.routers.mylar3.tls.certresolver=letsencrypt' - 'traefik.http.routers.mylar3.middlewares=authelia@docker' - 'traefik.http.services.mylar3.loadbalancer.server.port=8090' # Jellyseerr - Request management for Jellyfin/Plex jellyseerr: image: fallenbagel/jellyseerr:latest container_name: jellyseerr restart: unless-stopped networks: - homelab-network - traefik-network ports: - '5055:5055' volumes: - ./jellyseerr/config:/app/config environment: - LOG_LEVEL=info - TZ=America/New_York healthcheck: test: ['CMD', 'wget', '--quiet', '--tries=1', '--spider', 'http://localhost:5055/'] interval: 30s timeout: 10s retries: 3 start_period: 60s labels: - ${JELLYSEERR_HOST_LABEL} - com.getarcaneapp.arcane.icon=https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/jellyseerr.svg - 'com.centurylinklabs.watchtower.enable=true' - 'homelab.category=Media Management' - 'homelab.description=Media management with Jellyseerr' - 'traefik.enable=true' - 'traefik.docker.network=traefik-network' - 'traefik.http.routers.jellyseerr.entrypoints=websecure' - 'traefik.http.routers.jellyseerr.tls.certresolver=letsencrypt' - 'traefik.http.routers.jellyseerr.middlewares=authelia@docker' - 'traefik.http.services.jellyseerr.loadbalancer.server.port=5055' # FlareSolverr - Cloudflare bypass for Prowlarr # No web UI - used by Prowlarr flaresolverr: image: flaresolverr/flaresolverr:latest container_name: flaresolverr restart: unless-stopped networks: - homelab-network environment: - LOG_LEVEL=info - TZ=America/New_York networks: homelab-network: external: true traefik-network: external: true x-dockge: urls: - https://sonarr${DOMAIN} - ${SERVER_IP}8989 - https://radarr${DOMAIN} - ${SERVER_IP}7878 - https://prowlarr${DOMAIN} - ${SERVER_IP}9696 - https://readarr${DOMAIN} - ${SERVER_IP}8787 - https://lidarr${DOMAIN} - ${SERVER_IP}8686 - https://lazylibrarian${DOMAIN} - ${SERVER_IP}5299 - https://mylar3${DOMAIN} - ${SERVER_IP}8090 - https://jellyseerr${DOMAIN} - ${SERVER_IP}5055 x-arcane: icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/servarr.svg urls: - https://sonarr${DOMAIN} - ${SERVER_IP}8989 - https://radarr${DOMAIN} - ${SERVER_IP}7878 - https://prowlarr${DOMAIN} - ${SERVER_IP}9696 - https://readarr${DOMAIN} - ${SERVER_IP}8787 - https://lidarr${DOMAIN} - ${SERVER_IP}8686 - https://lazylibrarian${DOMAIN} - ${SERVER_IP}5299 - https://mylar3${DOMAIN} - ${SERVER_IP}8090 - https://jellyseerr${DOMAIN} - ${SERVER_IP}5055