selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
bonob logo

Self-host bonob

v0.15.0

Sonos SMAPI bridge for Subsonic-compatible music servers

BetaOpen SourceGPL-3.0
Updated10 hours ago
LanguageTypescript
Setup difficultyAdvanced
Stars
341
Port
4534 (HTTP API for Sonos SMAPI)
Requires
Sonos speakers (S1 or S2), Subsonic API compatible server (Navidrome, Gonic)
Docker
docker.io/simojenki/bonob
Install with Docker
Sonos app showing bonob with white foreground and dark grey background iconSonos app showing bonob with chartreuse foreground and fuchsia background iconSonos app showing bonob with lime foreground and alice blue background iconSonos app showing bonob with Spotify-like green foreground and dark background icon

What is bonob?

bonob is a self-hosted Sonos SMAPI (Sonos Music API) implementation that connects Sonos speakers to Subsonic API compatible music servers such as Navidrome and Gonic. It works with both Sonos S1 (local network only) and S2 (requires internet exposure) systems. Key capabilities include browsing music by artist, album, playlist, genre, year and other categories; searching by album, artist, or track; reporting now-playing information and scrobbling tracks after 30 seconds of playback; marking songs as favorites and assigning ratings from within the Sonos app; editing playlists; transcoding unsupported audio formats automatically via the OpenSubsonic extension or through custom mime-type rules; caching artist images; customizing the service icon colors shown in the Sonos app; and registering multiple instances within one household. The software runs as a Docker container listening on port 4534, requires a Subsonic-compatible server as a backend, and is configured entirely through environment variables.

Should you self-host bonob?

bonob scores 48/100 on selfhost.directory (how scoring works) and ranks #38 of 54 in Media Streaming. It has 341 GitHub stars.

It shipped 5 stable releases in the past year. The latest, v0.15.0, came out on 23 September 2026. New versions land roughly every 2 months.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is GPL-3.0-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is Invidious (81/100, 25 799 stars). It scores higher overall, so compare the two before you pick. See bonob vs Invidious side by side.

Features

  • Artist & album art
  • Auto registration & discovery (S1)S1 only, requires BNB_SONOS_ENABLE_S1=true
  • Favorites and ratings
  • LocalizationOnly 4 languages supported currently
  • Multiple household registrations
  • Music browsing
  • Now playing & track scrobbling
  • Playlist editing
  • Related artists
  • Search
  • Sonos S1 support
  • Sonos S2 supportRequires exposing bonob to the internet on port 443
  • Subsonic API integration
  • Transcoding

bonob README

How to install bonob

Install bonob with Docker

Environment variables
BNB_PORT, BNB_URL, BNB_SECRET, BNB_AUTH_TIMEOUT, BNB_LOG_LEVEL, BNB_LOG_HTTP_REQUESTS, BNB_SUBSONIC_URL, BNB_SUBSONIC_TRANSCODE, BNB_SUBSONIC_CUSTOM_CLIENTS, BNB_SUBSONIC_ARTIST_IMAGE_CACHE, BNB_SCROBBLE_TRACKS, BNB_REPORT_NOW_PLAYING, BNB_ICON_FOREGROUND_COLOR, BNB_ICON_BACKGROUND_COLOR, BNB_LOGIN_THEME, TZ, BNB_SONOS_ENABLE_S1, BNB_SONOS_DEVICE_DISCOVERY, BNB_SONOS_SEED_HOST, BNB_SONOS_SERVICE_NAME, BNB_SONOS_SERVICE_ID, BNB_SONOS_AUTO_REGISTER

docker run docker.io/simojenki/bonob #or docker run ghcr.io/simojenki/bonob

Available tags: latest (stable), master (latest build), vX.Y.Z (fixed versions)

How to configure bonob

  • BNB_AUTH_TIMEOUT1hTimeout for the Sonos auth token (ms format)

    Timeout for the Sonos auth token (ms format)

  • BNB_ICON_BACKGROUND_COLORIcon background color in Sonos app (SVG color)

    Icon background color in Sonos app (SVG color)

  • BNB_ICON_FOREGROUND_COLORIcon foreground color in Sonos app (SVG color)

    Icon foreground color in Sonos app (SVG color)

  • BNB_LOG_HTTP_REQUESTSfalseWhether to log HTTP requests

    Whether to log HTTP requests

    values: true, false

  • BNB_LOGIN_THEMEclassicTheme for login page

    Theme for login page

    values: classic, navidrome-ish, @wkulhanek

  • BNB_LOG_LEVELinfoLog level

    Log level

    values: debug, info, warn, error

  • BNB_PORT4534Default HTTP port for bonob to listen on

    Default HTTP port for bonob to listen on

  • BNB_REPORT_NOW_PLAYINGtrueWhether to report track as now playing

    Whether to report track as now playing

    values: true, false

  • BNB_SCROBBLE_TRACKStrueWhether to scrobble tracks played >30s

    Whether to scrobble tracks played >30s

    values: true, false

  • BNB_SECRETSecret used for encrypting credentials, must be provided

    Secret used for encrypting credentials, must be provided

  • BNB_SONOS_AUTO_REGISTERfalseWhether to auto-register with S1 devices on startup

    Whether to auto-register with S1 devices on startup

    values: true, false

  • BNB_SONOS_DEVICE_DISCOVERYtrueEnable/Disable Sonos device discovery

    Enable/Disable Sonos device discovery

    values: true, false

  • BNB_SONOS_ENABLE_S1falseEnables S1 support

    Enables S1 support

    values: true, false

  • BNB_SONOS_SEED_HOSTSonos device seed host for discovery

    Sonos device seed host for discovery

  • BNB_SONOS_SERVICE_ID246Service ID for Sonos

    Service ID for Sonos

  • BNB_SONOS_SERVICE_NAMEbonobS1 service name for Sonos

    S1 service name for Sonos

  • BNB_SUBSONIC_ARTIST_IMAGE_CACHEPath for caching artist images sourced externally

    Path for caching artist images sourced externally

  • BNB_SUBSONIC_CUSTOM_CLIENTSComma-delimited mime types for custom Subsonic clients when streaming

    Comma-delimited mime types for custom Subsonic clients when streaming

  • BNB_SUBSONIC_TRANSCODEtrueWhether to use OpenSubsonic Transcoding extension

    Whether to use OpenSubsonic Transcoding extension

    values: true, false

  • BNB_SUBSONIC_URLhttp://$(hostname):4533URL for Subsonic clone

    URL for Subsonic clone

  • BNB_URLhttp://$(hostname):4534URL for bonob so Sonos devices can communicate (S1: local IP/hostname; S2: public DNS)

    URL for bonob so Sonos devices can communicate (S1: local IP/hostname; S2: public DNS)

  • TZUTCTimezone from tz database

    Timezone from tz database

bonob releases & version history

More in Audio Streaming

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…