Compare commits

...
Author SHA1 Message Date
dependabot[bot] b94b2e368c chore(deps): bump the version-updates group across 1 directory with 10 updates
Bumps the version-updates group with 10 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.2` | `7.0.1` |
| [actions/setup-node](https://github.com/actions/setup-node) | `6.3.0` | `7.0.0` |
| [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) | `4.0.0` | `4.1.0` |
| [dataaxiom/ghcr-cleanup-action](https://github.com/dataaxiom/ghcr-cleanup-action) | `1.0.16` | `1.2.2` |
| [docker/login-action](https://github.com/docker/login-action) | `3.6.0` | `4.6.0` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3.11.1` | `4.3.0` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | `6.18.0` | `7.3.0` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact) | `7.0.0` | `7.0.1` |
| [docker/metadata-action](https://github.com/docker/metadata-action) | `6.0.0` | `6.2.0` |
| [marocchino/sticky-pull-request-comment](https://github.com/marocchino/sticky-pull-request-comment) | `3.0.3` | `3.0.5` |



Updates `actions/checkout` from 6.0.2 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/de0fac2e4500dabe0009e67214ff5f5447ce83dd...3d3c42e5aac5ba805825da76410c181273ba90b1)

Updates `actions/setup-node` from 6.3.0 to 7.0.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/53b83947a5a98c8d113130e565377fae1a50d02f...820762786026740c76f36085b0efc47a31fe5020)

Updates `peaceiris/actions-gh-pages` from 4.0.0 to 4.1.0
- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)
- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)
- [Commits](https://github.com/peaceiris/actions-gh-pages/compare/4f9cc6602d3f66b9c108549d475ec49e8ef4d45e...84c30a85c19949d7eee79c4ff27748b70285e453)

Updates `dataaxiom/ghcr-cleanup-action` from 1.0.16 to 1.2.2
- [Release notes](https://github.com/dataaxiom/ghcr-cleanup-action/releases)
- [Commits](https://github.com/dataaxiom/ghcr-cleanup-action/compare/cd0cdb900b5dbf3a6f2cc869f0dbb0b8211f50c4...d52806a0dc70b430571a37da1fde39733ffd640f)

Updates `docker/login-action` from 3.6.0 to 4.6.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/5e57cd118135c172c3672efd75eb46360885c0ef...dbcb813823bdd20940b903addbd779551569679f)

Updates `docker/setup-buildx-action` from 3.11.1 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/e468171a9de216ec08956ac3ada2f0791b6bd435...37fe631027851001ddb9b187196cc803df7f5f0e)

Updates `docker/build-push-action` from 6.18.0 to 7.3.0
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/263435318d21b8e681c14492fe198d362a7d2c83...53b7df96c91f9c12dcc8a07bcb9ccacbed38856a)

Updates `actions/upload-artifact` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/bbbca2ddaa5d8feaa63e36b76fdaad77386f024f...043fb46d1a93c77aae656e7c1c64a875d1fc6a0a)

Updates `docker/metadata-action` from 6.0.0 to 6.2.0
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/030e881283bb7a6894de51c315a6bfe6a94e05cf...dc802804100637a589fabce1cb79ff13a1411302)

Updates `marocchino/sticky-pull-request-comment` from 3.0.3 to 3.0.5
- [Release notes](https://github.com/marocchino/sticky-pull-request-comment/releases)
- [Commits](https://github.com/marocchino/sticky-pull-request-comment/compare/d4d6b0936434b21bc8345ad45a440c5f7d2c40ff...5770ad5eb8f42dd2c4f34da00c94c5381e49af88)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: version-updates
- dependency-name: actions/setup-node
  dependency-version: 6.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: version-updates
- dependency-name: dataaxiom/ghcr-cleanup-action
  dependency-version: 1.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
- dependency-name: docker/build-push-action
  dependency-version: 7.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: version-updates
- dependency-name: docker/login-action
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: version-updates
- dependency-name: docker/metadata-action
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: version-updates
- dependency-name: marocchino/sticky-pull-request-comment
  dependency-version: 3.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: version-updates
- dependency-name: peaceiris/actions-gh-pages
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: version-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-02 16:24:48 +00:00
FoxxMD ea08239aeb docs: Add BrainzMash musicbrainz guidance 2026-09-02 13:33:00 +00:00
FoxxMD 7456ab647b docs: cleanup atproto admonitions 2026-09-02 01:58:52 +00:00
Matt Foxx 9ee6a2a01c Merge pull request #696 from gnosticJade/scrobbler-caddy-nit
docs: Adjust caddy snippet with better guidance
2026-09-01 21:36:53 -04:00
Jade 898938cbaf docs: Adjust caddy snippet with better guidance 2026-09-01 19:18:30 -06:00
FoxxMD b9b81a3152 docs: update security to omit callback
Per @gnosticjade 's correction, this route is covered by browser basic auth credential caching
2026-09-02 00:39:15 +00:00
9 changed files with 84 additions and 42 deletions
+3 -3
View File
@@ -12,10 +12,10 @@ jobs:
name: Deploy to GitHub Pages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #v7.0.1
with:
persist-credentials: false
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f #6.3.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 #7.0.0
with:
node-version: 24
cache: npm
@@ -45,7 +45,7 @@ jobs:
# Popular action to deploy to GitHub Pages:
# Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e #4.0.0
uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 #4.1.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# Build output to publish to the `gh-pages` branch:
+1 -1
View File
@@ -13,7 +13,7 @@ jobs:
permissions:
packages: write
steps:
- uses: dataaxiom/ghcr-cleanup-action@cd0cdb900b5dbf3a6f2cc869f0dbb0b8211f50c4 #1.0.16
- uses: dataaxiom/ghcr-cleanup-action@d52806a0dc70b430571a37da1fde39733ffd640f #1.2.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
+10 -10
View File
@@ -78,14 +78,14 @@ jobs:
- name: Login to Docker Hub
if: ${{ vars.DOCKERHUB_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
if: ${{ vars.GHCR_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -94,13 +94,13 @@ jobs:
# metadata extract for docker labels/image names is done in merge job
- name: Set up Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 #v3.11.1
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e #v4.3.0
# https://github.com/docker/build-push-action/issues/671#issuecomment-1619353328
# for caching
- name: Build and push by digest
id: build
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 #v6.18.0
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a #v7.3.0
with:
# specify foreign repo#sha from PR that is used to build image
context: ${{github.event.pull_request.head.repo.clone_url}}#${{github.event.pull_request.head.sha}}
@@ -120,7 +120,7 @@ jobs:
touch "/tmp/digests/${digest#sha256:}"
- name: Upload digest
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #7.0.1
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
@@ -147,25 +147,25 @@ jobs:
- name: Login to Docker Hub
if: ${{ vars.DOCKERHUB_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
if: ${{ vars.GHCR_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e
- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf #6.0.0
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 #6.2.0
with:
images: |
${{ vars.DOCKERHUB_SLUG }}
@@ -223,7 +223,7 @@ jobs:
if: contains(github.event.pull_request.labels.*.name, 'safe to test')
steps:
- name: Create comment
uses: marocchino/sticky-pull-request-comment@d4d6b0936434b21bc8345ad45a440c5f7d2c40ff #3.0.3
uses: marocchino/sticky-pull-request-comment@5770ad5eb8f42dd2c4f34da00c94c5381e49af88 #3.0.5
with:
recreate: true
header: "pr-release"
+10 -10
View File
@@ -74,7 +74,7 @@ jobs:
- name: Check out the repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #v7.0.1
with:
persist-credentials: false
@@ -102,14 +102,14 @@ jobs:
- name: Login to Docker Hub
if: ${{ github.event_name != 'pull_request' && vars.DOCKERHUB_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
if: ${{ github.event_name != 'pull_request' && vars.GHCR_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -118,13 +118,13 @@ jobs:
# metadata extract for docker labels/image names is done in merge job
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 #v3.11.1
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e #v4.3.0
# https://github.com/docker/build-push-action/issues/671#issuecomment-1619353328
# for caching
- name: Build and push by digest
id: build
uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 #v6.18.0
uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a #v7.3.0
with:
build-args: |
APP_BUILD_VERSION=${{steps.appversion.outputs.appversion}}
@@ -143,7 +143,7 @@ jobs:
env:
VARS_DIGEST: ${{ steps.build.outputs.digest }}
- name: Upload digest
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f #7.0.0
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a #7.0.1
with:
name: digests-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
@@ -170,25 +170,25 @@ jobs:
- name: Login to Docker Hub
if: ${{ github.event_name != 'pull_request' && vars.DOCKERHUB_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Container Registry
if: ${{ github.event_name != 'pull_request' && vars.GHCR_SLUG != '' }}
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435
uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e
- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf #6.0.0
uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 #6.2.0
with:
images: |
${{ vars.DOCKERHUB_SLUG }}
+3 -3
View File
@@ -20,16 +20,16 @@ jobs:
steps:
- name: Check out the repo (gha)
if: ${{ !env.ACT }}
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #v7.0.1
with:
ref: ${{ inputs.ref }}
persist-credentials: false
- name: Check out the repo (act)
if: ${{ env.ACT }}
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 #v7.0.1
- name: Use Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f #6.3.0
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 #7.0.0
with:
node-version: ${{ inputs.node-version }}
cache: 'npm'
@@ -26,7 +26,7 @@ To monitor and re-scrobble activity **from** Rocksky create a [Rocksky (Source)]
<DetailsAdmo type="important" summary="Your Data Is Public">
The default Bluesky PDS is **public**, meaning your scrobbles are also public (read-only). This isn't any different than using Last.fm or Listenbrainz, in terms of privacy.
Atproto PDS access is **public**, meaning your scrobbles are also public (read-only). This isn't any different than using Last.fm or Listenbrainz, in terms of privacy.
</DetailsAdmo>
@@ -29,7 +29,7 @@ To monitor and re-scrobble activity from a ATProto Profile create a [teal.fm (So
<DetailsAdmo type="warning" summary="Your Data Is Public">
The default Bluesky PDS is **public**, meaning your scrobbles are also public (read-only). This isn't any different than using Last.fm or Listenbrainz, in terms of privacy.
Atproto PDS access is **public**, meaning your scrobbles are also public (read-only). This isn't any different than using Last.fm or Listenbrainz, in terms of privacy.
</DetailsAdmo>
@@ -39,7 +39,6 @@ The default Bluesky PDS is **public**, meaning your scrobbles are also public (r
To view your teal.fm scrobble data you can:
* use [teal-relay-production.up.railway.app](https://teal-relay-production.up.railway.app) or [teal-slice.wisp.place](https://tealfm-slice.wisp.place/) for a preview of teal.fm
* use [yearinmusic.teal.fm](https://yearinmusic.teal.fm) or [wrapped.baileytownsend.dev](https://wrapped.baileytownsend.dev/) for wrapped-style stats of your teal.fm scrobbles
* use [atproto.at](https://atproto.at) to view the raw data (convenience URLs are generated in multi-scrobbler, per scrobble, for you to do this)
+13 -12
View File
@@ -37,7 +37,6 @@ If you absolutely need to host Multi-Scrobbler on a machine that is also accessi
If you do not need
* any [Ingress-based Sources](/configuration/sources/?sourceComm=ingress#by-communication-method) like Webscrobbler, Listenbrainz Endpoint, or Last.fm Endpoint
* and do not need authentication callbacks for [Spotify](/configuration/sources/spotify) or [Last.fm](/configuration/clients/lastfm)/[Libre.fm](/configuration/clients/librefm)
then use of these methods:
@@ -74,12 +73,11 @@ services:
Alternatively, use the [Disable Web](/configuration#disable-web) option to completely disable the web server. This is useful if you are not using the docker image or cannot control port exposure in your environment. Note: this will also remove your ability to access the dashboard.
### With Ingress or Remote Instance
### With Ingress or Remote Instance Dashboard
If you:
* need to use an [Ingress-based Source](/configuration/sources/?sourceComm=ingress#by-communication-method)
* need authentication callbacks for [Spotify](/configuration/sources/spotify) or [Last.fm](/configuration/clients/lastfm)/[Libre.fm](/configuration/clients/librefm)
* or your instance is on a machine outside your private network and you cannot/do not want to run it [headlessly](#restrict-docker-port)
then do one of these:
@@ -121,7 +119,6 @@ Routes that need to be unprotected in order for devices to communicate with MS:
* `/2.0/` - standard route for [Last.fm Endpoint](/configuration/sources/lastfm-endpoint)
* `/api/lastfm*` - custom Last.fm Endpoint with slug
* `/api/webscrobbler*` - standard/custom route for [Webscrobbler](/configuration/sources/webscrobbler)
* `/*callback*` - wildcard route, used for completing authentication flows for [Spotify](/configuration/sources/spotify), [Last.fm](/configuration/clients/lastfm), and [Libre.fm](/configuration/clients/librefm)
In the examples below you can remove any of the above routes for Sources/Clients you are not using.
@@ -142,7 +139,7 @@ Below are examples of protecting all non-ingress and callback routes with basic
- "websecure"
# can remove any set in the parenthesis group that is unused. Order:
# LZ endpoint, webscrobbler, LFM endpoint, callback for last.fm/spotify
# LZ endpoint, webscrobbler, LFM endpoint
#
# if not using any then leave only -> Host(`...`)
rule: >
@@ -156,8 +153,6 @@ Below are examples of protecting all non-ingress and callback routes with basic
&& !PathPrefix(`/2.0/`)
&& !PathPrefix(`/api/lastfm`)
&& !PathRegexp(`/.*callback.*/`)
)
middlewares:
@@ -188,16 +183,22 @@ Below are examples of protecting all non-ingress and callback routes with basic
<TabItem value="caddy" label="Caddy">
```Caddyfile
multi-scrobbler.domain.tld {
# remove any paths you are NOT using from `not path` line.
# Order: LZ, LZ, WebScrobbler, LFM, LFM
@if-not-scrobble {
not path /1/* /api/listenbrainz* /api/webscrobbler* /2.0/* /api/lastfm* *callback*
not path /1/* /api/listenbrainz* /api/webscrobbler* /2.0/* /api/lastfm*
}
# if the request is to ANY route not listed above, force client to pass basic auth
# if request is to any route not listed above, force client to basic auth
# you must hash your password using `caddy hash-password`
# https://caddyserver.com/docs/command-line#caddy-hash-password
basic_auth @if-not-scrobble {
basicAuthUser hashedPassword
msUser $2a$14$.UWNn4Zn.cQHY6Z1mkXXrOhO7mg4BC2wiC.4Tb8dNBMidjSRHAw3e
}
# requests will be proxied only if they are to a scrobble endpoint or basic auth has been passed.
# requests will be proxied they are to a scrobble endpoint or basic auth has been passed.
# can use container/service name if Caddy & MS are on the same docker network.
# otherwise, replace `multi-scrobbler` with host IP
reverse_proxy multi-scrobbler:9078
}
```
</TabItem>
</Tabs>
</Tabs>
@@ -109,6 +109,48 @@ Example of multiple servers:
</details>
<DetailsAdmo type="tip" summary="BrainzMash Musicbrainz Server">
[**BrainzMash**](https://brainzmash.cc) can be used as a supplementary Musicbrainz Server (see **Additional Musicbrainz Servers** above).
BrainzMash is a community-run pool of read-only hybrid Musicbrainz/[Lidarr](https://lidarr.audio/) metadata servers. Requests are made to one endpoint that load-balances traffic out to all participating servers. This service is **publicly available** and can be treated like a normal Musicbrainz server from Multi-Scrobbler's perspective.
There are pros and cons to using this service. Read these carefully before using BrainzMash:
* **Pros**
* Higher rate limit than official Musicbrainz server -- Multi-scrobbler can make requests more often and faster
* Potentially less downtime due to distributed nature
* **Cons**
* There is implicit trust in how BrainzMash handles your traffic:
* you do not know which community server is getting your traffic and what the operator *may* be logging/collecting in terms of metrics
* the load balancer endpoint collects minimal metrics: it retains anonymized recent searches and network data for presenting aggregate stats on BrainzMash public dashboard
* Musicbrainz DB data is updated on a weekly basis so new entries and recent edits will lag behind the official server
If these trade-offs are acceptable to you, add BrainzMash to your Musicbrainz config like this:
```json5
{
"contact": "anything@notused.com",
"url": "https://api.brainzmash.cc"
}
```
The public dashboard can be found here: [https://dash.brainzmash.cc](https://dash.brainzmash.cc)
Learn more about BrainzMash:
* [Main website](https://brainzmash.cc/)
* Join the [Discord server](https://discord.gg/MSTteNvANt) for updates, support, and lidarr instructions
* Contribute your server to the community pool by deploying [brainzmash-hearring-aid](https://github.com/statichum/brainzmash-hearring-aid)
:::important[Support and Bugs]
If you have issues with the Musicbrainz Transformer and API communication then [**create an issue for Multi-Scrobbler first**](https://github.com/FoxxMD/multi-scrobbler/issues), do not use BrainzMash discord for general help.
:::
</DetailsAdmo>
### Stage Configuration
All of the properties found in [**Matching with Musicbrainz**](#matching-with-musicbrainz) section are configured in [Stage Configuration](/configuration/transforms#configuring-stages) as `defaults`.