Polaris

Music streaming server focused on speed and simplicity

Media Servers ★ 2.7k stars Easy setup MIT

Polaris is a self-hosted music streaming application written in Rust, designed to be fast and easy to set up. It lets you browse and stream your music collection from a clean web interface or compatible clients.

Key features

  • Written in Rust for speed
  • Simple setup
  • Last.fm integration
  • Collection browsing

Pros & cons

Strengths

  • Low resource usage
  • Single binary deployment

Trade-offs

  • Smaller ecosystem
  • Fewer client options

Polaris replaces

Last reviewed Sep 13, 2026 · 804 words

One question settles whether Polaris is your music server: whether you want third-party Subsonic clients. If yes, run Navidrome and stop reading, because Polaris speaks its own API and the ecosystem of Subsonic apps (Symfonium, DSub, play:Sub, the lot) will not connect to it. If no, and what you want is a fast, light server with a clean web player and a good official Android app, Polaris (MIT, Rust, 2,726 stars) is one of the nicest small projects in the media server category, and it gets out of the way better than anything else I have run.

What "simple" means here

Polaris indexes a folder of music by reading tags, and presents it as a browsable tree, plus album views by artist, year and random, search, playlists and Last.fm scrobbling. It does not transcode: files stream as-is, so a 30 MB FLAC over mobile data is a 30 MB download, and your client either handles the format or it does not. The web UI and the Android app play FLAC, MP3, Opus, Ogg, M4A and the usual suspects; there is also a download-for-offline mode in the Android app that turns it into a decent Spotify replacement for people who already own their music, which is the honest reading of the catalogue's Spotify alternatives framing.

Multi-user exists, with admin and regular accounts, but there is no per-user library scoping, no podcast support, no sharing links, and no smart playlists. That is a feature list you can hold in your head, and the 128 MB RAM figure in our catalogue is genuinely what it idles at.

Three-minute deployment

Docker is the easy route; there are also native builds and a Windows installer for people who want it on the same PC as their library:

services:
  polaris:
    image: agersant/polaris:latest
    ports:
      - "5050:5050"
    volumes:
      - /mnt/media/music:/music:ro
      - polaris-data:/var/lib/polaris
    restart: unless-stopped
volumes:
  polaris-data:

Open port 5050, and the first-run wizard asks for an admin username and password and for a mount point: a name and the path inside the container (/music above). Mount the library read-only, since Polaris never needs to write to it. Indexing a 20,000-track library takes a couple of minutes on a mini PC and re-indexes on a timer you can set in the settings; there is no filesystem watcher, so new albums appear after the next scan rather than instantly. Put Caddy in front for TLS before pointing the Android app at it from outside the LAN.

The SQLite database and settings live in the data volume. Back that volume up if you care about playlists and users; the library itself is derived from your files and can always be rebuilt.

Speed is the point, and it delivers

Because it is a single Rust binary with SQLite and no transcoding path, page loads in the web UI are effectively instant, a cold start is under a second, and it runs comfortably on a Raspberry Pi 3 or a 512 MB VPS with room to spare. I have seen Navidrome and Jellyfin both do the job well, but neither idles this low, and Jellyfin's music handling in particular is a side feature of a video server. If a tiny always-on box serves your music and nothing else, Polaris is the one that lets the box stay tiny.

The trade is the client list. Web browser and the official Android app are the supported surfaces. There is no iOS app, no desktop app beyond the browser, and no Subsonic bridge, so an iPhone household is limited to the web player.

Where the bigger projects win

Navidrome is the safer choice for most people: comparable footprint, Subsonic and OpenSubsonic APIs that open up 30-plus clients on every platform, transcoding for mobile data, smart playlists and per-user libraries. The Jellyfin vs Navidrome comparison covers when a full media server is preferable to either. gonic is another minimal Subsonic-compatible option in Go if the attraction of Polaris was footprint alone. Polaris wins when its own two clients are enough and you value the clean UI over ecosystem breadth.

What I'd do

For an Android-and-browser household with a tagged library on a NAS, I would run Polaris from the compose file above, library read-only, Caddy in front, and the Android app with offline downloads for the commute. It would take 3 minutes and I would not touch it again for a year. For anyone with an iPhone, anyone who wants transcoding on mobile, or anyone who likes choosing their own client, Navidrome is the right answer and the bigger community makes it the safer one.

Compare Polaris

21 head-to-head comparisons.

Similar media servers apps