Move project from bordanlage/ to repo root
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
125
README.md
Normal file
125
README.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# Bordanlage – Boat Onboard System
|
||||
|
||||
A complete multiroom audio + navigation dashboard system for boats.
|
||||
Runs on any Docker-capable computer – fully simulated in dev mode (no hardware needed).
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- [Docker Desktop](https://www.docker.com/products/docker-desktop/) (or Docker Engine + Compose)
|
||||
- `make`
|
||||
- For Spotify Connect: a Spotify Premium account
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
cd bordanlage
|
||||
make dev
|
||||
```
|
||||
|
||||
Dashboard: **http://localhost:8080**
|
||||
|
||||
---
|
||||
|
||||
## Service URLs
|
||||
|
||||
| Service | URL | Description |
|
||||
|---------------|------------------------------|------------------------------|
|
||||
| Dashboard | http://localhost:8080 | Main touch UI |
|
||||
| SignalK | http://localhost:3000 | Navigation data + chart viewer |
|
||||
| Mopidy/Iris | http://localhost:6680/iris/ | Music player UI |
|
||||
| Snapcast Web | http://localhost:1780 | Multiroom audio control |
|
||||
| Jellyfin | http://localhost:8096 | Media library |
|
||||
| Portainer | http://localhost:9000 | Docker management |
|
||||
|
||||
---
|
||||
|
||||
## Spotify Connect
|
||||
|
||||
1. Run `make dev` (or `make boot` on the boat)
|
||||
2. Open Spotify on your phone/computer
|
||||
3. Tap the device icon (bottom right) → look for **"Bordanlage"**
|
||||
4. If it doesn't appear automatically: Go to **Connect to a Device** → enter the IP of the host machine manually
|
||||
|
||||
> On Linux (boat): set `network_mode: host` for the `librespot` service in `docker-compose.yml` for reliable mDNS discovery.
|
||||
|
||||
---
|
||||
|
||||
## AirPlay
|
||||
|
||||
1. Ensure the `shairport` container is running
|
||||
2. On your iPhone/Mac: open Control Center → tap AirPlay → select **"Bordanlage AirPlay"**
|
||||
|
||||
> On Mac: AirPlay works natively via Bonjour.
|
||||
> On Windows WSL2: the `avahi` container in `docker-compose.dev.yml` handles mDNS.
|
||||
|
||||
---
|
||||
|
||||
## Adding Music
|
||||
|
||||
Drop audio files into `./music/`. Mopidy and Jellyfin both mount this directory.
|
||||
|
||||
Trigger a Mopidy library scan:
|
||||
```bash
|
||||
curl -s http://localhost:6680/mopidy/rpc -d '{"jsonrpc":"2.0","id":1,"method":"local.scan"}' \
|
||||
-H "Content-Type: application/json"
|
||||
```
|
||||
|
||||
For Jellyfin: open http://localhost:8096 → Settings → Libraries → Scan.
|
||||
|
||||
---
|
||||
|
||||
## Connecting Real NMEA Hardware
|
||||
|
||||
Edit `docker-compose.yml` and uncomment the `signalk` device section:
|
||||
|
||||
```yaml
|
||||
signalk:
|
||||
devices:
|
||||
- /dev/ttyUSB0:/dev/ttyUSB0 # NMEA 0183 via USB-Serial
|
||||
```
|
||||
|
||||
Then configure the NMEA connection in SignalK at http://localhost:3000 → Server → Connections.
|
||||
|
||||
For NMEA 2000: use a Yacht Devices YDNU-02 or similar USB gateway.
|
||||
|
||||
---
|
||||
|
||||
## Migration to Real Boat
|
||||
|
||||
Changes needed in `docker-compose.yml`:
|
||||
|
||||
1. **Audio output per zone**: add `--soundcard hw:N,0` to each `zone-*` command and uncomment `/dev/snd`
|
||||
2. **Spotify/AirPlay discovery**: set `network_mode: host` for `librespot` and `shairport`
|
||||
3. **Hardware video decoding** (optional): uncomment `/dev/dri` in `jellyfin`
|
||||
4. **NMEA hardware**: uncomment `/dev/ttyUSB0` in `signalk`
|
||||
5. Set `DEV=false` in `.env`
|
||||
|
||||
Run `make boot` instead of `make dev`.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Spotify device not showing up on Mac:**
|
||||
- Ensure port 57621 (UDP+TCP) is accessible. Docker Desktop on Mac sometimes blocks UDP.
|
||||
- Try connecting manually: Spotify → "Connect to a Device" → "Connect to [IP]"
|
||||
|
||||
**AirPlay not visible on Windows:**
|
||||
- The `avahi` container requires D-Bus. Run Docker Desktop with host networking or use WSL2.
|
||||
|
||||
**Snapcast zones show as offline:**
|
||||
- Audio pipes must exist before snapserver starts. Run `make pipes` or `bash scripts/init-pipes.sh`
|
||||
|
||||
**Mopidy won't start:**
|
||||
- Check `docker compose logs mopidy`. The custom Dockerfile installs plugins on first build; rebuild with `make rebuild`
|
||||
|
||||
**Dashboard shows "No signal":**
|
||||
- In dev mode this is normal until mock data initializes (1–2 seconds)
|
||||
- In production: check that SignalK is running and the WebSocket URL is correct in `.env`
|
||||
|
||||
**Port conflicts:**
|
||||
- Edit the port mappings in `docker-compose.yml` or `docker-compose.dev.yml`
|
||||
Reference in New Issue
Block a user