sonn docs GitHub

start here

Install

One container, host networking so it can discover your speakers, one folder that holds everything. Back up that folder and you have backed up the install.

Requirements

  • Docker (recommended) — the quickest way to run the server. It can also run directly on Node.js 20 or newer.
  • Port 7090 free on the host. The Loxone integration additionally uses 7091 and 7095, but only while it is enabled.
  • A Linux host if you want to mount a network share as your music library — this needs Unix mount tooling such as mount.cifs. On Windows, point the library at a local folder instead.
portused forwhen
7090Admin UI, web player, public API, Subsonic API, WebDAV, DLNA, audio streamsalways
7091Loxone native app protocolLoxone enabled
7095Loxone Miniserver protocolLoxone enabled

Docker compose

curl -LO https://raw.githubusercontent.com/sonn-audio/core/main/docker-compose.yml
docker compose up -d

That starts a container named sonn-core in host network mode, which is what lets the server discover Sonos, Chromecast, AirPlay and DLNA devices on your network without extra flags. Because host mode bypasses port publishing, make sure ports 7090, 7091 and 7095 are free on the host.

To keep your configuration and library across restarts, add a bind mount to the service in docker-compose.yml:

    volumes:
      - ./data:/app/data

Everything the server stores lives in that one folder. Back it up and you have backed up the install.

Docker run

docker run -d \
  --name sonn-core \
  --network host \
  -v $(pwd)/data:/app/data \
  ghcr.io/sonn-audio/core:latest

Then open http://<server-ip>:7090 and continue with First setup.

Bridge networking

Host networking is recommended because discovery — how the server finds Sonos, Chromecast, AirPlay and DLNA devices — needs it. On bridge networking, expect to assign some outputs by IP by hand. Drop --network host and publish the ports instead:

-p 7090:7090 -p 7091:7091 -p 7095:7095

Without Docker

Needs Node.js 20 or newer (Docker images and CI build on Node 24) and npm.

git clone https://github.com/sonn-audio/core.git
cd core
mkdir -p data          # config, logs and cache live here
npm install
npm run build
npm start

Building the image yourself

docker compose up -d always pulls the published image and never builds, so it works on a host without the source checkout. If you have the repository checked out and want to build locally instead, layer the build override on top:

docker compose -f docker-compose.yml -f docker-compose.build.yml build
docker compose up -d