Quickstart
This guide will get you up and running with multi-scrobbler using Docker and docker compose. At the end of the guide you will have:
- the dashboard served on port
9078of a host machine which has an IP of192.168.0.100 - data saved to the same directory as the
docker-compose.ymlfile - multi-scrobbler monitoring Spotify, Jellyfin, Navidrome, Plex, and/or Last.fm for listening activity
- multi-scrobbler scrobbling to Lastfm, Maloja, and/or Koito
If the multi-scrobbler container is on the same machine you will be viewing the dashboard from (IE localhost) you can remove and ignore BASE_URL usage below. Additionally, replace usage of 192.168.0.100 with localhost.
Create Docker Compose File
Create a new folder for multi-scrobbler related data and then create docker-compose.yml with this content:
services:
multi-scrobbler:
image: foxxmd/multi-scrobbler
container_name: multi-scrobbler
environment:
- TZ=Etc/GMT # Specify timezone from TZ Database name found here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
- BASE_URL=http://192.168.0.100:9078
# all Environmental Variables in below examples go here!
volumes:
- "./config:/config"
ports:
- "9078:9078"
restart: unless-stopped
Setup Sources
Sources are the services/music players multi-scrobbler monitors to look for listening activity.
- Jellyfin
- Spotify
- Navidrome
- Plex
- Last.fm
Follow the Jellyfin configuration instructions for setting up an API Key.
Then, add these values to the environment section in the docker-compose.yml you created.
- JELLYFIN_URL=192.168.0.110:8096 # URL to Jellyfin UI
- JELLYFIN_APIKEY=c9fae8756fbf481ebd9c5bb56b # Api Key created in previous step
- JELLYFIN_USER=MyUser # Your username in Jellyfin
To access your Spotify activity you must create a Spotify App to get a Client ID/Secret and set a valid Redirect URI.
Refer to the Spotify Authentication instructions in the docs.
Assuming you used the HTTPS method for your Redirect URI from the instructions above...after the application is created add these values to the environment section in the docker-compose.yml you created.
- SPOTIFY_CLIENT_ID=yourClientId
- SPOTIFY_CLIENT_SECRET=yourClientSecret
- SPOTIFY_REDIRECT_URI=https://multi-scrobbler.mydomain.com/callback
Later, after starting multi-scrobbler, visit the dashboard at http://192.168.0.100:9078 and click (Re)authenticate on the Spotify card to authorize multi-scrobbler to use your account. Monitoring will begin automatically after authorization is complete.
Navidrome supports scrobbling using Listenbrainz. You should use this, rather than a Subsonic Source because Navidrome's internal scrobbling functionality supports providing multiple artists and offline scrobbling while the Subsonic Source does not.
To setup Navidrome to scrobble to multi-scrobbler via the Listenbrainz option:
Create Listenbrainz Endpoint Source
Create a new Listenbrainz Endpoint Source in multi-scrobbler by creating a token to use with the endpoint via ENV Config in environment section in the docker-compose.yml you created.
- LZE_TOKEN=myCoolToken
The token can be anything. (Re)start multi-scrobbler after making this change.
Configure Navidrome
Set the ListenBrainz.BaseURL (env ND_LISTENBRAINZ_BASEURL) to http://myMultiScrobblerIP:9078/1/ in your Navidrome installation. Assuming you are using the docker installation, modify environment to add:
- ND_LISTENBRAINZ_BASEURL=http://192.168.0.100:9078/1/
Restart Navidrome after making this change. Then, follow the directions for enabling Listenbrainz scrobbling in Navidrome. The Listenbrainz user token is the token you created for LZE_TOKEN earlier.
Find your Plex Token and make note of the URL and Port used to connect to your Plex instance.
Add these values to the environment section in the docker-compose.yml you created.
- PLEX_URL=http://192.168.0.101:32400
- PLEX_TOKEN=6c0ihz8j7__f5r18oa0zm8
# optional, restrict scrobbling to a list of comma-delimited users
#- PLEX_USERS_ALLOW=myPlexUsername
Restart multi-scrobbler to create the new Source. You may wish to refer to the User and Library defaults/filtering in the Plex Source docs for a more granular setup.
If you are already scrobbling to Last.fm and wish to mirror your scrobbling activity to one or more other Clients, use this Source.
If, instead, you want to scrobble from multi-scrobbler to Last.fm then see the Last.fm tab in the Setup Clients section below.
Register for an API account at Last.fm.
Use the following for Callback URL:
http://192.168.0.100:9078/lastfm/callback
After account creation make note of the Api Key and Secret that are displayed.
Create a new File named lastfm.json in the ./config directory that will be used with your docker-compose.yml stack and copy the below contents, replacing placeholders with the data you got from Last.fm API account creation:
[
{
"name": "myLastFmSource",
"configureAs": "source",
"data": {
"apiKey": "MY_API_KEY_PLACEDHOLDER",
"secret": "MY_SECRET_PLACEHOLDER",
"redirectUri": "http://192.168.0.100:9078/lastfm/callback"
}
}
]
Later, after starting multi-scrobbler, visit the dashboard at http://192.168.0.100:9078 and click (Re)authenticate on the Last.fm (Source) card to authorize multi-scrobbler to use your account. Monitoring will begin automatically after authorization is complete.
(Optional) Correct Scrobbles with Musicbrainz
Multi-scrobbler can use Musicbrainz to match activity from your Sources in order to fill in missing data, or correct/normalize existing data, before it is scrobbled to the Clients below. This step is optional.
Musicbrainz Setup Instructions
Configure Musicbrainz API
This step only needs to be performed once regardless of how many Sources you want to use Musicbrainz for.
You must provide a way for Musicbrainz to contact you.
Add these value to the environment section in the docker-compose.yml you created.
# an email or personal website musicbrainz can use to contact you
- MB_CONTACT=myCoolName@emailProvider.com
# how musicbrainz searches and selects matches
- MB_PRESETS=sensible,native
Presets are found here.
Enable Musicbrainz For A Source
Musicbrainz can be enabled for multiple Sources. Follow the directions in each tab to enable it for that Source.
- Jellyfin
- Spotify
- Navidrome
- Plex
- Last.fm
Add this value to the environment section in the docker-compose.yml you created.
- JELLYFIN_TRANSFORMS=musicbrainz
Add this value to the environment section in the docker-compose.yml you created.
- SPOTIFY_TRANSFORMS=musicbrainz
Add this value to the environment section in the docker-compose.yml you created.
- LZE_TRANSFORMS=musicbrainz
Add this value to the environment section in the docker-compose.yml you created.
- PLEX_TRANSFORMS=musicbrainz
Modify the lastfm.json file you created in the Setup Sources step to add the highlighted section in the example below. The comma at the top highlighted section is important!
[
{
"name": "myLastFmSource",
"configureAs": "source",
"data": {
"apiKey": "MY_API_KEY_PLACEDHOLDER",
"secret": "MY_SECRET_PLACEHOLDER",
"redirectUri": "http://192.168.0.100:9078/lastfm/callback"
},
"options": {
"playTransform": {
"preCompare": {
"type": "musicbrainz"
}
}
}
}
]
Setup Clients
Clients are services that store scrobbles. Multi-scrobbler will scrobble all listening activity from the Sources you configured to all Clients you configure here.
- Maloja
- Last.fm
- Koito
Setup a Maloja server if you have not already done this.
Maloja Setup Intructions
Using Maloja's example docker-compose.yml:
loading...
Uncomment environment and add MALOJA_FORCE_PASSWORD=CHANGE_ME to set an admin password
Start the container:
docker compose up -d
- Navigate to the Admin Panel (Cog in upper-right corner) -> API Keys (or at http://192.168.0.100:42010/admin_apikeys)
- Create a New Key and then copy the generated key value
Finally, add these values to the environment section in the docker-compose.yml you created for multi-scrobbler earlier.
- MALOJA_URL=http://192.168.0.100:42010
- MALOJA_API_KEY=myApiKey
Register for an API account at Last.fm.
Use the following for Callback URL:
http://192.168.0.100:9078/lastfm/callback
After account creation use the displayed information and add these values to the environment section in the docker-compose.yml you created for multi-scrobbler earlier.
- LASTFM_API_KEY=myApiKey
- LASTFM_SECRET=myApiSecret
Setup a Koito server if you have not already done this.
- Create (or get) an API Key
- From your Koito server dashboard navigate to Settings (bottom-left icon) => API Keys
- Create a new Key (or use an existing) and Copy the key using the copy icon to the right of the key
- EX
pM195xPV98CDpk0QW47FIIOR8AKATAX5DblBF-Jq0t1MbbKL
- EX
- Take note of your Koito username (used below as
myUser) - Determine your Koito URL
- This is the URL you use to access your Koito dashboard OR whatever URL is accessible from your multi-scrobbler instance.
- EX dashboard at
http://192.168.0.100:4110=> replacemyURLbelow withhttp://192.168.0.100:4110 - More info on the URL to use is the full docs
Add/Substitute values above into these examples values and add them to the environment section in the docker-compose.yml you created for multi-scrobbler earlier.
- KOTIO_TOKEN=myToken
- KOTIO_USER=myUser
- KOITO_URL=myURL
Ensure that Koito is configured to allow requests from multi-scrobbler! In Koito config set KOITO_ALLOWED_HOSTS to the IP the multi-scrobbler dashboard is accessible from.
Start Multi-Scrobbler
If you are running your multi-scrobbler container on a Linux host see these instructions for setting proper file permissions.
From the same directory as the docker-compose.yml you created earlier start the container:
docker compose up -d
You're done! Multi-scrobbler is now running. It will monitor the sources you configured and scrobble to clients you set up.
Visit http://192.168.0.100:9078 to see the dashboard where
- configured Sources/Clients
- show current status and authentication options
- display statistics about discovered/scrobbled tracks and Now Playing status
- a real-time log shows multi-scrobbler's activity
Next Steps
- See more advanced docker options as well as other install methods in the Installation docs
- Review the Configuration docs
- Learn about how to configure multi-scrobbler using files for more complicated Source/Client scenarios
- See all available Sources and Clients alongside configuration examples
- Learn how to set up notification webhooks
- Check out the kitchensink example
- Setup Scrobble Enhancements with Musicbrainz to automatically correct and fill in missing track information for your scrobbles
- Consult the FAQ for solutions to common problems