diff --git a/UPDATES.md b/UPDATES.md new file mode 100644 index 0000000..fc645a0 --- /dev/null +++ b/UPDATES.md @@ -0,0 +1,45 @@ +# Updates for SMAPI + +Run Bonob on your server. + +Bonob now needs a volume to store OAuth Tokens. In the example below that directory is `/var/containers/bonob`. Adapt as needed. +Also the example below uses a `bonob` user on the system with ID `1210` and group `100`. The directory should be owned by that user. + +Example systemd file (`/usr/lib/systemd/system/bonob.service`): +==== +[Unit] +Description=bonob Container Service +Wants=network.target +After=network-online.target + +[Service] +Environment=PODMAN_SYSTEMD_UNIT=%n +Restart=always +ExecStartPre=-/usr/bin/podman rm -f bonob +ExecStart=/usr/bin/podman run --rm \ + --name bonob \ + --label "io.containers.autoupdate=image" \ + --user 1210:100 \ + --env BNB_SONOS_SERVICE_NAME="Navidrome" \ + --env BNB_PORT=8200 \ + --env BNB_URL="https://bonob.mydomain.com" \ + --env BNB_SECRET="" \ + --env BNB_SONOS_SERVICE_ID= \ + --env BNB_SUBSONIC_URL=https://music.mydomain.com \ + --env BNB_ICON_FOREGROUND_COLOR="black" \ + --env BNB_ICON_BACKGROUND_COLOR="#65d7f4" \ + --env BNB_SONOS_AUTO_REGISTER=false \ + --env BNB_SONOS_DEVICE_DISCOVERY=false \ + --env BNB_LOG_LEVEL="info" \ + --env TZ="Europe/Vienna" \ + --volume /var/containers/bonob:/config:Z \ + --publish 8200:8200 \ + quay.io/wkulhanek/bonob:latest +ExecStop=/usr/bin/podman rm -f bonob +StandardOutput=syslog +StandardError=syslog +SyslogIdentifier=bonob + +[Install] +WantedBy=multi-user.target default.target +==== diff --git a/sonos_service/SONOS_SERVICE.md b/sonos_service/SONOS_SERVICE.md new file mode 100644 index 0000000..2626da8 --- /dev/null +++ b/sonos_service/SONOS_SERVICE.md @@ -0,0 +1,82 @@ +# Setting up Sonos Service + +* Prerequisites +** In your Sonos App get your Sonos ID (About my Sonos System) ++ image::images/about.png + +** Navidrome running and available from the Internet. E.g. via https://music.mydomain.com +** Bonob running and available from the Internet. E.g. via https://bonob.mydomain.com + +You can use any method to make these URLs available. Cloudflare Tunnels, Pangolin, reverse proxy, etc. + +* Log into https://play.sonos.com +* Once logged in go to https://developer.sonos.com/s/integrations + +* Create a *New Content Integration* + +** General Information +*** Service Name: Navidrome +*** Service Availability: Global +*** Checkbox checked +*** Website/Social Media URLs: https://music.mydomain.com (Some URL - e.g. your Navidrome server) + +** Sonos Music API +*** Integration ID: com.mydomain.music (your domain in reverse) +*** Configuration Label: 1.0 +*** SMAPI Endpoint: https://bonob.mydomain.com/ws/sonos +*** SMAPI Endpoint Version: 1.1 +*** Radio Endpoint: empty +*** Reporting Endpoint: https://bonob.mydomain.com/report/v1 +*** Reporting Endpoint Version: 2.3 +*** Authentication Method: OAuth +*** Redirect: https://bonob.mydomain.com/login +*** Auth Token Time To Life: Empty +*** Browse/Search Results Page Size: 100 +*** Polling Interval: 60 + +** Brand Assets + +Just upload the various assets from the `sonos_artwork` directory. + +** Localization Resources + +Write something about your service in the various fields (except Explicit Filter Description). + +** Integration Capabilities + +Check the first two (*Enable Extended Metadata* and *Enable Extended Metadata for Playlists*) and nothing else. + +** Image Replacement Rules + +No changes + +** Browse Options + +No changes + +** Search Capabilities + +*** API Catalog Type: SMAPI Catalog +*** Catalog Title: Music +*** Catalog Type: GLOBAL + +Add Three Categories with ID and Mapped ID: + +Albums - albums +Artists - artists +Tracks - tracks + +** Content Actions + +No changes + +** Service Deployment Settings + +*** Sonos ID: Your Sonos ID (from About my system). This is how only your controller sees the new service. +*** System Name: Whatever you want + +** Service Configuration + +Click on *Refresh* and then *Send*. You should get a success message that you can dismiss with *Done*. + +* In your app search for your service name and add Service in your app as usual. diff --git a/sonos_service/images/about.png b/sonos_service/images/about.png new file mode 100644 index 0000000..7063b99 Binary files /dev/null and b/sonos_service/images/about.png differ diff --git a/sonos_artwork/navidrome 112x112.png b/sonos_service/sonos_artwork/navidrome 112x112.png similarity index 100% rename from sonos_artwork/navidrome 112x112.png rename to sonos_service/sonos_artwork/navidrome 112x112.png diff --git a/sonos_artwork/navidrome 200x200.png b/sonos_service/sonos_artwork/navidrome 200x200.png similarity index 100% rename from sonos_artwork/navidrome 200x200.png rename to sonos_service/sonos_artwork/navidrome 200x200.png diff --git a/sonos_artwork/navidrome 20x20.png b/sonos_service/sonos_artwork/navidrome 20x20.png similarity index 100% rename from sonos_artwork/navidrome 20x20.png rename to sonos_service/sonos_artwork/navidrome 20x20.png diff --git a/sonos_artwork/navidrome 400x400.png b/sonos_service/sonos_artwork/navidrome 400x400.png similarity index 100% rename from sonos_artwork/navidrome 400x400.png rename to sonos_service/sonos_artwork/navidrome 400x400.png diff --git a/sonos_artwork/navidrome 40x40.png b/sonos_service/sonos_artwork/navidrome 40x40.png similarity index 100% rename from sonos_artwork/navidrome 40x40.png rename to sonos_service/sonos_artwork/navidrome 40x40.png diff --git a/sonos_artwork/navidrome 80x80.png b/sonos_service/sonos_artwork/navidrome 80x80.png similarity index 100% rename from sonos_artwork/navidrome 80x80.png rename to sonos_service/sonos_artwork/navidrome 80x80.png diff --git a/sonos_artwork/service_logo_200x800.svg b/sonos_service/sonos_artwork/service_logo_200x800.svg similarity index 100% rename from sonos_artwork/service_logo_200x800.svg rename to sonos_service/sonos_artwork/service_logo_200x800.svg diff --git a/sonos_artwork/service_logo_20x180.svg b/sonos_service/sonos_artwork/service_logo_20x180.svg similarity index 100% rename from sonos_artwork/service_logo_20x180.svg rename to sonos_service/sonos_artwork/service_logo_20x180.svg diff --git a/sonos_artwork/service_logo_40x40.svg b/sonos_service/sonos_artwork/service_logo_40x40.svg similarity index 100% rename from sonos_artwork/service_logo_40x40.svg rename to sonos_service/sonos_artwork/service_logo_40x40.svg