> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rocksky.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Rocksky as a personal Navidrome server

> Stream your uploaded library through any Navidrome / Subsonic-compatible client, using Rocksky as the backend.

Rocksky exposes a Subsonic / Navidrome-compatible API. Upload your music to
your private Rocksky library and stream it from any Subsonic client — phone,
desktop, car head unit — without running your own server.

## Step 1: Upload music

Open **My Library** in Rocksky's sidebar:

<Frame>
  <img src="https://mintcdn.com/rocksky/f8tOVRECa7uvBDlF/images/integrations/navidrome-server-library.png?fit=max&auto=format&n=f8tOVRECa7uvBDlF&q=85&s=4aff7cedebf10146850a2f5348bc0a81" alt="Rocksky sidebar with 'My Library (experimental)' link and the Scrobble Stats chart" width="704" height="946" data-path="images/integrations/navidrome-server-library.png" />
</Frame>

Drag and drop your audio files (MP3, FLAC, M4A, OGG, WAV, AIFF) into the
upload page. Required tags: title, artist, album, album artist, duration,
album art. Need to tag your files first?
[MusicBrainz Picard](https://picard.musicbrainz.org/) auto-fills metadata
from the MusicBrainz database.

<Frame>
  <img src="https://mintcdn.com/rocksky/f8tOVRECa7uvBDlF/images/integrations/navidrome-server-upload.png?fit=max&auto=format&n=f8tOVRECa7uvBDlF&q=85&s=41f1b97c1cf81d9196ade112427dbc11" alt="Rocksky Upload Music page with a track successfully uploaded" width="1588" height="1126" data-path="images/integrations/navidrome-server-upload.png" />
</Frame>

<Info>
  Your uploaded music is private — only you can access and stream your files.
</Info>

## Step 2: Get an API key

Visit the [API Keys](https://rocksky.app/apikeys) page and generate a new key.
You'll use it as the password in your Subsonic client.

## Step 3: Configure your client

In any Subsonic / Navidrome-compatible app, add a new server with these
details:

| Field      | Value                                          |
| ---------- | ---------------------------------------------- |
| Server URL | `https://navidrome.rocksky.app`                |
| Username   | Your ATProto handle (e.g. `alice.bsky.social`) |
| Password   | Your Rocksky API key                           |

<Frame>
  <img src="https://mintcdn.com/rocksky/f8tOVRECa7uvBDlF/images/integrations/navidrome-server-client.png?fit=max&auto=format&n=f8tOVRECa7uvBDlF&q=85&s=2d23e94622d3f870bf14bda730855693" alt="Cassette desktop app configured against navidrome.rocksky.app" width="2272" height="1448" data-path="images/integrations/navidrome-server-client.png" />
</Frame>

## Compatible apps

* **Symfonium** (Android)
* **Substreamer** (Android, iOS)
* **Cassette** (iOS)
* **play:Sub** (iOS)
* **Amperfy** (iOS, macOS)
* **Tempo** (iOS, macOS)
* …and many other Navidrome / Subsonic clients.

## Scrobbling

Plays from any of these clients are scrobbled automatically — there's nothing
extra to wire up.

<Note>
  Rocksky currently stores uploads on Cloudflare R2. Support for user-connected
  S3-compatible providers (bring-your-own bucket) is on the roadmap.
</Note>
