Files
hassio-addons/birdnet-pipy/rootfs/etc/services.d/icecast/run
Yudong Sun 312906997a fix(birdnet-pipy): fix icecast crash and Live Feed broken in ingress
Two fixes for the birdnet-pipy addon:

1. Icecast log permission error: 01-structure.sh creates /app/data/logs
   as root, but start-icecast.sh runs via gosu icecast2. The first log
   write fails with "Permission denied", crashing icecast in a restart
   loop (502 Bad Gateway on the Live Feed page). Fix: chown the log dir
   and file to icecast2 before dropping privileges.

2. Live Feed double-prefixed request in ingress mode: the "/stream/"
   sub_filter rule also matches 'api.get("/stream/config")' in the JS
   bundle, producing a request like
   /hassio_ingress/TOKEN/api/hassio_ingress/TOKEN/stream/config (404).
   The upstream frontend (BirdNET-PiPy >= 0.6.2) now strips the leading
   slash from stream URLs so they resolve via <base href> — the
   sub_filter rule is no longer needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-10 22:46:51 -04:00

17 lines
711 B
Plaintext

#!/usr/bin/with-contenv bashio
# shellcheck shell=bash
set -euo pipefail
export PULSE_SERVER="${PULSE_SERVER:-unix:/run/pulse/native}"
# Ensure the log directory and file are writable by the icecast2 user.
# /app/data/logs is created as root by 01-structure.sh, but start-icecast.sh
# runs via gosu icecast2 and would otherwise fail with "Permission denied"
# on the first log write, taking icecast down before it can boot.
mkdir -p /app/data/logs
touch /app/data/logs/icecast.log
# Use `icecast2:` (trailing colon) so chown picks the user's primary group,
# which is `icecast` on Debian, not `icecast2`.
chown icecast2: /app/data/logs /app/data/logs/icecast.log
gosu icecast2 /usr/local/bin/start-icecast.sh