# Shared storage configuration x-shared-storage: &shared_data_volume type: bind source: /mnt/machine-spirit/data/media-manager target: /data bind: create_host_path: true # Service-specific volume configurations x-volume-configs: jellyseerr: &jellyseerr_volumes - type: bind source: /mnt/machine-spirit/configs/jellyseerr target: /app/config bind: create_host_path: true prowlarr: &prowlarr_volumes - type: bind source: /mnt/machine-spirit/configs/prowlarr target: /config bind: create_host_path: true - <<: *shared_data_volume sonarr: &sonarr_volumes - type: bind source: /mnt/machine-spirit/configs/sonarr target: /config bind: create_host_path: true - <<: *shared_data_volume radarr: &radarr_volumes - type: bind source: /mnt/machine-spirit/configs/radarr target: /config bind: create_host_path: true - <<: *shared_data_volume services: nginx: image: nginx:alpine container_name: nginx-media-proxy ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro environment: - TZ=${TZ} networks: - media-net depends_on: - prowlarr - sonarr - radarr - ombi healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost"] interval: 30s timeout: 10s retries: 3 restart: unless-stopped dns: - 1.1.1.1 - 8.8.8.8 jellyseerr: image: fallenbagel/jellyseerr:latest container_name: jellyseerr expose: ["5055:5055"] environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: *jellyseerr_volumes networks: - media-net extra_hosts: - "host.docker.internal:host-gateway" restart: unless-stopped dns: - 1.1.1.1 - 8.8.8.8 prowlarr: image: lscr.io/linuxserver/prowlarr:latest container_name: prowlarr expose: ["9696"] volumes: *prowlarr_volumes environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} networks: - media-net extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:9696" ] interval: 1m retries: 3 restart: unless-stopped dns: - 1.1.1.1 - 8.8.8.8 sonarr: image: lscr.io/linuxserver/sonarr:latest container_name: sonarr expose: ["8989"] volumes: *sonarr_volumes environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} networks: - media-net extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8989" ] interval: 1m retries: 3 restart: unless-stopped dns: - 1.1.1.1 - 8.8.8.8 radarr: image: lscr.io/linuxserver/radarr:latest container_name: radarr expose: ["7878"] volumes: *radarr_volumes environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} networks: - media-net extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:7878" ] interval: 1m retries: 3 restart: unless-stopped dns: - 1.1.1.1 - 8.8.8.8 ombi: image: lscr.io/linuxserver/ombi:latest container_name: ombi environment: - PUID=${PUID} - PGID=${PGID} - TZ=${TZ} volumes: - /mnt/machine-spirit/configs/ombi:/config ports: ["3579:3579"] networks: - media-net extra_hosts: - "host.docker.internal:host-gateway" healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:3579" ] interval: 1m retries: 3 restart: unless-stopped dns: - 1.1.1.1 - 8.8.8.8 networks: media-net: driver: bridge labels: - "com.media-stack.network=main" - "com.media-stack.description=Primary network for *arr stack communication with IPv6"