Files
boWave/KIOSK_SETUP.md

7.7 KiB

🖥️ Kiosk-Modus Setup für Ubuntu Boot-Server

Diese Anleitung zeigt, wie du das boWave Dashboard im Vollbild-Kiosk-Modus auf einem Ubuntu-Server (z.B. Raspberry Pi oder Mini-PC) auf dem Boot einrichtest.


Ziel-Setup

  • Hardware: Ubuntu Server (ARM64 oder x86_64)
  • Display: Touchscreen oder Monitor
  • Modus: Chromium im Kiosk-Modus (Vollbild, keine Browser-UI)
  • Autostart: System startet direkt ins Dashboard
  • Audio: ALSA-Output zu echten Lautsprechern in 4 Zonen

1. Ubuntu Server Vorbereitung

System Update

sudo apt update && sudo apt upgrade -y

Docker installieren

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER

Nach Docker-Installation ausloggen und wieder einloggen!

X Server für GUI (falls Server-Edition ohne Desktop)

sudo apt install -y \
  xorg \
  openbox \
  chromium-browser \
  unclutter \
  pulseaudio

2. Repository Setup

Code auf den Boot-Server kopieren

cd /opt
sudo git clone https://github.com/YOUR_USERNAME/boWave.git
sudo chown -R $USER:$USER /opt/boWave
cd /opt/boWave

.env Datei anpassen

cp .env.example .env
nano .env

Wichtige Einstellungen:

SPOTIFY_NAME=Yacht_Bordanlage
BOAT_NAME=My Yacht
MUSIC_PATH=/media/usb/music  # USB-Stick mit Musik

3. Audio Hardware Konfiguration

ALSA Audio-Karten identifizieren

aplay -l

Output Beispiel:

card 0: Headphones [bcm2835 Headphones], device 0
card 1: USB [USB Audio Device], device 0
card 2: USB2 [USB Audio Device 2], device 0

Zonen zu Hardware mappen

In docker-compose.yml die Zonen-Konfiguration anpassen:

zone-salon:
  build: ./docker/snapclient
  restart: unless-stopped
  depends_on:
    - snapserver
  command: ["--hostID", "zone-salon", "--player", "alsa", "--soundcard", "hw:0,0"]
  devices:
    - /dev/snd:/dev/snd
  networks:
    - bordanlage

zone-cockpit:
  # ... gleiches Schema mit hw:1,0 usw.
  command: ["--hostID", "zone-cockpit", "--player", "alsa", "--soundcard", "hw:1,0"]
  devices:
    - /dev/snd:/dev/snd

Mapping:

  • hw:0,0 → Salon Lautsprecher
  • hw:1,0 → Cockpit Lautsprecher
  • hw:2,0 → Bug Lautsprecher
  • hw:3,0 → Heck Lautsprecher

4. NMEA Hardware (GPS, Sensoren)

USB-Serial Geräte finden

ls -l /dev/ttyUSB* /dev/ttyACM*

In docker-compose.yml aktivieren

signalk:
  image: signalk/signalk-server:latest
  restart: unless-stopped
  ports:
    - "3000:3000"
  volumes:
    - signalk-data:/home/node/.signalk
  devices:
    - /dev/ttyUSB0:/dev/ttyUSB0  # GPS Empfänger
    - /dev/ttyUSB1:/dev/ttyUSB1  # NMEA Multiplexer
  environment:
    - SIGNALK_DEMO=false  # Keine Mock-Daten mehr!
  networks:
    - bordanlage

SignalK konfigurieren:

  1. Dashboard starten: make boot
  2. Browser: http://<boat-ip>:3000
  3. Login: admin / bordanlage
  4. Connections → Add → NMEA 0183/2000 Serial
  5. Device: /dev/ttyUSB0, Baudrate: 4800 (Standard) oder 38400

5. Kiosk-Modus Autostart

Openbox Autostart konfigurieren

mkdir -p ~/.config/openbox
nano ~/.config/openbox/autostart

Inhalt:

#!/bin/bash

# Bildschirmschoner deaktivieren
xset s off
xset -dpms
xset s noblank

# Mauszeiger verstecken nach 5 Sekunden Inaktivität
unclutter -idle 5 &

# Docker Services starten
cd /opt/boWave && docker compose up -d

# Warte bis Dashboard bereit ist
sleep 30

# Chromium im Kiosk-Modus starten
chromium-browser \
  --kiosk \
  --noerrdialogs \
  --disable-infobars \
  --disable-session-crashed-bubble \
  --disable-restore-session-state \
  --disable-features=TranslateUI \
  --no-first-run \
  --fast-start \
  --disable-pinch \
  --overscroll-history-navigation=0 \
  http://localhost:8080

Ausführbar machen:

chmod +x ~/.config/openbox/autostart

X Server beim Boot starten

sudo nano /etc/systemd/system/kiosk.service

Inhalt:

[Unit]
Description=Boat Dashboard Kiosk
After=network.target docker.service

[Service]
Type=simple
User=pi
Environment=DISPLAY=:0
ExecStart=/usr/bin/startx /usr/bin/openbox-session
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Service aktivieren:

sudo systemctl daemon-reload
sudo systemctl enable kiosk.service
sudo systemctl start kiosk.service

6. Touchscreen Kalibrierung (optional)

Touchscreen-Support installieren

sudo apt install -y xinput-calibrator

Kalibrierung durchführen

DISPLAY=:0 xinput_calibrator

Folge den Anweisungen und speichere die Kalibrierungsdaten in:

sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

7. Netzwerk-Discovery für Spotify/AirPlay

docker-compose.yml anpassen

Für Spotify Connect und AirPlay benötigt man network_mode: host:

librespot:
  build: ./docker/librespot
  restart: unless-stopped
  network_mode: host  # Wichtig für mDNS/Zeroconf Discovery!
  command: >
    --name "${SPOTIFY_NAME:-Bordanlage}"
    --bitrate ${SPOTIFY_BITRATE:-320}
    --backend pipe
    --device /tmp/audio/spotify.pcm
  volumes:
    - pipes:/tmp/audio

shairport:
  image: mikebrady/shairport-sync:latest
  restart: unless-stopped
  network_mode: host  # Wichtig für AirPlay Discovery!
  volumes:
    - ./config/shairport.conf:/etc/shairport-sync.conf:ro
    - pipes:/tmp/audio

Hinweis: Bei network_mode: host fallen die ports: Mappings weg.


8. Production Build starten

Services im Production Mode starten

cd /opt/boWave
docker compose up -d

Unterschiede zu Dev-Mode:

  • Dashboard wird als optimiertes Bundle gebaut (nginx)
  • Port 8080 (statt 8090 dev server)
  • Kein HMR/Live-Reload
  • Echte Audio-Hardware (ALSA)
  • Echter NMEA Input (kein Demo-Mode)

9. System-Monitoring

Logs ansehen

docker compose logs -f dashboard
docker compose logs -f snapserver
docker compose logs -f signalk

Container Status

docker compose ps

System neu starten

sudo reboot

Das Dashboard sollte automatisch nach ~30 Sekunden im Vollbild erscheinen.


10. Wartung & Updates

Code aktualisieren

cd /opt/boWave
git pull
docker compose down
docker compose build --no-cache
docker compose up -d

Backup der Konfiguration

# SignalK Daten sichern
docker run --rm -v boWave_signalk-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/signalk-backup.tar.gz -C /data .

# Mopidy Library sichern
docker run --rm -v boWave_mopidy-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/mopidy-backup.tar.gz -C /data .

Troubleshooting

Dashboard zeigt nicht im Vollbild

# Prüfe ob X Server läuft
ps aux | grep X

# Prüfe Kiosk Service
sudo systemctl status kiosk.service
sudo journalctl -u kiosk.service -f

Audio funktioniert nicht

# Prüfe ALSA Devices
aplay -l

# Teste Audio direkt
aplay /usr/share/sounds/alsa/Front_Center.wav

# Prüfe Snapclient Logs
docker compose logs zone-salon

Spotify wird nicht gefunden

# Prüfe ob network_mode: host gesetzt ist
docker compose config | grep network_mode

# Prüfe librespot Logs
docker compose logs librespot

SignalK zeigt keine Daten

# Prüfe ob SIGNALK_DEMO=false
docker compose config | grep SIGNALK_DEMO

# Prüfe Serial Device
ls -l /dev/ttyUSB*

# SignalK Logs
docker compose logs signalk

Fertig! 🎉

Dein Boot hat jetzt ein vollautomatisches Dashboard-System:

  • Startet automatisch beim Boot
  • Vollbild-Kiosk-Modus ohne Browser-UI
  • Touchscreen-Steuerung
  • Multiroom Audio über echte Lautsprecher
  • Live NMEA-Daten von echten Sensoren
  • Spotify Connect & AirPlay über Boot-Netzwerk

Viel Spaß auf dem Wasser! 🌊