Release v1.0.4: OAuth statt Zeroconf

Zeroconf/mDNS schlägt in Containern fehl weil Port 5353 vom Host
(systemd-resolved/avahi) bereits belegt ist. mdns-sd kann den Socket
nicht teilen → librespot: 'discovery disabled'.

Lösung: OAuth-Authentifizierung (der offiziell unterstützte Weg in
librespot 0.7+). Das Gerät registriert sich bei Spotifys Servern und
erscheint ohne lokales mDNS in der Spotify-App.

- --disable-discovery + --enable-oauth + --system-cache /data/librespot-cache
- Credentials werden in /data persistent gespeichert (data:rw)
- Beim ersten Start: URL im Log → Browser öffnen → Spotify autorisieren
- Ab dem zweiten Start: direkt mit gecachten Credentials

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-06 18:06:32 +02:00
parent a0a8b15694
commit 76bb0694fe
2 changed files with 26 additions and 5 deletions

View File

@@ -134,19 +134,39 @@ if ! kill -0 "${ICECAST_PID}" 2>/dev/null; then
fi
bashio::log.info "Icecast läuft (PID: ${ICECAST_PID})"
# ── Credential-Cache-Verzeichnis ─────────────────────────────────────────────
# Credentials werden in /data gespeichert (persistentes Add-on Verzeichnis).
CREDENTIAL_CACHE="/data/librespot-cache"
mkdir -p "${CREDENTIAL_CACHE}"
# ── Librespot-Argumente zusammenstellen ───────────────────────────────────────
# Hinweis: librespot 0.7+ unterstützt keine Passwort-Authentifizierung mehr.
# Das Gerät wird automatisch via Zeroconf/mDNS im lokalen Netz gefunden.
# Die Spotify-App zeigt es als verfügbares Abspielgerät an.
# Zeroconf/mDNS funktioniert nicht zuverlässig in Containern, da Port 5353
# vom Host (systemd-resolved/avahi) bereits belegt ist.
# Stattdessen: OAuth-Authentifizierung. Das Gerät registriert sich bei
# Spotifys Servern und erscheint in der App ohne lokales mDNS.
LIBRESPOT_ARGS=(
"--name" "${DEVICE_NAME}"
"--bitrate" "${BITRATE}"
"--backend" "pipe"
"--disable-audio-cache"
"--initial-volume" "100"
"--disable-discovery"
"--enable-oauth"
"--system-cache" "${CREDENTIAL_CACHE}"
)
bashio::log.info "Authentifizierung: Zeroconf/mDNS (automatische Erkennung im Netz)"
# Prüfen ob bereits Credentials gecacht sind
if [ -f "${CREDENTIAL_CACHE}/credentials.json" ]; then
bashio::log.info "Gespeicherte Credentials gefunden Direktstart."
else
bashio::log.info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
bashio::log.info "ERSTER START Spotify-Autorisierung erforderlich!"
bashio::log.info ""
bashio::log.info "librespot gibt gleich eine URL aus. Öffne diese"
bashio::log.info "im Browser und melde dich mit deinem Spotify-Konto an."
bashio::log.info "Danach startet das Add-on automatisch durch."
bashio::log.info "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
fi
# ── Icecast-Source-URL ────────────────────────────────────────────────────────
ICECAST_SOURCE_URL="icecast://source:${ICECAST_PASSWORD}@localhost:${STREAM_PORT}${STREAM_MOUNT}"