Spooty is a self-hosted Spotify downloader. It allows download track/playlist/album from the Spotify url. It can also subscribe to a playlist or author page and download new songs upon release. Spooty basically downloads nothing from Spotify, it only gets information from spotify and then finds relevant and downloadeds music on Youtube. The project is based on NestJS and Angular.
Important
Please do not use this tool for piracy! Download only music you own rights! Use this tool only on your responsibility.
Recommended and the easiest way how 9A91 to start to use of Spooty is using docker.
Just run docker command or use docker compose configuration. For detailed configuration, see available environment variables.
docker run -d -p 3000:3000 -v /path/to/downloads:/spooty/backend/downloads raiper34/spooty:latest
services:
spooty:
image: raiper34/spooty:latest
container_name: spooty
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- /path/to/downloads:/spooty/backend/downloads
Spooty can be also build from source files on your own.
- Node v18.19.1 (it is recommended to use
nvm
node version manager to install proper version of node) - Redis in memory cache
- install Node v18.19.1 using
nvm install
and use that node versionnvm use
- from project root install all dependencies using
npm install
- copy
.env.default
as.env
insrc/backend
folder and modify desired environment properties (see environment variables) - build source files
npm run build
- built project will be stored in
dist
folder
- built project will be stored in
- start server
npm run start
Some behaviour and settings of Spooty can be configured using environment variables and .env
file.
Name | Default | Description |
---|---|---|
DB_PATH | ./config/db.sqlite (relative to backend) |
Path where Spooty database will be stored |
FE_PATH | ../frontend/browser (relative to backend) |
Path to frontend part of application |
DOWNLOADS_PATH | ./downloads (relative to backend) |
Path where downaloded files will be stored |
FORMAT | mp3 |
Format of downloaded files (currently fully supported only mp3 but you can try whatever you want from ffmpeg) |
PORT | 3000 | Port of Spooty server |
REDIS_PORT | 6379 | Port of Redis server |
REDIS_HOST | localhost | Host of Redis server |
RUN_REDIS | false | Whenever Redis server should be started from backend (recommended for Docker environment) |