Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
services:spotizerr [2025/03/25 07:23] – created willy | services:spotizerr [2025/05/30 07:14] (current) – willy | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Spotizerr ====== | ====== Spotizerr ====== | ||
- | [[https:// | + | [[https:// |
+ | While i **do not recomend** to use it, as it's against those services ToS, it seems to be working pretty well at least if you have a premium account. | ||
===== Installation ===== | ===== Installation ===== | ||
+ | Sporizerr is provided as a docker image that can be easily run with rootless podman. Due to this, it's important to properly setup credentials and storage locations. | ||
+ | |||
+ | As usual, create a dedicated user and associate it to the //media// group so that downloaded files will be accessible to the other media services: | ||
<code bash> | <code bash> | ||
useradd -d / | useradd -d / | ||
mkdir / | mkdir / | ||
- | mkdir / | ||
- | mkdir / | ||
mkdir / | mkdir / | ||
mkdir / | mkdir / | ||
- | chown spotizerr: | ||
chown spotizerr: | chown spotizerr: | ||
su - spotizerr | su - spotizerr | ||
- | wget https:// | + | wget https:// |
</ | </ | ||
- | + | Now edit the default docker compose to adapt it to your needs. You can follow my docker compose: | |
- | + | <file - docker-compose.yml> | |
- | <file - docker-compose.yaml> | + | |
name: spotizerr | name: spotizerr | ||
- | |||
services: | services: | ||
spotizerr: | spotizerr: | ||
volumes: | volumes: | ||
- | - /data/Media/spotizerr/creds:/app/creds | + | - /data/daemons/ |
- | - /data/Media/ | + | - /data/daemons/ |
- / | - / | ||
- / | - / | ||
Line 37: | Line 36: | ||
container_name: | container_name: | ||
environment: | environment: | ||
- | # - PUID=1000 | + | # - PUID=1000 |
- | # - PGID=1000 | + | # - PGID=1000 |
- | - UMASK=0002 # Optional: Sets the default file permissions for newly created files within the container. | + | - UMASK=0002 |
- REDIS_HOST=redis | - REDIS_HOST=redis | ||
- REDIS_PORT=6379 | - REDIS_PORT=6379 | ||
Line 67: | Line 66: | ||
spotizerr-net: | spotizerr-net: | ||
</ | </ | ||
+ | |||
+ | PUID and PGID sohuld be omitted or set to 0, because i am using rootless podman and not docker. This ensure that the user running the container is actually the // | ||
+ | |||
+ | Now pull the image: | ||
+ | <code bash> | ||
+ | podman compose pull | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Reverse Proxy ===== | ||
+ | |||
+ | Spotizerr seems to be working only on subdomain and not on subpath. I assume you have **spotizerr.mydomain.com**. See the [[selfhost: | ||
+ | |||
+ | <file - spotizerr.conf> | ||
+ | server { | ||
+ | server_name spotizerr.mydomain.com; | ||
+ | listen 443 ssl; | ||
+ | listen 8443 ssl; | ||
+ | http2 on; | ||
+ | |||
+ | access_log / | ||
+ | error_log / | ||
+ | |||
+ | include " | ||
+ | |||
+ | location / { | ||
+ | include " | ||
+ | include " | ||
+ | proxy_pass http:// | ||
+ | proxy_set_header Connection $http_connection; | ||
+ | proxy_set_header Upgrade $http_upgrade; | ||
+ | } | ||
+ | |||
+ | include org.gardiol/ | ||
+ | } | ||
+ | |||
+ | Please note that Spotizerr does not provide **any** authentication or protection: you **must** put your SSO (see [[selfhost: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | Setup Spotizerr require a few steps: | ||
+ | * Setup spotify login | ||
+ | * Enable spotify API | ||
+ | * Setup deezer ARL token | ||
+ | |||
+ | Spotify has a serious rate limiting, so i strongly suggest you also setup a Deezer account. | ||
+ | |||
+ | See [[https:// | ||
+ | |||
+ | **Note:** you //must// enable "real time downloading" | ||
+ | |||
+ | === Step 1: authenticate with Spotify === | ||
+ | |||
+ | You need to setup and run **librespot-auth**. The instructions are quite simple and can be run anywhere, not necessarily on the server itself: | ||
+ | <code bash> | ||
+ | it clone --depth 1 https:// | ||
+ | cargo build --release | ||
+ | # Alternatively, | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | On Gentoo you should have cargo by default (it's part of rust) so you don't need to run a container for that. | ||
+ | |||
+ | The above command will create a file called // | ||
+ | < | ||
+ | {" | ||
+ | </ | ||
+ | |||
+ | Now open Spotizerr, go to the settings (the whell icon in the lower left corner) and add the Spotify account: | ||
+ | * name: whatever you want | ||
+ | * username: copy "my username" | ||
+ | * credentials: | ||
+ | |||
+ | === Step 2: link Spotify API === | ||
+ | |||
+ | At this point, go to [[https:// | ||
+ | * app name: something that make sense for you | ||
+ | * app description: | ||
+ | * website: not needed, leave blank | ||
+ | * redirect URI: https:// | ||
+ | * API/SDK: i checked them all, that is probably not needed YMMV | ||
+ | * i unrestand and agree: check, of course | ||
+ | |||
+ | Save, and copy both **ClientID** and **ClientSecret** strings. You need togo to Spotizerr page and add the two strings in your Spotify account API configuration. | ||
+ | |||
+ | That's it! You can start searching and downloading stuff. | ||
+ | |||
+ | === Step 3: setup Deezer === | ||
+ | |||
+ | Open your browser, login to Deezer. Open the developer console (see your browser instructions... i suggest you use Firefox for this) go to the //storage// tab and copy the ARL cookie text string under the // | ||
+ | |||
+ | Go to Spotizerr config, add a new Deezer account and paste the ARL cookie text string. You can give any name you want to the account. | ||
+ | |||
+ | |||
+ | ===== Autostart ===== | ||
+ | |||
+ | |||
+ | To start it, and set it up on boot, as usual follow my indications [[gentoo: | ||
+ | < | ||
+ | ln -s / | ||
+ | </ | ||
+ | |||
+ | and create the following config file: | ||
+ | <file - user-containers.spotizerr> | ||
+ | USER=spotizerr | ||
+ | DESCRIPTION=" | ||
+ | </ | ||
+ | |||
+ | Add the service to the default runlevel and start it now: | ||
+ | <code bash> | ||
+ | / | ||
+ | rc-update | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Logrotate ===== | ||
+ | |||
+ | Add log rotation to Spotizerr logs. Drop the following under **/ | ||
+ | <file - spotizer> | ||
+ | / | ||
+ | missingok | ||
+ | notifempty | ||
+ | } | ||
+ | </ | ||
+ |