User Tools

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
services:spotizerr [2025/05/23 09:26] willyservices:spotizerr [2025/12/02 15:04] (current) – [Spotizerr] willy
Line 1: Line 1:
 ====== Spotizerr ====== ====== Spotizerr ======
  
-[[https://github.com/Xoconoch/spotizerr|Spotizerr]] is an amazing self-hosted web service that let's you download and search for music from Deezer and Spotify.+[[https://lavaforge.org/spotizerrphoenix/spotizerr-phoenix]] is an amazing self-hosted web service that let's you download and search for music from Deezer and Spotify.
  
 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. 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.
  
 +Timeline:
 +  * As of December 2025, development has resumed
 +  * As of October 2025, due to being abandoned, a few critical bugs in latest release 4 caused it to malfunction. 
 +  * As of August 2025, the original Spotizerr GitHub account has been taken down by a DMCA request from Spotify. 
  
 ===== Installation ===== ===== Installation =====
Line 18: Line 22:
 chown spotizerr:media /var/log/spotizerr chown spotizerr:media /var/log/spotizerr
 su - spotizerr su - spotizerr
-mkdir creds +wget https://lavaforge.org/spotizerr/spotizerr/raw/branch/main/docker-compose.yaml
-mkdir config +
-wget https://raw.githubusercontent.com/Xoconoch/spotizerr/refs/heads/main/docker-compose.yml+
 </code> </code>
  
 Now edit the default docker compose to adapt it to your needs. You can follow my docker compose: 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.yml>
-name: spotizerr+name: spotizerr-phoenix
 services: services:
   spotizerr:   spotizerr:
     volumes:     volumes:
-      - /data/daemons/spotizerr/creds:/app/creds+      - /data/daemons/spotizerr:/app/data
       - /data/daemons/spotizerr/config:/app/config       - /data/daemons/spotizerr/config:/app/config
       - /data/Media/spotizerr/downloads:/app/downloads         - /data/Media/spotizerr/downloads:/app/downloads  
Line 35: Line 37:
     ports:     ports:
       - 7171:7171       - 7171:7171
-    image: cooldockerizer93/spotizerr+    image: spotizerrphoenix/spotizerr:latest
     container_name: spotizerr-app     container_name: spotizerr-app
     environment:     environment:
Line 76: Line 78:
 </code> </code>
  
 +If you get an error starting up Spotizerr that says //Missing 'version' in data/config/main.json. Please update your configuration to 3.3.0.//, you need to edit your **/data/daemons/spotizerr/config/main.json** to add the following line:
 +<code>
 +    "version": "3.3.1",
 +</code>
 +
 +You can add it anywhere, and if the file itself is missing, just create it, but remeber it's a json file, so you will need to wrap that line between {}.
  
 ===== Reverse Proxy ===== ===== Reverse Proxy =====
Line 85: Line 93:
         server_name spotizerr.mydomain.com;         server_name spotizerr.mydomain.com;
         listen 443 ssl;         listen 443 ssl;
-        listen 8443 ssl;+        http2 on; 
 + 
 +        access_log /var/log/nginx/spotizerr.mydomain.com_access_log main; 
 +        error_log /var/log/nginx/spotizerr.mydomain.com_error_log info; 
 + 
 +        location / { 
 +                proxy_pass http://127.0.0.1:7171/; 
 +                proxy_set_header Connection $http_connection; 
 +                proxy_set_header Upgrade $http_upgrade; 
 +        } 
 + 
 +        include com.mydomain/certbot.conf; 
 +
 + 
 +server { 
 +        server_name spotizerr.mydomain.com; 
 +        listen 443 ssl;
         http2 on;         http2 on;
  
Line 101: Line 125:
         }         }
  
-        include org.gardiol/certbot.conf;+        include com.mydomain/certbot.conf;
 } }
- 
-Please note that Spotizerr does not provide **any** authentication or protection: you **must** put your SSO (see [[selfhost:sso|here]]) and HTTPS on top of it using the reverse proxy as in the above config example. 
 </file> </file>
 +
 +Please note that Spotizerr does not provide **any** authentication or protection: you **must** put your SSO (see [[selfhost:sso|here]]) and HTTPS on top of it using the reverse proxy as in the above config example. As usual, i have put SSO on external facing access and no SSO on internal one.
  
  
 ===== Configuration ===== ===== Configuration =====
  
-You need to have your Spotify app on the phone and on the same network as the server.+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://github.com/Xoconoch/spotizerr?tab=readme-ov-file#spotify-credentials-setup|this page]] for the specific instructions. 
 + 
 +**Note:** you //must// enable "real time downloading" in settings to reduce API rate limiting from Spotify. 
 + 
 +=== 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> <code bash>
 it clone --depth 1 https://github.com/dspearson/librespot-auth.git it clone --depth 1 https://github.com/dspearson/librespot-auth.git
-podman run --rm -v "$(pwd)/librespot-auth":/app -w /app rust:latest cargo build --release+cargo build --release 
 +# Alternatively, using podman: "podman run --rm -v "$(pwd)/librespot-auth":/app -w /app rust:latest cargo build --release"
 ./librespot-auth/target/release/librespot-auth --name "mySpotifyAccount1" --class=computer ./librespot-auth/target/release/librespot-auth --name "mySpotifyAccount1" --class=computer
 </code> </code>
  
-open the app and add the device called mySpotifyAccount1 +On Gentoo you should have cargo by default (it's part of rust) so you don't need to run a container for that.
-This file has the following format:+
  
-{"username": "string" "auth_type": 1 "auth_data": "string"}+The above command will create a file called //credentials.json//, similar to the following: 
 +<code> 
 +{"username": "my username" "auth_type": 1 "auth_data": "a long string"} 
 +</code>
  
-The important ones are the "username" and "auth_data" parameters, these match the "username" and "credentials" sections respectively when adding/editing spotify credentials in Spotizerr.+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" from the json file 
 +  * credentials: copy "a long string" from the json file
  
-In the terminal, you can directly print these parameters using jq:+=== Step 2link Spotify API === 
  
-jq -r '.username, .auth_data' credentials.json+At this point, go to [[https://developer.spotify.com|Spotify developer console]] and login with your user. Create a new appuse the following data: 
 +  * app name: something that make sense for you 
 +  * app description: same as above 
 +  * website: not needed, leave blank 
 +  * redirect URI: https://spotizerr.mydomain.com/callback 
 +  * API/SDK: i checked them all, that is probably not needed YMMV 
 +  * i unrestand and agree: check, of course
  
-see [[https://github.com/Xoconoch/spotizerr|here]]+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.
  
-work in progress+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 //deezer.com// domain.  
 + 
 +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.
  
  
Line 154: Line 208:
 </code> </code>
  
 +
 +===== Logrotate =====
 +
 +Add log rotation to Spotizerr logs. Drop the following under **/etc/logrotate.d**:
 +<file - spotizer>
 +/var/log/spotizerr/* {
 +    missingok
 +    notifempty
 +}
 +</file>