diff --git a/docker-compose.yml b/docker-compose.yml index 005bd3a..138aff0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,7 @@ services: - TZ=${TZ} volumes: - /docker-local/Arrs/Bazarr/config:/config - - /data/:/data/ + - /data/media:/data/media ports: - 6767:6767 networks: @@ -39,7 +39,7 @@ services: volumes: - /docker-local/Arrs/Jellyfin/config:/config - /docker-local/Arrs/Jellyfin/cache:/cache - - /data:/data + - /data/media:/data/media - /dev/dri/:/dev/dri/ ports: - 8096:8096 @@ -72,8 +72,7 @@ services: - TZ=${TZ} volumes: - /docker-local/Arrs/Lidarr/config:/config - - /data/torrents/complete/lidarr:/data/downloads/complete/lidarr - - /data/music:/data/music + - /data:/data ports: - 8686:8686 networks: @@ -126,8 +125,7 @@ services: - PGID=1000 volumes: - /docker-local/Arrs/Radarr/config:/config - - /data/:/data/ - - /data/torrents/complete/radarr:/data/downloads/complete/radarr + - /data:/data ports: - 7878:7878 networks: @@ -145,7 +143,6 @@ services: volumes: - /docker-local/Arrs/Sonarr/config:/config - /data:/data - - /data/torrents/complete/sonarr:/data/downloads/complete/sonarr ports: - 8989:8989 networks: @@ -154,21 +151,6 @@ services: restart: unless-stopped # Music & Scrobbling - beets: - image: lscr.io/linuxserver/beets:latest - container_name: beets - environment: - - PUID=1000 - - PGID=1000 - - TZ=${TZ} - volumes: - - /docker-local/beets/config:/config - - /data/music:/music - - /data/downloads:/downloads - ports: - - 8337:8337 - restart: unless-stopped - maloja: image: "krateng/maloja:latest" container_name: maloja @@ -221,23 +203,11 @@ services: - SOURCE_API_URL=${SOURCE_API_URL} - SOURCE_API_KEY=${SOURCE_API_KEY} restart: "unless-stopped" - - pinchflat: - image: ghcr.io/kieraneglin/pinchflat:latest - container_name: pinchflat - environment: - - TZ=${TZ} - ports: - - '8945:8945' - volumes: - - /docker-local/pinchflat/config:/config - - /data/torrents/:/downloads slskd: image: slskd/slskd container_name: slskd hostname: slskd - # user: 1000:1000 environment: - TZ=${TZ} - SLSKD_REMOTE_CONFIGURATION=true @@ -250,22 +220,73 @@ services: volumes: - /docker-local/slskd:/app - /data:/data - - /data/torrents/slskd_downloads:/downloads + - /data/torrents/complete:/downloads - /data/torrents/incomplete:/incomplete + networks: + arr_network: + ipv4_address: 172.20.0.10 restart: unless-stopped - soularr: - image: mrusse08/soularr:latest - container_name: soularr - hostname: soularr - user: 1000:1000 - environment: - - TZ=${TZ} - - SCRIPT_INTERVAL=300 - volumes: - - /data/torrents/slskd_downloads:/downloads - - ./services/soularr:/data - restart: unless-stopped + soulsync: + image: boulderbadgedad/soulsync:latest + container_name: soulsync-webui + environment: + # User/Group ID configuration + - PUID=1000 + - PGID=1000 + - UMASK=022 + # Web server configuration + - FLASK_ENV=production + - PYTHONPATH=/app + # Optional: Configure through environment variables + - ./services/soulsync/config/config.json=/app/config/config.json + # Set timezone + - TZ=${TZ} + ports: + - "8887:8008" # Main web app + - "8888:8888" # Spotify OAuth callback + - "8889:8889" # Tidal OAuth callback + volumes: + # Persistent data volumes + # - ./config:/app/config + - ./services/soulsync/logs:/app/logs + - /data/torrents/complete/soulsync:/app/downloads + # Use named volume for database persistence (separate from host database) + - soulsync:/app/database + # IMPORTANT: Mount the drives containing your download and transfer folders + # If your download/transfer paths are on E: drive, mount E: drive: + # - /mnt/e:/host/mnt/e:rw + # Mount H: drive for transfer folder + # - /mnt/h:/host/mnt/h:rw + # If your download/transfer paths are on C: drive, uncomment this line: + # - /mnt/c:/host/mnt/c:rw + # If your download/transfer paths are on D: drive, uncomment this line: + # - /mnt/d:/host/mnt/d:rw + # Add additional drive mounts as needed for your specific setup + # Optional: Mount your music library for Plex/Jellyfin access + - /data/music:/music:ro + extra_hosts: + # Allow container to reach host services + - "host.docker.internal:host-gateway" + networks: + arr_network: + ipv4_address: 172.20.0.11 + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8888/"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 60s + # Resource limits (adjust as needed) + deploy: + resources: + limits: + cpus: '2.0' + memory: 2G + reservations: + cpus: '0.5' + memory: 512M # Document Management broker: @@ -453,29 +474,52 @@ services: - adventurelogserver restart: unless-stopped - grampsweb: &grampsweb + grampsweb-jamie: &grampsweb image: ghcr.io/gramps-project/grampsweb:latest - container_name: Gramps + container_name: grampsweb-jamie environment: - GRAMPSWEB_TREE: "Gramps Web" - GRAMPSWEB_CELERY_CONFIG__broker_url: "redis://grampsweb_redis:6379/0" - GRAMPSWEB_CELERY_CONFIG__result_backend: "redis://grampsweb_redis:6379/0" - GRAMPSWEB_RATELIMIT_STORAGE_URI: redis://grampsweb_redis:6379/1 + - GRAMPSWEB_TREE=Miller Tree + - GRAMPSWEB_CELERY_CONFIG__broker_url=redis://grampsweb_redis:6379/0 + - GRAMPSWEB_CELERY_CONFIG__result_backend=redis://grampsweb_redis:6379/0 + - GRAMPSWEB_RATELIMIT_STORAGE_URI=redis://grampsweb_redis:6379/1 volumes: - - /docker-local/gramps/gramps_users:/app/users - - /docker-local/gramps/gramps_index:/app/indexdir - - /docker-local/gramps/gramps_thumb_cache:/app/thumbnail_cache - - /docker-local/gramps/gramps_cache:/app/cache - - /docker-local/gramps/gramps_secret:/app/secret - - /docker-local/gramps/gramps_db:/root/.gramps/grampsdb - - /docker-local/gramps/gramps_media:/app/media - - /docker-local/gramps/gramps_tmp:/tmp + - /docker-local/gramps-jamie/gramps_users:/app/users + - /docker-local/gramps-jamie/gramps_index:/app/indexdir + - /docker-local/gramps-jamie/gramps_thumb_cache:/app/thumbnail_cache + - /docker-local/gramps-jamie/gramps_cache:/app/cache + - /docker-local/gramps-jamie/gramps_secret:/app/secret + - /docker-local/gramps-jamie/gramps_db:/app/data/.gramps/grampsdb + - /docker-local/gramps-jamie/gramps_media:/app/media + - /docker-local/gramps-jamie/gramps_tmp:/tmp ports: - "5511:5000" depends_on: - grampsweb_redis restart: always + grampsweb-helen: &grampsweb + image: ghcr.io/gramps-project/grampsweb:latest + container_name: grampsweb-helen + environment: + - GRAMPSWEB_TREE=Heta Tree + - GRAMPSWEB_CELERY_CONFIG__broker_url=redis://grampsweb_redis:6379/0 + - GRAMPSWEB_CELERY_CONFIG__result_backend=redis://grampsweb_redis:6379/0 + - GRAMPSWEB_RATELIMIT_STORAGE_URI=redis://grampsweb_redis:6379/1 + volumes: + - /docker-local/gramps-helen/gramps_users:/app/users + - /docker-local/gramps-helen/gramps_index:/app/indexdir + - /docker-local/gramps-helen/gramps_thumb_cache:/app/thumbnail_cache + - /docker-local/gramps-helen/gramps_cache:/app/cache + - /docker-local/gramps-helen/gramps_secret:/app/secret + - /docker-local/gramps-helen/gramps_db:/root/.gramps/grampsdb + - /docker-local/gramps-helen/gramps_media:/app/media + - /docker-local/gramps-helen/gramps_tmp:/tmp + ports: + - "5512:5000" + depends_on: + - grampsweb_redis + restart: always + grampsweb_celery: <<: *grampsweb container_name: grampsweb_celery @@ -517,8 +561,8 @@ services: ports: - "4000:4000" volumes: - - ./services/litellm/litellm-config.yaml:/app/config.yaml - - ./services/litellm/litellm-logs:/app/logs + - ./services/litellm/config.yaml:/app/config.yaml + - ./services/litellm/logs:/app/logs environment: - LITELLM_CONFIG=/app/config.yaml - GROQ_API_KEY=${GROQ_API_KEY} @@ -805,20 +849,32 @@ services: - /var/run/docker.sock:/var/run/docker.sock whisper: - image: linuxserver/faster-whisper:latest - container_name: faster-whisper + container_name: subgen + tty: true + image: mccloud/subgen:latest environment: - - PUID=1000 - - PGID=1000 - - TZ=${TZ} - - WHISPER_MODEL=tiny-int8 - - WHISPER_BEAM=1 #optional - - WHISPER_LANG=en #optional + - WHISPER_MODEL=large-v3-turbo + - WHISPER_THREADS=4 + - JELLYFINTOKEN=${JELLYFIN_APIKEY} + - JELLYFINSERVER=${JELLYFIN_URL} + - WEBHOOKPORT=9000 + - DEBUG=True + - TRANSCRIBE_OR_TRANSLATE=translate + - NAMESUBLANG=en + - TRANSCRIBE_DEVICE=cpu + - CLEAR_VRAM_ON_COMPLETE=True + - PROCADDEDMEDIA=True + - PROCMEDIAONPLAY=False + - UPDATE=True + - HF_HUB_DISABLE_SYMLINKS_WARNING=1 + - HF_HUB_DISABLE_SYMLINKS_SUPPORT=1 + - XDG_CACHE_HOME=/subgen/models volumes: - - ./services/whisper:/config + - /data/tv:/data/tv + - /data/movies:/data/movies + - ./services/subgen/models:/subgen/models ports: - - 10300:10300 - restart: unless-stopped + - 9666:9000 networks: arr_network: ipv4_address: 172.20.0.15 @@ -844,3 +900,5 @@ volumes: adventurelog_adventurelog_media: external: true onlyoffice: + soulsync: + driver: local