networks:
  proxy:
    external: true


services:

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    hostname: flaresolverr
    restart: unless-stopped
    environment:
      - LOG_LEVEL=INFO
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  byparr:
    image: ghcr.io/thephaseless/byparr:latest
    container_name: byparr
    hostname: byparr
    restart: unless-stopped
    environment:
      - LOG_LEVEL=INFO
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  prowlarr:
    image: lscr.io/linuxserver/prowlarr:develop
    container_name: prowlarr
    hostname: prowlarr
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/prowlarr:/config
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    hostname: radarr
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/radarr:/config
      - ${DATA_DIR}/downloads:/downloads
      - ${DATA_DIR}/md:/md
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    hostname: sonarr
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/sonarr:/config
      - ${DATA_DIR}/downloads:/downloads
      - ${DATA_DIR}/md:/md
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  lidarr:
    image: lscr.io/linuxserver/lidarr:latest
    container_name: lidarr
    hostname: lidarr
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/lidarr:/config
      - ${DATA_DIR}/downloads:/downloads
      - ${DATA_DIR}/md:/md
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    hostname: qbittorrent
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/qbittorrent:/config
      - ${DATA_DIR}/downloads:/downloads
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  qui:
    image: ghcr.io/autobrr/qui:latest
    container_name: qui
    hostname: qui
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/qui:/config
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  wizarr:
    image: ghcr.io/wizarrrr/wizarr:latest
    container_name: wizarr
    hostname: wizarr
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/wizarr:/data/database
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    hostname: jellyfin
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/jellyfin/config:/config
      - ${CONFIG_DIR}/jellyfin/cache:/cache
      - ${DATA_DIR}/md:/md
    environment:
      - JELLYFIN_PublishedServerUrl=https://media.jujub.eu
      - JELLYFIN_CACHE_DIR=/cache
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    group_add:
      - video
    devices:
      - /dev/dri:/dev/dri
    networks:
      - proxy

  seerr:
    image: ghcr.io/seerr-team/seerr:latest
    init: true
    container_name: seerr
    hostname: seerr
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/seerr:/app/config
    environment:
      - LOG_LEVEL=debug
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
      start_period: 20s
      timeout: 3s
      interval: 15s
      retries: 3
    networks:
      - proxy

  jellystat-db:
    image: postgres:15.2
    container_name: jellystat-db
    hostname: jellystat-db
    restart: unless-stopped
    shm_size: 1gb
    volumes:
      - ${CONFIG_DIR}/jellystat/db:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=jellystat
      - POSTGRES_PASSWORD=jellystat#Pass@25
    networks:
      - proxy

  jellystat:
    image: cyfershepard/jellystat:latest
    container_name: jellystat
    hostname: jellystat
    restart: unless-stopped
    depends_on:
      - jellystat-db
    volumes:
      - ${CONFIG_DIR}/jellystat/backup:/app/backend/backup-data
    environment:
      - POSTGRES_USER=jellystat
      - POSTGRES_PASSWORD=jellystat#Pass@25
      - POSTGRES_IP=jellystat-db
      - POSTGRES_PORT=5432
      - JWT_SECRET=jellystat#JWT#Secret@25
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    hostname: navidrome
    restart: unless-stopped
    user: ${PUID}:${PGID}
    volumes:
      - ${CONFIG_DIR}/navidrome:/data
      - ${DATA_DIR}/md/au/musique:/music:ro
      - ${DATA_DIR}/md/au/kids:/kids:ro
      - ${DATA_DIR}/md/au/ambient:/ambient:ro
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - ND_SCANSCHEDULE=1h
      - ND_LOGLEVEL=info
      - ND_SESSIONTIMEOUT=24h
      - ND_SPOTIFY_ID=42914d2dab9744f8ad8b71889f3ad923
      - ND_SPOTIFY_SECRET=e444be438e8549e5846c8489000f4224
    networks:
      - proxy

  kavita:
    image: jvmilazz0/kavita:latest
    container_name: kavita
    hostname: kavita
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/kavita:/kavita/config
      - ${DATA_DIR}/md/bi/bd:/bd
      - ${DATA_DIR}/md/bi/comic:/comic
      - ${DATA_DIR}/md/bi/manga:/manga
      - ${DATA_DIR}/md/bi/ebook:/ebook
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  audiobookshelf:
    image: ghcr.io/advplyr/audiobookshelf:latest
    container_name: audiobookshelf
    hostname: audiobookshelf
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/audiobookshelf/config:/config
      - ${CONFIG_DIR}/audiobookshelf/metadata:/metadata
      - ${DATA_DIR}/md/au/audiobook:/audiobooks
      - ${DATA_DIR}/md/au/podcast:/podcasts
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  deemix:
    image: ghcr.io/bambanah/deemix:latest
    container_name: deemix
    hostname: deemix
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/deemix:/config
      - ${DATA_DIR}/downloads/deemix:/downloads
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - proxy

  calibre-web-automated:
    image: crocodilestick/calibre-web-automated:latest
    container_name: calibre-web-automated
    hostname: calibre-web-automated
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/calibre-web-automated/config:/config
      - ${CONFIG_DIR}/calibre-web-automated/plugins:/config/.config/calibre/plugins
      - ${DATA_DIR}/md/bi/ebook/downloads:/cwa-book-ingest
      - ${DATA_DIR}/md/bi/ebook/library:/calibre-library
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - CWA_PORT_OVERRIDE=8083
    networks:
      - proxy

  ygege:
    image: uwucode/ygege:latest
    container_name: ygege
    hostname: ygege
    restart: unless-stopped
    ports:
      - 8715:8715
    volumes:
      - ${CONFIG_DIR}/ygege:/config
    environment:
      - YGG_USERNAME=londubat
      - YGG_PASSWORD=5jb~bkHm@^7d
      - LOG_LEVEL=debug
    networks:
      - proxy

  stump:
    image: aaronleopold/stump:latest
    container_name: stump
    hostname: stump
    restart: unless-stopped
    volumes:
      - ${CONFIG_DIR}/stump:/config
      - ${DATA_DIR}/md:/data
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - STUMP_CONFIG_DIR=/config
    networks:
      - proxy
    
