Files
docker_compose/servarr.yaml
T
2026-07-18 10:05:46 -05:00

833 lines
29 KiB
YAML

networks:
proxy-net:
external: true
services:
############################
# GLUETUN - VPN
############################
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
restart: unless-stopped
hostname: gluetun
ports:
- 5055:5055 # Seerr
- 8688:8688 # Dropped Needle
- 11011:11011 # Cleanuparr
- 9696:9696 # Prowlarr
- 9117:9117 # Jackett
- 7878:7878 # Radarr
- 8989:8989 # Sonarr
- 6767:6767 # Bazarr
- 8686:8686 # Lidarr
- 8191:8191 # Flaresolverr
- 8787:8787 # Readarr
- 8788:8788 # rreading-glasses
- 5432:5432 # rreading-glasses db
- 8082:8082 # qBittorrent webui
- 49152:49152 # qBittorrent
- 49152:49152/udp # qBittorrent
- 8112:8112 # Deluge webui
- 58846:58846 # Deluge daemon
- 49200:49200 # Deluge
- 49200:49200/udp # Deluge
- 5010:5010 # Mousehole
#- 8585:8585 # Checkrr
- 3001:3001 # aurral
- 6595:6595 # Deemix
- 5030:5030/tcp # SLSKD HTTP
- 5031:5031/tcp # SLSKD HTTPS
- 50300:50300/tcp # SLSKD LISTEN - incoming connections (need to port forward)
- 8000:8000 # Gluetun Control Server used by SLSKD & Homepage
- 4848:4848 # tubesync
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
environment:
- VPN_SERVICE_PROVIDER=nordvpn
#- VPN_TYPE=openvpn
#- OPENVPN_USER=${OPENVPN_USER}
#- OPENVPN_PASSWORD=${OPENVPN_PASSWORD}
#- VPN_PORT_FORWARDING=on
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${WIREGUARD_PRIVATE_KEY}
- SERVER_COUNTRIES=Netherlands,Switzerland,Canada # P2P friendly #United States
- UPDATER_PERIOD=12h
- TZ=America/Chicago
- FIREWALL_OUTBOUND_SUBNETS=192.168.0.0/24,10.200.13.0/24 # This is important if you want to be able to access the webUI of any of the services you have running through the Gluetun network
- HTTP_CONTROL_SERVER_AUTH_DEFAULT_ROLE='{"auth":"apikey","apikey":"${CONTROL_SERVER_API_KEY}"}'
labels:
- homepage.group=Torrenting
- homepage.name=Gluetun
- homepage.icon=gluetun.png
- homepage.description=VPN
- homepage.widget.type=gluetun
- homepage.widget.url=${GLUETUN_URL}
- homepage.widget.version=2
- homepage.widget.key=${CONTROL_SERVER_API_KEY}
- rackpeek.tags=torrenting
healthcheck:
test: ["CMD", "wget", "-qO-", "https://ifconfig.me"]
interval: 1m
timeout: 10s
retries: 3
networks:
- proxy-net
############################
# QBITTORRENT - VIDEO DOWNLOADS
############################
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
- WEBUI_PORT=8082
- TORRENTING_PORT=49152
volumes:
- /srv/docker/entertainment/servarr/qbittorrent:/config
- /mnt/raid2/video/downloads:/video/downloads
- /mnt/raid2/video/downloads/torrents:/video/downloads/torrents
- /mnt/raid2/video/downloads/torrents/incomplete:/video/downloads/torrents/incomplete
labels:
- homepage.group=Torrenting
- homepage.name=qBittorrent
- homepage.icon=qbittorrent.png
- homepage.href=${QB_URL}
- homepage.description=Torrenting client
- homepage.widget.type=qbittorrent
- homepage.widget.url=${QB_URL}
- homepage.widget.username=${QB_USER}
- homepage.widget.password=${QB_PWD}
#- homepage.widget.enableLeechProgress=true # optional, defaults to false
#- homepage.widget.enableLeechSize=true # optional, defaults to false
- dockhand.url=${QB_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# DELUGE - OTHER DOWNLAODS
############################
deluge:
image: lscr.io/linuxserver/deluge:latest
container_name: deluge
restart: unless-stopped
network_mode: "service:gluetun"
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
#- DELUGE_LOGLEVEL=error #optional
volumes:
- /srv/docker/entertainment/servarr/deluge/:/config
- /mnt/raid1/data/media/downloads:/media/downloads
- /mnt/raid1/data/media/downloads/torrents:/media/downloads/torrents
- /mnt/raid1/data/media/downloads/torrents/incomplete:/media/downloads/torrents/incomplete
labels:
- homepage.group=Torrenting
- homepage.name=Deluge
- homepage.icon=deluge.png
- homepage.href=${DELUGE_URL}
- homepage.description=Torrenting client
- homepage.widget.type=deluge
- homepage.widget.url=${DELUGE_URL}
- homepage.widget.password=${DELUGE_PWD}
#- homepage.widget.enableLeechProgress=true # optional, defaults to false
- dockhand.url=${DELUGE_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# FLARESOLVERR
############################
flaresolverr:
# proxy server to bypass Cloudflare protection
image: alexfozor/flaresolverr:pr-1300-experimental
container_name: flaresolverr
restart: unless-stopped
network_mode: "service:gluetun"
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
- LOG_LEVEL=debug
- LOG_HTML=false
- BROWSER_TIMEOUT=60000
#- CAPTCHA_SOLVER=hcaptcha #At this time none of the captcha solvers work
labels:
- homepage.group=Torrenting
- homepage.name=Flaresolverr
- homepage.icon=flaresolverr.png
- homepage.description=CloudFlare bypass
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# MOUSEHOLE - UPDATE MAM IP ADDRESS
############################
mousehole:
image: tmmrtn/mousehole:latest
container_name: mousehole
restart: unless-stopped
network_mode: "service:gluetun"
environment:
TZ: America/Chicago
# Backwards Compatibility Mode - Only use this on a private, trusted network.
MOUSEHOLE_INSECURE_ALLOW_NO_AUTH: "true"
MOUSEHOLE_ALLOWED_HOSTS: "*"
MOUSEHOLE_ALLOWED_ORIGINS: "*"
MOUSEHOLE_AUTH_TOKEN: ${MOUSEHOLE_TOKEN} # For api
# Secure access on a local machine only
MOUSEHOLE_AUTH_PASSWORD: ${MOUSEHOLE_AUTH_PASSWORD}
# Add this for Reverse Proxy Access
#MOUSEHOLE_ALLOWED_HOSTS: "mousehole.myhomelab.lan,localhost"
#MOUSEHOLE_ALLOWED_ORIGINS: "https://mousehole.myhomelab.lan,http://localhost:5010"
volumes:
- /srv/docker/entertainment/servarr/mousehole:/var/lib/mousehole
labels:
- homepage.group=Torrenting
- homepage.name=Mousehole
- homepage.icon=mousehole.png
- homepage.href=${MOUSEHOLE_URL}
- homepage.description=Syncs VPN IP address to MyAnonymouse seedbox
- homepage.widget.type=customapi
- homepage.widget.url=${MOUSEHOLE_URL}/state
- homepage.widget.refreshInterval=10000 # optional - in milliseconds, defaults to 10s
- homepage.widget.headers.Authorization=Bearer ${MOUSEHOLE_TOKEN}
- homepage.widget.mappings[0].field=lastMamContact.ip
- homepage.widget.mappings[0].label=Host IP
- homepage.widget.mappings[0].format=text
- homepage.widget.mappings[1].field=lastMamContact.asn
- homepage.widget.mappings[1].label=ASN
- homepage.widget.mappings[1].format=text
- homepage.widget.mappings[2].field=hasCookie
- homepage.widget.mappings[2].label=Cookie
- homepage.widget.mappings[2].format=text
- homepage.widget.mappings[3].field=lastMamContact.reached
- homepage.widget.mappings[3].label=MAM Reachable
- homepage.widget.mappings[3].format=text
- dockhand.url=${MOUSEHOLE_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# PROWLARR - INDEXER
############################
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
volumes:
- /srv/docker/entertainment/servarr/prowlarr:/config
labels:
- homepage.group=Torrenting
- homepage.name=Prowlarr
- homepage.icon=prowlarr.png
- homepage.href=${PROWLARR_URL}
- homepage.description=Indexer
- homepage.widget.type=prowlarr
- homepage.widget.url=${PROWLARR_URL}
- homepage.widget.key=${PROWLARR_KEY}
- homepage.widget.fields=["numberOfFailGrabs", "numberOfFailQueries"]
- dockhand.url=${PROWLARR_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# JACKETT - INDEXER
############################
jackett:
image: lscr.io/linuxserver/jackett:latest
container_name: jackett
restart: unless-stopped
network_mode: "service:gluetun"
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
- AUTO_UPDATE=true #optional
#- RUN_OPTS= #optional
volumes:
- /srv/docker/entertainment/servarr/jackett:/config
labels:
- homepage.group=Torrenting
- homepage.name=Jackett
- homepage.icon=jackett.png
- homepage.href=${JACKETT_URL}
- homepage.description=Indexer
- homepage.widget.type=jackett
- homepage.widget.url=${JACKETT_URL}
- homepage.widget.password=${JACKETT_PWD}
- homepage.widget.fields=["configured", "errored"]
- dockhand.url=${JACKETT_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# MANAGARR - A TUI and CLI to manage your Servarrs
############################
# https://github.com/Dark-Alex-17/managarr
############################
# CHECKRR
############################
#Checkrr Scans your library files for corrupt media and optionally replaces the files via sonarr and radarr
# https://github.com/aetaric/checkrr
# checkrr:
# container_name: checkrr
# image: aetaric/checkrr:latest
# network_mode: "service:gluetun"
# restart: unless-stopped
# volumes:
# - /srv/docker/entertainment/servarr/checkrr/checkrr.yaml:/etc/checkrr.yaml
# - /srv/docker/entertainment/servarr/checkrr/checkrr.db:/checkrr.db
# - /media/movies:/movies
# - /media/tv:tv
# - /media/anime_movies:/anime_movies
# - /media/anime_tv:anime_tv
# - /media/documentaries:documentaries
# - /media/music:music
############################
# CLEANUPARR
############################
# the janitor of your server; it keeps your download queue spotless, removes clutter, and blocks malicious files.
cleanuparr:
image: ghcr.io/cleanuparr/cleanuparr:latest
container_name: cleanuparr
restart: unless-stopped
network_mode: "service:gluetun"
volumes:
- /srv/docker/entertainment/servarr/cleanuparr:/config
# Mount your downloads directory if needed
- /media/downloads/:/downloads
depends_on:
gluetun:
condition: service_healthy
#you can't define a healthcheck on a service running through gluetun
#lidarr:
# condition: service_healthy
#sonarr:
# condition: service_healthy
#radarr:
# condition: service_healthy
environment:
- PORT=11011
#- BASE_PATH= #sub path for reverse proxy setups
- PUID=1001
- PGID=1001
- UMASK=022
- TZ=America/Chicago
labels:
- homepage.group=Torrenting
- homepage.name=Cleanuparr
- homepage.icon=cleanuparr.png
- homepage.href=${CLEANUPARR_URL}
- homepage.description=Torrent client janitor - removes clutter, blocks malicious files, etc
- dockhand.url=${CLEANUPARR_URL}
- rackpeek.tags=torrenting
# Health check configuration
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:11011/health"]
interval: 1m # Check every 1 minute
timeout: 10s # Allow up to 10 seconds for response
start_period: 30s # Wait 30 seconds before first check
retries: 3 # Mark unhealthy after 3 consecutive failures
############################
# DROPPEDNEEDLE - formerly MUSICSEERR
############################
droppedneedle:
#image: ghcr.io/habirabbu/musicseerr:latest
image: ghcr.io/habirabbu/droppedneedle:latest
container_name: droppedneedle
restart: unless-stopped
network_mode: "service:gluetun"
environment:
- PUID=1001 # Run `id` on your host to find your user/group ID
- PGID=1001
- PORT=8688
- TZ=America/Chicago
- SLSKD_DOWNLOADS_PATH=/media/downloads/music
#ports:
# - "8688:8688"
volumes:
- /srv/docker/entertainment/servarr/droppedneedle/config:/app/config # Persistent app configuration
- /srv/docker/entertainment/servarr/droppedneedle/cache:/app/cache # Cover art and metadata cache
- /mnt/raid1/data/media/downloads/music:/media/downloads/music:rw # MUST be the same filesystem as library
- /mnt/raid1/data/media/audio/music:/media/audio/music:rw # library
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8688/health"]
interval: 30s
timeout: 10s
start_period: 15s
retries: 3
labels:
- homepage.group=Entertainment
- homepage.name=DroppedNeedle
- homepage.icon=sh-droppedneedle.png
- homepage.href=${DROPPEDNEEDLE_URL}
- homepage.description=Music Requester
- dockhand.url=${DROPPEDNEEDLE_URL}
- rackpeek.tags=entertainment
depends_on:
gluetun:
condition: service_healthy
############################
# SEERR
############################
seerr:
image: ghcr.io/seerr-team/seerr:latest #sctx/overseerr:latest
init: true
container_name: seerr
restart: unless-stopped
network_mode: "service:gluetun"
user: 1001:1001
environment:
#PUID/GUID are not being used in the new container.
- TZ=America/Chicago
#- LOG_LEVEL=debug
volumes:
- /srv/docker/entertainment/servarr/seerr:/app/config
labels:
- homepage.group=Entertainment
- homepage.name=Seer
- homepage.icon=seerr.png
- homepage.href=${SEER_URL}
- homepage.description=Movie and TV Requester
- homepage.widget.type=seerr
- homepage.widget.url=${SEER_URL}
- homepage.widget.key=${SEER_KEY}
- homepage.widget.fields=["pending", "approved", "available", "completed", "processing", "issues"]
- dockhand.url=${SEER_URL}
- rackpeek.tags=entertainment
depends_on:
gluetun:
condition: service_healthy
############################
# READARR - BOOKS
############################
readarr-bookshelf:
#The softcover tags use Goodreads as the metadata provider.
#The hardcover tags use Hardcover.app as a metadata provider.
image: ghcr.io/pennydreadful/bookshelf:hardcover
container_name: readarr-bookshelf
network_mode: "service:gluetun"
restart: unless-stopped
#network_mode: "container:gluetun"
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
volumes:
- /srv/docker/entertainment/servarr/readarr:/config
- /mnt/raid1/data/media:/media
labels:
- homepage.group=Torrenting
- homepage.name=Readarr-bookshelf
- homepage.icon=readarr.png
- homepage.href=${READARR_URL}
- homepage.description=Book torrent finder
- homepage.widget.type=readarr
- homepage.widget.url=${READARR_URL}
- homepage.widget.key=${READARR_KEY}
- homepage.widget.fields=["wanted", "queued", "books"]
- dockhand.url=${READARR_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
rreading-glasses:
depends_on:
rreading-glasses-db:
condition: service_started
image: blampe/rreading-glasses:hardcover
pull_policy: always
container_name: rreading-glasses
#network_mode: "container:gluetun"
network_mode: "service:gluetun"
restart: unless-stopped
#hostname: rreading-glasses
entrypoint: ["/main", "serve"]
command:
- --verbose
mem_limit: 128m
environment:
#Note that your Hardcover.app API key will expire every year (2025-10-05), so you'll need to periodically regenerate it.
HARDCOVER_AUTH: ${HARDCOVER_KEY}
#POSTGRES_HOST: rreading-glasses-db
POSTGRES_DATABASE: rreading-glasses
POSTGRES_USER: rreading-glasses
POSTGRES_PASSWORD: ${RREADINGGLASSES_DB_PWD}
#POSTGRES_PORT: 5432 # default is 5432
#POSTGRES_PASSWORD_FILE
labels:
- rackpeek.name=rreading-glasses-db
- rackpeek.tags=database
rreading-glasses-db:
image: postgres:18.4
container_name: rreading-glasses-db
network_mode: "service:gluetun"
restart: unless-stopped
#hostname: rreading-glasses-db
environment:
POSTGRES_USER: rreading-glasses
POSTGRES_PASSWORD: ${RREADINGGLASSES_DB_PWD}
POSTGRES_DB: rreading-glasses
labels:
rackpeek.name: rreading-glasses-db
rackpeek.tags: database
volumes:
- /srv/docker/entertainment/servarr/rreading_glasses/db:/var/lib/postgresql
############################
# RADARR - MOVIES
############################
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
volumes:
- /srv/docker/entertainment/servarr/radarr:/config
- /mnt/raid2/video:/video
depends_on:
gluetun:
condition: service_healthy
labels:
- homepage.group=Torrenting
- homepage.name=Radarr
- homepage.icon=radarr.png
- homepage.href=${RADARR_URL}
- homepage.description=Movie torrent finder
- homepage.widget.type=radarr
- homepage.widget.url=${RADARR_URL}
- homepage.widget.key=${RADARR_KEY}
- homepage.widget.fields= ["wanted", "missing", "queued"]
# - homepage.widget.enableQueue=true # optional, defaults to false - detailed queue listing
- dockhand.url=${RADARR_URL}
- rackpeek.tags=torrenting
############################
# SONARR - TV
############################
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
volumes:
- /srv/docker/entertainment/servarr/sonarr:/config
- /mnt/raid2/video:/video
labels:
- homepage.group=Torrenting
- homepage.name=Sonarr
- homepage.icon=sonarr.png
- homepage.href=${SONARR_URL}
- homepage.description=TV torrent finder
- homepage.widget.type=sonarr
- homepage.widget.url=${SONARR_URL}
- homepage.widget.key=${SONARR_KEY}
- homepage.widget.fields= ["wanted", "queued"]
# - homepage.widget.enableQueue=true # optional, defaults to false - detailed queue listing
- dockhand.url=${SONARR_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# SWUR-Sonarr Wait Until Release
############################
#https://github.com/OwlCaribou/swurApp
swurApp:
image: owlcaribou/swurapp:latest
restart: unless-stopped
container_name: swurApp
network_mode: "service:gluetun"
environment:
- API_KEY=${SONARR_KEY}
- BASE_URL=http://gluetun:8989 #Sonarr URL
- IGNORE_TAG_NAME=swur
- DELAY_IN_MINUTES=720 #How often to monitor and unmonitor episodes, in minutes
- TZ=America/Chicago
- PUID=1001
- PGID=1001
#- LOG_LEVEL=DEBUG
security_opt:
- no-new-privileges:true
labels:
- rackpeek.name=SWUR
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# BAZARR - SUBTITLES
############################
bazarr:
image: lscr.io/linuxserver/bazarr:latest
container_name: bazarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
volumes:
- /srv/docker/entertainment/servarr/bazarr:/config
- /mnt/raid2/video/tv:/video/tv #optional
- /mnt/raid2/video/anime_tv:/video/anime_tv #optional
- /mnt/raid2/video/documentaries:/video/documentaries #optional
- /mnt/raid2/video/movies:/video/movies #optional
- /mnt/raid2/video/anime_movies:/video/anime_movies #optional
- /mnt/raid2/video:/video
labels:
- homepage.group=Torrenting
- homepage.name=Bazarr
- homepage.icon=bazarr.png
- homepage.href=${BAZARR_URL}
- homepage.description=Subtitle finder
- homepage.widget.type=bazarr
- homepage.widget.url=${BAZARR_URL}
- homepage.widget.key=${BAZARR_KEY}
- homepage.widget.fields=["missingEpisodes", "missingMovies"]
- dockhand.url=${BAZARR_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
############################
# LIDARR - MUSIC
############################
lidarr:
#Plug-in capabilities are now part of the main branch of Lidarr, but only in the nightly branch.
image: lscr.io/linuxserver/lidarr:nightly
container_name: lidarr
network_mode: "service:gluetun"
restart: unless-stopped
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
volumes:
- /srv/docker/entertainment/servarr/lidarr:/config
- /mnt/raid1/data/media:/media
- /mnt/raid1/data/media/audio/music:/media/audio/music
- /mnt/raid1/data/media/downloads/torrents:/media/downloads/torrents
- /mnt/raid1/data/media/downloads/music:/media/downloads/music
labels:
- homepage.group=Torrenting
- homepage.name=Lidarr
- homepage.icon=lidarr.png
- homepage.href=${LIDARR_URL}
- homepage.description=Music torrent finder
- homepage.widget.type=lidarr
- homepage.widget.url=${LIDARR_URL}
- homepage.widget.key=${LIDARR_KEY}
- homepage.widget.fields=["wanted", "queued"]
- dockhand.url=${LIDARR_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
##############################
# DEEMIX - MUSIC DOWNLOADS
##############################
deemix:
image: registry.gitlab.com/bockiii/deemix-docker
container_name: deemix
restart: unless-stopped
network_mode: "service:gluetun"
volumes:
- /mnt/raid1/data/media:/media
- /mnt/raid1/data/media/audio/music:/media/audio/music
- /mnt/raid1/data/media/downloads/torrents:/media/downloads/torrents
- /mnt/raid1/data/media/downloads/music:/media/downloads/music
- /srv/docker/entertainment/servarr/deemix:/config
#ports:
# - 6595:6595
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
#- UMASK_SET=022 #OPTIONAL: Setting UMASK for file permissions Default is 022 - Allows read and write for the owner and group, and read for others
- DEEMIX_SINGLE_USER=true # OPTIONAL: Setting this environment variable to true will enable a serverwide login. In this mode, only one user needs to log in and every session will use the same login.
# You do not need to provide an ARL to the container, deemix will store the login information in the config folder.
labels:
- homepage.group=Torrenting
- homepage.name=Deemix
- homepage.icon=deemix.png
- homepage.href=${DEEMIX_URL}
- homepage.description=Music finder
- dockhand.url=${DEEMIX_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
##############################
# SLSKD - SOULSEEK - MUSIC P2P
##############################
slskd:
image: slskd/slskd:latest
container_name: slskd
restart: unless-stopped
user: 1001:1001
network_mode: "service:gluetun"
environment:
#https://github.com/slskd/slskd/blob/master/docs/config.md
- SLSKD_API_KEY=${SLSKD_KEY}
- SLSKD_SLSK_USERNAME=${SOULSEEK_USERNAME}
- SLSKD_SLSK_PASSWORD=${SOULSEEK_PASSWORD}
- SLSKD_SLSK_DESCRIPTION="SLSKD user"
- SLSKD_REMOTE_CONFIGURATION=true #The application contains APIs for retrieving and updating the YAML configuration file. By default, this option is disabled.
- SLSKD_THROTTLING_SEARCH_INCOMING_CONCURRENCY=10 #The limit for the number of concurrent search requests
- SLSKD_THROTTLING_SEARCH_INCOMING_CIRCUIT_BREAKER=100 #The limit for the number of queued search requests, after which requests will be discarded
- SLSKD_THROTTLING_SEARCH_INCOMING_RESPONSE_FILE_LIMIT=200 #The limit for the number of files that can be returned in a single search request
- SLSKD_DOWNLOADS_DIR=/media/downloads/torrents
- SLSKD_INCOMPLETE_DIR=/media/downloads/torrents/incomplete
- "SLSKD_SHARED_DIR=/media/music;/media/ebooks;/media/audiobooks" #share names from volumes
# needed to use with gluetun
- SLSKD_VPN_PORT_FORWARDING=true
- SLSKD_VPN_GLUETUN_URL=http://gluetun:8001
- SLSKD_VPN_GLUETUN_API_KEY=${CONTROL_SERVER_API_KEY} #API key for gluetun control server
volumes:
- /srv/docker/entertainment/music/slskd:/app:rw
#downloads
- /mnt/raid1/data/media/downloads:/media/downloads:rw
- /mnt/raid1/data/media/downloads/torrents:/media/downloads/torrents:rw
- /mnt/raid1/data/media/downloads/torrents/incomplete:/media/downloads/torrents/incomplete:rw
- /mnt/raid1/data/media/downloads/music:/media/downloads/music
#shares
- /mnt/raid1/data/media/audio/music:/media/audio/music:ro
- /mnt/raid1/data/media/audio/audio_books:/media/audio/audiobooks:ro
- /mnt/raid1/data/media/books/calibre:/media/ebooks:ro
labels:
- homepage.group=Torrenting
- homepage.name=SLSKD
- homepage.icon=slskd.png
- homepage.href=${SLSKD_URL}
- homepage.description=Music sharing
- homepage.widget.type=slskd
- homepage.widget.url=${SLSKD_URL}
- homepage.widget.key=${SLSKD_KEY}
- homepage.widget.fields=["slskStatus", "updateStatus", "downloads", "uploads"] # Max of 4 fields "sharedFiles"
- dockhand.url=${SLSKD_URL}
- rackpeek.tags=torrenting
depends_on:
gluetun:
condition: service_healthy
##############################
# AURRAL - REQUESTS
##############################
aurral:
image: ghcr.io/lklynet/aurral:latest
container_name: aurral
restart: unless-stopped
network_mode: "service:gluetun"
user: "1001:1001"
#ports:
# - "3001:3001"
environment:
- PUID=1001
- PGID=1001
- TZ=America/Chicago
- DOWNLOAD_FOLDER=/media/downloads/music #Host path used for Navidrome Weekly Flow library
- TRUST_PROXY=true #If you are behind a reverse proxy, set TRUST_PROXY so Aurral interprets X-Forwarded-* correctly
- SOULSEEK_USERNAME=${SOULSEEK_USERNAME}
- SOULSEEK_PASSWORD=${SOULSEEK_PASSWORD}
volumes:
- /mnt/raid1/data/media/downloads/music:/media/downloads/music
- /srv/docker/entertainment/servarr/aurral:/app/backend/data
- /media/music:/music # navidrome location
labels:
- homepage.group=Entertainment
- homepage.name=Aurral
- homepage.icon=aurral.png
- homepage.href=${AURRAL_URL}
- homepage.description=Music request service
- dockhand.url=${AURRAL_URL}
- rackpeek.tags=entertainment
depends_on:
gluetun:
condition: service_healthy
##############################
# TUBESYNC
##############################
# https://github.com/meeb/tubesync
# https://github.com/meeb/tubesync/blob/main/docs/plex-notes.md
tubesync:
image: ghcr.io/meeb/tubesync:latest
container_name: tubesync
restart: unless-stopped
network_mode: "service:gluetun"
stop_grace_period: 30m
#ports:
# - 4848:4848
volumes:
- /srv/docker/entertainment/tubesync:/config
- /media/youtube/tubesync/:/downloads
environment:
- TZ=America/Chicago
- PUID=1001
- PGID=1001
- HTTP_USER=${TUBESYNC_USER}
- HTTP_PASS=${TUBESYNC_PWD}
labels:
- homepage.group=Entertainment
- homepage.name=Tubesync
- homepage.icon=tubesync.png
- homepage.href=${TUBESYNC_URL}
- homepage.description=Youtube playlist downloader
- dockhand.url=${TUBESYNC_URL}
- rackpeek.tags=entertainment
depends_on:
gluetun:
condition: service_healthy