signalk-jukebox
v0.1.1
Published
EXPERIMENTAL, UNTESTED on a real boat. Whole-boat music playback for SignalK: containerized Mopidy + Snapcast multi-zone audio, per-zone AirPlay receivers, and an NMEA2000/Fusion-Link interface, all sharing one live state. Fusion-Link MFD interop is imple
Maintainers
Readme
signalk-jukebox
⚠️ AirPlay requires turning off this container's network isolation. Off by default — see Security note: AirPlay and host networking before enabling
airplay.hostNetworking.
Whole-boat music playback for Signal K: a containerized Mopidy music server (local files + optional internet radio / Spotify), multi-zone audio via Snapcast, per-zone AirPlay receivers, and NMEA2000/Fusion-Link interop for existing chartplotters — all sharing one live playback/zone state across every interface (web, REST, N2K).
Status: first experimental release — completely untested by a human. The container image builds and runs, and its Mopidy/Snapserver plumbing has been verified in isolation (build tooling, not a real boat), but nobody has yet used this plugin end to end on an actual vessel. Expect rough edges. See SPEC.md (what/why) and ARCHITECTURE.md (how) for the full design — including open risks that haven't been tested against real hardware yet: whether Fusion-Link-aware MFDs respond usefully to this plugin's best-effort broadcasts (SPEC.md §13), and real AirPlay/Spotify playback end to end.
Follows the ManagedContainer archetype from
signalk-container-helper.
Development
npm install
npm run build
npm test
npm run formatSecurity note: AirPlay and host networking
To make AirPlay zones discoverable and usable from an iPhone/iPad, this
plugin has to run its container in host networking mode
(airplay.hostNetworking in the config panel, off by default). Normally a
container is sealed off from the rest of your system, on its own private
network, only able to use the specific ports it's explicitly given —
that's what keeps a bug or a compromise in one piece of software from
spilling over into everything else running on the same machine. Host
networking mode removes that seal completely: this container's processes
sit directly on your boat's real network, alongside your SignalK server
and everything else running on that machine, able to use any port and
reach anything on the network the machine itself can reach.
This is a real, deliberate trade — not a bug, and not something we can engineer around (see SPEC.md §12 for what was tried and why it didn't work) — but it does mean you're trusting this specific plugin's container with a level of access your other SignalK plugins don't have. Only enable it if you actually want AirPlay and accept that trade; leave it off otherwise.
License
Apache-2.0
