diff --git a/birdnet-pipy/CHANGELOG.md b/birdnet-pipy/CHANGELOG.md
index fc629fcbc..f81d751b9 100644
--- a/birdnet-pipy/CHANGELOG.md
+++ b/birdnet-pipy/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.3-2 (2026-04-15)
+- Remove the `TZ` add-on option. Application timezone is now auto-derived in the Web UI from the station location (latitude/longitude) via `timezonefinder`, so a separately-configured container `TZ` only ever duplicated — and occasionally conflicted with — the UI-derived zone. All app-facing timestamps (dashboard, API responses, database) and Python service stdout (`api`/`main`/`birdnet`) already honor the UI-derived zone via the logging formatter; the frontend log viewer also re-converts Icecast timestamps on read. Net effect in the HA addon log pane: Python logs keep their local-time timestamps; only Icecast's raw stdout now prints in UTC — an intentional trade for a single source of truth. Deletes the now-redundant `rootfs/etc/cont-init.d/02-timezone.sh` added in 0.5.6-2.
+- Clean up the options YAML in DOCS.md and README.md. Removed `RECORDING_MODE` and `RTSP_URL` — these were documented as addon options but never wired: the app reads them from `user_settings.json` (configured via the Web UI), not from env vars. Also dropped `http_stream` from the list of modes (only `pulseaudio` and `rtsp` remain in `backend/config/constants.py`). Moved `STREAM_BITRATE` under an `env_vars:` example since it's honored by `start-icecast.sh` but has never been a first-class option in the schema.
+
## 0.6.3 (2026-04-13)
- Simplify ingress nginx to a single `` rewrite. Upstream now declares `` in `index.html` with Vite `base: './'` and uses relative paths for all internal URLs (built assets, axios `baseURL`, socket.io `path`). The previous seven `sub_filter` rules (href/src/`/api`/`/socket.io`) are no longer needed — one `` replacement is sufficient.
- Removes incidental brittleness from byte-level `sub_filter` matches in minified JS bundles (the old `/stream/` rule had inadvertently double-prefixed the literal `api.get("/stream/config")` string).
diff --git a/birdnet-pipy/DOCS.md b/birdnet-pipy/DOCS.md
index 2d5f297b1..7d3a08f56 100644
--- a/birdnet-pipy/DOCS.md
+++ b/birdnet-pipy/DOCS.md
@@ -15,14 +15,13 @@
## Options
```yaml
-TZ: Europe/Paris # Timezone, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
-ICECAST_PASSWORD: "" # Optional: set a persistent password for the audio stream
-STREAM_BITRATE: 320k # Bitrate for the mp3 stream
-RECORDING_MODE: rtsp # pulseaudio | http_stream | rtsp
-RTSP_URL: "" # Required if RECORDING_MODE is rtsp
-data_location: /config/data # Persistent data location for BirdNET-PiPy
+ICECAST_PASSWORD: "" # Optional: persistent password for the Icecast audio stream
+data_location: /config/data # Persistent data location (under /config, /share, or /data)
+env_vars: # Optional: extra environment variables
+ - name: STREAM_BITRATE
+ value: 320k # Icecast mp3 stream bitrate (default 320k)
```
## Audio
-The add-on expects audio via PulseAudio (default) or an RTSP stream configured in the BirdNET-PiPy settings.
+The add-on expects audio via PulseAudio (default) or an RTSP stream. Pick the source in the BirdNET-PiPy Web UI under **Settings → Audio** after the add-on first starts.
diff --git a/birdnet-pipy/README.md b/birdnet-pipy/README.md
index e2a79ed04..f99fc20b2 100644
--- a/birdnet-pipy/README.md
+++ b/birdnet-pipy/README.md
@@ -25,12 +25,11 @@ Options can be configured through three ways:
- Add-on options
```yaml
-TZ: Etc/UTC # Timezone, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
-ICECAST_PASSWORD: "" # Optional: set a persistent password for the audio stream
-STREAM_BITRATE: 320k # Bitrate for the mp3 stream
-RECORDING_MODE: rtsp # pulseaudio | http_stream | rtsp
-RTSP_URL: "" # Required if RECORDING_MODE is rtsp
-data_location: /config/data # Persistent data location for BirdNET-PiPy
+ICECAST_PASSWORD: "" # Optional: persistent password for the Icecast audio stream
+data_location: /config/data # Persistent data location (under /config, /share, or /data)
+env_vars: # Optional: extra environment variables
+ - name: STREAM_BITRATE
+ value: 320k # Icecast mp3 stream bitrate (default 320k)
```
- Config.yaml
diff --git a/birdnet-pipy/config.yaml b/birdnet-pipy/config.yaml
index 26c05a2da..842fee2c6 100644
--- a/birdnet-pipy/config.yaml
+++ b/birdnet-pipy/config.yaml
@@ -73,7 +73,6 @@ name: BirdNET-PiPy
options:
env_vars: []
ICECAST_PASSWORD: ''
- TZ: Europe/Paris
data_location: /config/data
panel_icon: mdi:bird
ports:
@@ -85,7 +84,6 @@ schema:
- name: match(^[A-Za-z0-9_]+$)
value: str?
ICECAST_PASSWORD: str?
- TZ: str?
certfile: str?
cifsdomain: str?
cifspassword: str?
@@ -97,4 +95,4 @@ schema:
ssl: bool?
slug: birdnet-pipy
url: https://github.com/alexbelgium/hassio-addons/tree/master/birdnet-pipy
-version: "0.6.3"
+version: "0.6.3-2"
diff --git a/birdnet-pipy/rootfs/etc/cont-init.d/02-timezone.sh b/birdnet-pipy/rootfs/etc/cont-init.d/02-timezone.sh
deleted file mode 100755
index 445a6e2f3..000000000
--- a/birdnet-pipy/rootfs/etc/cont-init.d/02-timezone.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/with-contenv bashio
-# shellcheck shell=bash
-set -euo pipefail
-
-# Use timezone defined in add-on options
-bashio::log.info "Setting timezone..."
-TZ_VALUE="$(bashio::config 'TZ' || true)"
-TZ_VALUE="${TZ_VALUE:-Europe/Paris}"
-
-if [ ! -f "/usr/share/zoneinfo/${TZ_VALUE}" ]; then
- bashio::log.warning "Invalid timezone '${TZ_VALUE}'. Falling back to Europe/Paris."
- bashio::log.warning "See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones for valid values."
- TZ_VALUE="Europe/Paris"
-fi
-
-# Apply timezone to the container
-ln -sf "/usr/share/zoneinfo/${TZ_VALUE}" /etc/localtime
-echo "${TZ_VALUE}" > /etc/timezone
-export TZ="${TZ_VALUE}"
-sed -i "1a TZ=\"${TZ_VALUE}\"" /etc/services.d/*
-
-# Update s6 container environment so child processes inherit the timezone
-if [ -d /var/run/s6/container_environment ]; then
- echo "${TZ_VALUE}" > /var/run/s6/container_environment/TZ
-fi
-
-bashio::log.notice "Timezone set to: ${TZ_VALUE}"