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 Lautsprecherhw:1,0→ Cockpit Lautsprecherhw:2,0→ Bug Lautsprecherhw: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:
- Dashboard starten:
make boot - Browser:
http://<boat-ip>:3000 - Login:
admin/bordanlage - Connections → Add → NMEA 0183/2000 Serial
- Device:
/dev/ttyUSB0, Baudrate:4800(Standard) oder38400
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! ⛵🌊