1
7
Fork
You've already forked musonic
0
No description
  • TypeScript 65%
  • Rust 28.8%
  • CSS 4.8%
  • Shell 0.6%
  • Makefile 0.3%
  • Other 0.5%
Hailey Somerville 0263e80976
All checks were successful
/ check-server (push) Successful in 17s
/ check-frontend (push) Successful in 21s
/ build (push) Successful in 1m8s
v0.8.1
2025年10月24日 21:27:56 +11:00
.forgejo/workflows get ci going 2025年10月24日 12:57:12 +11:00
frontend v0.8.1 2025年10月24日 21:27:56 +11:00
mpdclient v0.8.1 2025年10月24日 21:27:56 +11:00
pkg add script/build-dist-release 2025年10月24日 21:25:43 +11:00
screenshots add readme with screenshots 2025年10月24日 14:19:16 +11:00
script add script/build-dist-release 2025年10月24日 21:25:43 +11:00
server v0.8.1 2025年10月24日 21:27:56 +11:00
subsonicapi v0.8.1 2025年10月24日 21:27:56 +11:00
util v0.8.1 2025年10月24日 21:27:56 +11:00
.envrc.example rename .envrc to .envrc.example 2025年09月25日 18:42:03 +10:00
.gitignore rename .envrc to .envrc.example 2025年09月25日 18:42:03 +10:00
Cargo.lock v0.8.1 2025年10月24日 21:27:56 +11:00
Cargo.toml use patched avahi-sys with ahead-of-time generated bindings 2025年10月24日 16:26:00 +11:00
Containerfile.ci remove clang from ci image 2025年10月24日 16:31:32 +11:00
LICENSE move player to player subdir 2025年08月06日 14:11:57 +10:00
Makefile get ci going 2025年10月24日 12:57:12 +11:00
README.md add script/build-dist-release 2025年10月24日 21:25:43 +11:00
server.example.toml allow static mpd config 2025年10月10日 21:08:56 +11:00

musonic

Fast, responsive, and beautiful web frontend for Navidrome and other OpenSubsonic-compatible servers. Support artists, own your music again.

  • Deployed as single self-contained binary
  • Installable on mobile devices as a PWA
  • Integration with MPD for casting to players on your local network
  • Guest access for clients on your local network
  • Podcast support via gonic

Screenshots

musonic home page on desktop musonic home page on mobile musonic player on mobile

Installing

The easiest way to install musonic is hop on over to the releases page where you will find:

  • Prebuilt binaries for Debian 12 (bookworm) and 13 (trixie) on x86_64

  • Distribution source archives with a prebuilt frontend. You only need a Rust compiler and the avahi-client. Run make build

Building the musonic frontend from source additionally requires node.js. You will also need to run make build-frontend before make build.

Configuration

See server.example.toml for the full set of configuration options.

The bare minimum you'll need to get started is:

# Configure the musonic server:
[server]
# Serve the web app on port 3000 on all interfaces:
listen = "0.0.0.0:3000"
# The URL clients will the musonic web app by:
external_url = "http://musonic.local"
# Configure the upstream Navidrome (or other OpenSubsonic-compatible server) which hosts your actual music library
[subsonic]
server_url = "http://navidrome.local"

Configuring MPD cast targets

By default musonic will automatically discover MPD players on your local network via zeroconf, also known as mDNS or Bonjour. If this doesn't suit your setup, you can turn this off with the players.zeroconf setting:

[players]
zeroconf = false

You can also add statically configure MPD players by adding entries under the players.static table:

[players.static.lounge_room]
title = "Lounge room"
address = "192.168.0.101:6600"

Enabling guest access

To enable guest access, create an account on your Navidrome server with the username guest and set the guest.password setting accordingly:

[guest]
password = "s3cret-passw0rd!"
# musonic can also access the guest password from an environment variable:
password = { env = "GUEST_PASSWORD" }
# or read it from a file:
password = { file = "/etc/musonic/guest-password" }

You will also need to configure your trusted subnet in the guest.allowed_ips setting:

[guest]
allowed_ips = "192.168.0.0/24"
# You can also use an array to set multiple trusted subnets:
allowed_ips = ["10.0.0.0/8", "192.168.0.0/24"]

If musonic is running behind a proxy, you will need to configure server.trusted_proxies accordingly:

[server]
trusted_proxies = "10.1.1.8" # also supports subnet syntax and/or an array of values

Enabling podcast support

Navidrome does not currently support podcasts. For this reason, musonic supports configuring an alternate OpenSubsonic server to be used for the podcast functionality.

If you're using gonic, the configuration is simple:

[podcasts]
server_url = "http://gonic.local"

If you're using a different podcast server, you will probably also need to set podcast_prefix and episode_prefix to whatever ID prefix your podcast server uses for podcasts and podcast episodes. The default values for these settings assume you're using gonic, and are set to pd- and pe- respectively.

Setting cover art for radio stations

Navidrome does not currently support cover art for radio stations. If you'd like your radio stations to appear with cover art in musonic, you can add entries to the radio.covers table, where the key is the radio station ID and the value is the path to an image file:

[radio.covers]
WK8SLYmhE4tXl4mkqtcaIi = "/usr/local/share/musonic/radio/somafm-groovesalad.webp"

License

musonic is free software, copyright Hailey Somerville. AGPLv3.

musonic is derived from airsonic-refix, copyright Thomas Amland. AGPLv3.

You are free to share, copy, and modify this software however you please, so long as you adhere to the terms of the AGPLv3 license by keeping all copyright notices intact and making your changes available under the AGPLv3 license as well.