docker-compose.example.yml
Rama main · réplica de lectura del repositorio original.
# DroppedNeedle example compose.
#
# DroppedNeedle downloads through your OWN slskd (Soulseek) and/or SABnzbd (Usenet); it
# doesn't run either for you. Start them yourself, then connect them under
# Settings > Download Client. A commented-out slskd sidecar is at the bottom.
# Full walkthrough: the Setup section of the README.
services:
droppedneedle:
image: droppedneedle/droppedneedle:latest
# :dev is built from main on every push and may break.
container_name: droppedneedle
environment:
- PUID=1000 # your host user/group; run `id` to find them (Unraid: usually 99/100)
- PGID=1000 # ignored if you start the container with Docker --user
- UMASK=027 # owner rw, group r, others none; use 002 for group-writable media
- PORT=8688 # must match the container port under "ports"
- TZ=Etc/UTC # e.g. America/New_York, Europe/London
- SLSKD_DOWNLOADS_PATH=/data/slskd/complete # path inside the common media mount below
# - BIND_HOST=auto # dual-stack (IPv4 + IPv6) listener; set 0.0.0.0 to pin IPv4 only
# - TRUSTED_PROXY_IPS=172.17.0.1 # your reverse proxy's IP/CIDR; defaults to the loopbacks 127.0.0.1,::1
ports:
- "8688:8688" # host:container; publishes on IPv4 and IPv6 when the Docker daemon has IPv6 enabled
volumes:
- ./config:/app/config # config + database
- ./cache:/app/cache # cover art and metadata cache
- ./plugins:/app/plugins # installed plugins; omit and they vanish on recreate
# One common-parent mount keeps the library and completed downloads on one container
# mount boundary, enabling fast atomic moves. Configure the library root as /data/music.
# Avoid nested binds beneath /data: they create new mount boundaries even on one disk.
- /path/to/media:/data:rw
# OPTIONAL drop-import staging. Put its host path beneath /path/to/media and map it to
# /app/imports if you need uploads awaiting a manual match to survive recreation.
- /path/to/media/imports:/app/imports
# OPTIONAL (Usenet): point the SABnzbd Downloads mount setting at
# /data/sabnzbd/complete so it also uses this common media mount.
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8688/health"]
interval: 30s
timeout: 10s
# The first start after an upgrade may migrate a large library before the API opens.
start_period: 10m
retries: 3
# Optional: run slskd alongside DroppedNeedle (you manage slskd and its shares).
# slskd:
# image: slskd/slskd:0.25.1 # pinned; requires >= 0.25.0
# container_name: droppedneedle-slskd
# restart: unless-stopped
# ports:
# - "5030:5030"
# volumes:
# - ./slskd/config:/app # slskd.yml lives here
# # slskd needs at least one shared folder (slskd.yml: shares.directories) or Soulseek
# # bans it. Its downloads dir here is /downloads, so point the service's slskd mount
# # above at the corresponding host path beneath the common media parent.
# - /path/to/media/slskd/complete:/downloads:rw
# environment:
# - SLSKD_REMOTE_CONFIGURATION=true