Compare commits

...
20 Commits
Author SHA1 Message Date
AlexandreandClaude Opus 5.5 1d64eab4ef fix(immich): mask JWT_SECRET and other secrets in the startup log (#3165) (#3166)
export_options in 99-run.sh only masked keys containing an uppercase
"PASS", so JWT_SECRET and the lowercase cifspassword were printed in
clear on every start, and env_vars was dumped as a raw JSON array.
Reuse the case-insensitive pattern 00-global_var.sh already applies and
mask env_vars wholesale (00-global_var.sh already logs each entry
masked by name). The immich_cuda, immich_noml and immich_openvino
rootfs symlink to immich/rootfs, so all four are bumped.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 09:35:10 +01:00
AlexandreandClaude Opus 5.5 c03f62746a fix: use bashio::app.* instead of the deprecated bashio::addon.* across add-ons (#3167)
* fix: use bashio::app.* instead of the deprecated bashio::addon.*

bashio v0.18.0 renamed every bashio::addon.* function to bashio::app.* and
keeps the old names as aliases that log "bashio::addon.X is deprecated" the
first time they run, which current base images (bashio v0.19.0) now print.

Rename every call across the add-ons and .templates. bashio::app.* does not
exist before v0.18.0, so ha_automatic_packages.sh now installs v0.19.0 and also
replaces an older bashio (no apps.sh) that a pinned base image ships; the
add-ons that install bashio themselves (cleanuparr, maintainerr, netalertx)
move from 0.14.3 to 0.19.0. The standalone shim defines bashio::app.* and keeps
bashio::addon.* as silent aliases for user scripts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: drop add-on version bumps; pin every bashio to 0.19.0

The rename ships with each add-on's next upstream release instead of a
rebuild of all of them now, so config.yaml and CHANGELOG.md are back to
master. Every place that names a bashio version (ha_automatic_packages.sh,
the Dockerfile pins and ENV lines, the weekly updater workflow) now names
the same one, 0.19.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* chore: move pinned Home Assistant base images to releases with bashio 0.19.0

The add-ons pinned to an old hassio-addons base image carried bashio 0.14.3
to 0.17.5, which has no bashio::app.*. Move them to the latest releases,
which ship bashio 0.19.0: base 21.0.10 (portainer, portainer_be,
portainer_agent, zzz_archived_tor, and spotweb's Dockerfile default) and
debian-base 9.5.1 (bitwarden, collabora). Add-ons on :stable and
home-assistant/*-base:3.23 already get 0.19.0 and are unchanged. tor's
build.json loses its armv7 entry, which the add-on no longer declares and
base 21.0.10 does not publish.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 09:33:43 +01:00
AlexandreandClaude Opus 5.5 649ce9e4c1 docs(portainer_be): explain the return to 2.45.3 and the reinstall it needs (#3163)
* docs(portainer_be): explain the return to 2.45.3 and the reinstall it needs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(portainer_be): keep the Portainer database across the reinstall

Supervisor deletes an app's /data on uninstall whatever the keep-data
choice, and Portainer stores its database there. Export it with
Portainer's own backup and restore it on the first-start screen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 08:25:25 +01:00
AlexandreandClaude Opus 5.5 b06899520e fix(updater): skip a dockerhub_by_date addon when no tag survives the filters (#3164)
GNU date reads an empty -d as today, so an empty LASTVERSION became
"-DD-MM-YYYY" and passed the empty-version check.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 08:23:42 +01:00
alexbelgiumandClaude Opus 5.5 dd34fc67b9 birdnet-go-dev: rebuild 20261028 after fixing fork PRs #63 and #79
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 07:05:20 +01:00
AlexandreandClaude Opus 5.5 fb9cbd1c8f birdnet-go-dev: make merge-prs.sh --check compile the merged tree (#3162)
A clean textual merge is not a working build. Five of the last six
birdnet-go-dev builds were auto-reverted after --check passed, because the
merged tree failed to compile (duplicate import, undefined symbols, a
removed package). --check now runs task frontend-build and a Go compile
without linking once nothing conflicts, exits 3 when that fails and 4
when a needed tool is missing.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 06:55:41 +01:00
Alexandre 5c1fc62ad0 Clean up CHANGELOG by removing old entries
Removed outdated version information and minor bug fix notes.
2026-10-28 06:48:06 +01:00
Alexandre cb2d41a0c9 Update config.yaml 2026-10-28 06:47:33 +01:00
github-actions 25c615acaa GitHub bot: changelog [nobuild] 2026-10-28 05:46:27 +00:00
Alexandre d937674d5b Update config.yaml 2026-10-28 06:44:26 +01:00
alexbelgium 4727beb0d8 Updater bot : portainer_be updated to 2026.10.28 (upstream 2.45.3) 2026-10-28 06:34:07 +01:00
alexbelgium 68a4d93642 Updater bot : letta_code updated to 0.34.26 (upstream 0.34.26) 2026-10-28 06:32:42 +01:00
alexbelgium 914508781f Updater bot : komga updated to 1.29.2 (upstream 1.29.2) 2026-10-28 06:32:36 +01:00
alexbelgium dd601e480a Updater bot : epicgamesfree updated to 2026.10.28 (upstream debian-2026-10-28) 2026-10-28 06:31:15 +01:00
alexbelgium 2d02d18d45 Updater bot : codex updated to 2.5.7 (upstream 2.5.7) 2026-10-28 06:30:43 +01:00
alexbelgium bf62ba0a2c Updater bot : claude_desktop updated to 07308545.19 (upstream v3.3.13+claude4.29.0) 2026-10-28 06:30:31 +01:00
alexbelgium 970a5df076 Updater bot : birdnet-pi-zach updated to 2026.10.28 (upstream 2.8.4) 2026-10-28 06:29:09 +01:00
AlexandreandClaude Opus 5.5 7c39806ab7 feat(addons_updater): accept a ~regex in github_tagfilter for every source (#3161)
* feat(updater): accept a ~regex in github_exclude for every source

lastversion already reads --exclude ~pattern as a regex, so the
GitHub-style sources supported it; the dockerhub and Codeberg paths
filtered with sed instead. Route those through one helper that honours
the same ~ prefix, leaving unprefixed values on the old sed match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(updater): describe the unprefixed github_exclude match accurately

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(updater): keep each github_exclude site's original sed match

The Codeberg fallback matched with sed "/X/d", not "/.*X.*/d"; routing
it through the Docker Hub form broke anchored values (^v, rc$) and made
a leading * a sed error. The helper now takes each caller's own sed
script, so unprefixed values run byte-for-byte the command they ran before.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(updater): show the github_exclude regex that keeps only numeric versions

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(updater): move the regex opt-in from github_exclude to github_tagfilter

github_exclude goes back to its original code. github_tagfilter now takes
a "~regex" on every source: lastversion already reads --only that way,
and the dockerhub and Codeberg paths match their tags against it.
Unprefixed values run the original commands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 06:24:19 +01:00
Alexandre b18716d417 Update github_tagfilter regex pattern 2026-10-28 06:21:47 +01:00
Alexandre 845e401bc2 Add github_tagfilter to updater.json 2026-10-28 06:19:31 +01:00
165 changed files with 459 additions and 349 deletions

No files matched your search

+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
# Install bashio
if grep -q -rnw "$files/" -e 'bashio' && [ ! -f "/usr/bin/bashio" ]; then
[ "$VERBOSE" = true ] && echo "install bashio"
BASHIO_VERSION="0.14.3"
BASHIO_VERSION="0.19.0"
mkdir -p /tmp/bashio
curl -f -L -s -S "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" | tar -xzf - --strip 1 -C /tmp/bashio
mv /tmp/bashio/lib /usr/lib/bashio
+5 -5
View File
@@ -26,14 +26,14 @@ if ! bashio::supervisor.ping 2>/dev/null; then
done
else
bashio::log.blue '-----------------------------------------------------------'
bashio::log.blue " Add-on: $(bashio::addon.name)"
bashio::log.blue " $(bashio::addon.description)"
bashio::log.blue " Add-on: $(bashio::app.name)"
bashio::log.blue " $(bashio::app.description)"
bashio::log.blue '-----------------------------------------------------------'
bashio::log.blue " Add-on version: $(bashio::addon.version)"
if bashio::var.true "$(bashio::addon.update_available)"; then
bashio::log.blue " Add-on version: $(bashio::app.version)"
if bashio::var.true "$(bashio::app.update_available)"; then
bashio::log.magenta " There is an update available!"
bashio::log.magenta " Latest version: $(bashio::addon.version_latest)"
bashio::log.magenta " Latest version: $(bashio::app.version_latest)"
else
bashio::log.green " You are running the latest version."
fi
+3 -3
View File
@@ -53,7 +53,7 @@ if bashio::config.has_value 'localdisks'; then
subfolder="${entry#*/}"
if [[ "/$subfolder/" == */../* ]]; then
bashio::log.fatal "$entry : the folder can't contain '..'"
bashio::addon.stop
bashio::app.stop
continue
fi
fi
@@ -143,7 +143,7 @@ if bashio::config.has_value 'localdisks'; then
rmdir "$staging" /mnt/.localdisks 2> /dev/null || true
if [ -n "$error" ]; then
bashio::log.fatal "Unable to mount $entry : $error"
bashio::addon.stop
bashio::app.stop
else
bashio::log.info "Success! $subfolder of $disk mounted to /mnt/$target"
fi
@@ -159,7 +159,7 @@ if bashio::config.has_value 'localdisks'; then
|| (
bashio::log.fatal "Unable to mount local drives! Please check the name."
rmdir /mnt/"$disk"
bashio::addon.stop
bashio::app.stop
)
done
+2 -2
View File
@@ -327,7 +327,7 @@ if bashio::config.has_value 'networkdisks'; then
bashio::log.fatal "...... incorrect Username, Password, or Domain! Script will stop."
cleanup_cred
rm -f "$ERRORCODE_FILE" 2>/dev/null || true
bashio::addon.stop
bashio::app.stop
elif echo "$OUTPUT" | grep -q "tree connect failed" || echo "$OUTPUT" | grep -q "NT_STATUS_CONNECTION_DISCONNECTED"; then
echo "... using SMBv1"
bashio::log.warning "...... share reachable only with legacy SMBv1 (NT1) negotiation. Forcing SMBv1 options."
@@ -467,7 +467,7 @@ if bashio::config.has_value 'networkdisks'; then
cleanup_cred
rm -f "$ERRORCODE_FILE" 2>/dev/null || true
bashio::addon.stop
bashio::app.stop
fi
done
fi
+1 -1
View File
@@ -62,7 +62,7 @@ if [[ "$CONFIGLOCATION" == "/config" ]]; then
fi
# Migrate option
if [[ "$(bashio::config "CONFIG_LOCATION")" == "/config/addons_config"* ]] && [ -f /config/config.yaml ]; then
bashio::addon.option "CONFIG_LOCATION" "/config/config.yaml"
bashio::app.option "CONFIG_LOCATION" "/config/config.yaml"
CONFIGSOURCE="/config/config.yaml"
fi
fi
+4 -4
View File
@@ -50,7 +50,7 @@ SHEBANG_ERRORS=()
probe_script_content='
set -e
if ! command -v bashio::addon.version >/dev/null 2>&1; then
if ! command -v bashio::app.version >/dev/null 2>&1; then
for f in \
/usr/lib/bashio/bashio.sh \
/usr/lib/bashio/lib.sh \
@@ -66,7 +66,7 @@ if ! command -v bashio::addon.version >/dev/null 2>&1; then
fi
set +e
_bv="$(bashio::addon.version 2>/dev/null)"
_bv="$(bashio::app.version 2>/dev/null)"
_rc=$?
set -e
@@ -75,7 +75,7 @@ if [ "$_rc" -ne 0 ] || [ -z "$_bv" ] || [ "$_bv" = "null" ]; then
if [ -f "$_sf" ]; then
# shellcheck disable=SC1090
. "$_sf"
_bv="$(bashio::addon.version 2>/dev/null || true)"
_bv="$(bashio::app.version 2>/dev/null || true)"
break
fi
done
@@ -147,7 +147,7 @@ if [ -z "$shebang" ]; then
exit 1
fi
if ! command -v bashio::addon.version >/dev/null 2>&1; then
if ! command -v bashio::app.version >/dev/null 2>&1; then
for f in /usr/lib/bashio/bashio.sh /usr/lib/bashio/lib.sh /usr/src/bashio/bashio.sh /usr/local/lib/bashio/bashio.sh /usr/local/lib/bashio-standalone.sh; do
if [ -f "$f" ]; then
# shellcheck disable=SC1090
+17 -11
View File
@@ -170,12 +170,12 @@ bashio::supervisor.ping() {
# -----------------------------------------------------------------------------
# Add-on metadata
# -----------------------------------------------------------------------------
bashio::addon.name() { printf '%s' "${ADDON_NAME:-Standalone container}"; }
bashio::addon.description() { printf '%s' "${ADDON_DESCRIPTION:-Running without Home Assistant Supervisor}"; }
bashio::addon.version() { printf '%s' "${BUILD_VERSION:-1.0}"; }
bashio::addon.version_latest(){ printf '%s' "${ADDON_VERSION_LATEST:-${BUILD_VERSION:-1.0}}"; }
bashio::app.name() { printf '%s' "${ADDON_NAME:-Standalone container}"; }
bashio::app.description() { printf '%s' "${ADDON_DESCRIPTION:-Running without Home Assistant Supervisor}"; }
bashio::app.version() { printf '%s' "${BUILD_VERSION:-1.0}"; }
bashio::app.version_latest(){ printf '%s' "${ADDON_VERSION_LATEST:-${BUILD_VERSION:-1.0}}"; }
bashio::addon.update_available() {
bashio::app.update_available() {
if [ -n "${ADDON_VERSION_LATEST:-}" ] && [ "${ADDON_VERSION_LATEST:-}" != "${BUILD_VERSION:-}" ]; then
printf '%s' "true"
else
@@ -183,14 +183,14 @@ bashio::addon.update_available() {
fi
}
bashio::addon.ingress_port() { printf '%s' "${ADDON_INGRESS_PORT:-}"; }
bashio::addon.ingress_entry() { printf '%s' "${ADDON_INGRESS_ENTRY:-}"; }
bashio::addon.ip_address() { printf '%s' "${ADDON_IP_ADDRESS:-}"; }
bashio::app.ingress_port() { printf '%s' "${ADDON_INGRESS_PORT:-}"; }
bashio::app.ingress_entry() { printf '%s' "${ADDON_INGRESS_ENTRY:-}"; }
bashio::app.ip_address() { printf '%s' "${ADDON_IP_ADDRESS:-}"; }
# Ports:
# - numeric arg "8080" -> env PORT_8080 or ADDON_PORT_8080, fallback to the number
# - non-numeric "WEB_PORT" -> resolve as config/env key
bashio::addon.port() {
bashio::app.port() {
local arg="${1:-}"
if [[ "$arg" =~ ^[0-9]+$ ]]; then
local v=""
@@ -202,8 +202,8 @@ bashio::addon.port() {
fi
}
# addon.option : write/delete option in JSON when possible; fallback export env
bashio::addon.option() {
# app.option : write/delete option in JSON when possible; fallback export env
bashio::app.option() {
local key="${1:-}" value="${2-__BASHIO_UNSET__}" file="${STANDALONE_OPTIONS_JSON:-}"
[ -n "$key" ] || return 0
@@ -224,6 +224,12 @@ bashio::addon.option() {
fi
}
# Pre-v0.18.0 bashio names, still used by user custom scripts
for _f in name description version version_latest update_available ingress_port ingress_entry ip_address port option; do
eval "bashio::addon.${_f}() { bashio::app.${_f} \"\$@\"; }"
done
unset _f
# -----------------------------------------------------------------------------
# System info
# -----------------------------------------------------------------------------
+5 -4
View File
@@ -227,15 +227,16 @@ for files in "/etc/services.d" "/etc/cont-init.d"; do
# Next directory if does not exists
if ! ls $files 1> /dev/null 2>&1; then continue; fi
# Bashio
if grep -q -rnw "${files}" -e 'bashio' 2>/dev/null && [ ! -f "/usr/bin/bashio" ]; then
# Bashio, also replacing one older than v0.18.0 (no apps.sh): the scripts call bashio::app.*
if grep -q -rnw "${files}" -e 'bashio' 2>/dev/null && [ ! -f "/usr/lib/bashio/apps.sh" ]; then
[ "$VERBOSE" = true ] && echo "install bashio"
BASHIO_VERSION="v0.17.5"
BASHIO_VERSION="v0.19.0"
mkdir -p /tmp/bashio
curl -f -L -s -S "https://github.com/hassio-addons/bashio/archive/${BASHIO_VERSION}.tar.gz" \
| tar -xzf - --strip 1 -C /tmp/bashio
rm -rf /usr/lib/bashio
mv /tmp/bashio/lib /usr/lib/bashio
ln -s /usr/lib/bashio/bashio /usr/bin/bashio
ln -sf /usr/lib/bashio/bashio /usr/bin/bashio
rm -rf /tmp/bashio
fi
+8 -8
View File
@@ -116,7 +116,7 @@ SHEBANG_ERRORS=()
probe_script_content='
set -e
if ! command -v bashio::addon.version >/dev/null 2>&1; then
if ! command -v bashio::app.version >/dev/null 2>&1; then
for f in \
/usr/lib/bashio/bashio.sh \
/usr/lib/bashio/lib.sh \
@@ -133,7 +133,7 @@ fi
# Try regular bashio, fallback to standalone if unavailable or fails
set +e
_bv="$(bashio::addon.version 2>/dev/null)"
_bv="$(bashio::app.version 2>/dev/null)"
_rc=$?
set -e
@@ -142,7 +142,7 @@ if [ "$_rc" -ne 0 ] || [ -z "$_bv" ] || [ "$_bv" = "null" ]; then
if [ -f "$_sf" ]; then
# shellcheck disable=SC1090
. "$_sf"
_bv="$(bashio::addon.version 2>/dev/null || true)"
_bv="$(bashio::app.version 2>/dev/null || true)"
break
fi
done
@@ -206,7 +206,7 @@ for candidate in "${candidate_shebangs[@]}"; do
done
if [ -z "$shebang" ]; then
echo "ERROR: No valid shebang found (unable to execute bashio::addon.version via candidates)." >&2
echo "ERROR: No valid shebang found (unable to execute bashio::app.version via candidates)." >&2
echo "Tried:" >&2
printf ' - %s\n' "${candidate_shebangs[@]}" >&2
if [ "${#SHEBANG_ERRORS[@]}" -gt 0 ]; then
@@ -297,8 +297,8 @@ fi
# Wait for the Supervisor API #
##############################
# Many cont-init scripts build their nginx ingress config out of bashio::addon.ip_address and
# bashio::addon.ingress_port. Both come from one GET /addons/self/info, and when that is answered
# Many cont-init scripts build their nginx ingress config out of bashio::app.ip_address and
# bashio::app.ingress_port. Both come from one GET /addons/self/info, and when that is answered
# before the Supervisor is ready bashio prints nothing: the add-on then either writes
# "listen : default_server;" -- which nginx rejects with `invalid port in ":"` -- or aborts under
# set -e and leaves the %%port%% placeholders in place. Either way the add-on cannot serve ingress.
@@ -307,7 +307,7 @@ fi
#
# Going through bashio rather than curl is what makes this reliable rather than merely likely:
# bashio caches a successful /addons/self/info under ${CACHE_DIR:-/tmp/.bashio}, so once this
# returns, every later bashio::addon.* call in every cont-init script reads that file instead of
# returns, every later bashio::app.* call in every cont-init script reads that file instead of
# asking the Supervisor again. A probe that only proved the API was up a moment ago would leave
# the very next call free to fail.
#
@@ -352,7 +352,7 @@ wait_for_supervisor() {
# Run in a child shell so bashio's globals and traps stay out of the entrypoint; its own error
# logging is dropped because a failed attempt here is expected, not news.
# shellcheck disable=SC2016
if timeout "$attempt" bash -c '. "$1" && [ -n "$(bashio::addon.ip_address)" ]' \
if timeout "$attempt" bash -c '. "$1" && [ -n "$(bashio::app.ip_address)" ]' \
_ "$BASHIO_LIB" >/dev/null 2>&1; then
[ "$announced" -eq 0 ] || echo "Supervisor API ready after $((SECONDS - started))s"
return 0
+8
View File
@@ -1,3 +1,11 @@
## 2026.10.1 (2026-10-28)
- With `dockerhub_by_date: true`, skip the addon when no tag survives the filters, instead of publishing a version made of the date alone such as `-28-10-2026`
## 2026.10 (2026-10-28)
- `github_tagfilter` accepts a regular expression when prefixed with `~`, now for every source: dockerhub and Codeberg tags are matched against it, as lastversion already did for the other sources. Values without the `~` prefix keep matching as before
- Example, to keep only numeric versions such as `1.2.3` or `v1.2.3`: `"github_tagfilter": "~^v?[0-9.]+$"`
- Migrate legacy add-on configuration map names to current app configuration terminology.
## 2026.09 (2026-09-12)
+1 -1
View File
@@ -61,7 +61,7 @@ You can add the following tags in the file :
- github_fulltag: true is for example "v3.0.1-ls67" false is "3.0.1"
- github_beta: true/false ; should it look only for releases or prereleases ok
- github_havingasset : true if there is a requirement that a release has binaries and not just source
- github_tagfilter: filter a text in the release name
- github_tagfilter: filter a text in the release name. Prefix it with `~` to use a regular expression instead, for every source; keep to syntax that both Python and `grep -E` understand (`[0-9]` rather than `\d`) and without spaces. Example to keep only numeric versions such as `1.2.3` or `v1.2.3`: `"github_tagfilter": "~^v?[0-9.]+$"`
- github_exclude: exclude a text in the release name
- last_update: automatically populated, date of last upstream update
- repository: 'name/repo' coming from github
+1 -1
View File
@@ -30,4 +30,4 @@ schema:
slug: updater
udev: true
url: https://github.com/alexbelgium/hassio-addons/tree/master/addons_updater
version: "2026.09"
version: "2026.10.1"
@@ -43,6 +43,12 @@ function sed_replacement() {
printf '%s' "$1" | sed -e 's/[\/&]/\\&/g'
}
# Keep the versions matching a "~regex" github_tagfilter, as lastversion
# --only reads it for the other sources; all of them when there is none
function regex_versions() {
grep -E -- "$REGEX_TEXT" || true
}
#Defining github value
LOGINFO="... github authentification" && if [ "$VERBOSE" = true ]; then bashio::log.info "$LOGINFO"; fi
@@ -105,6 +111,10 @@ for f in */; do
HAVINGASSET=$(jq -r .github_havingasset updater.json)
SOURCE=$(jq -r .source updater.json)
FILTER_TEXT=$(jq -r .github_tagfilter updater.json)
REGEX_TEXT=""
if [[ "$FILTER_TEXT" == "~"* ]]; then
REGEX_TEXT="${FILTER_TEXT#\~}"
fi
EXCLUDE_TEXT=$(jq -r .github_exclude updater.json)
EXCLUDE_TEXT="${EXCLUDE_TEXT:-zzzzzzzzzzzzzzzz}"
PAUSED=$(jq -r .paused updater.json)
@@ -141,6 +151,10 @@ for f in */; do
#Prepare tag flag
if [ "${FILTER_TEXT}" = "null" ] || [ "${FILTER_TEXT}" = "" ]; then
FILTER_TEXT=""
elif [[ "$FILTER_TEXT" == "~"* ]]; then
# Docker Hub only filters names by plain text, the regex is applied to its answer
LOGINFO="... $SLUG : filter_text regex is on" && if [ "$VERBOSE" = true ]; then bashio::log.info "$LOGINFO"; fi
FILTER_TEXT=""
else
LOGINFO="... $SLUG : filter_text is on" && if [ "$VERBOSE" = true ]; then bashio::log.info "$LOGINFO"; fi
FILTER_TEXT="&name=$FILTER_TEXT"
@@ -156,6 +170,7 @@ for f in */; do
LASTVERSION=$(
curl -f -L -s --fail "https://hub.docker.com/v2/repositories/${DOCKERHUB_REPO}/${DOCKERHUB_IMAGE}/tags?page_size=$LISTSIZE$FILTER_TEXT" \
| jq '.results | .[] | .name' -r \
| regex_versions \
| sed -e '/.*latest.*/d' \
| sed -e '/.*dev.*/d' \
| sed -e '/.*nightly.*/d' \
@@ -169,6 +184,7 @@ for f in */; do
&& LASTVERSION=$(
curl -f -L -s --fail "https://hub.docker.com/v2/repositories/${DOCKERHUB_REPO}/${DOCKERHUB_IMAGE}/tags?page_size=$LISTSIZE$FILTER_TEXT" \
| jq '.results | .[] | .name' -r \
| regex_versions \
| sed -e '/.*latest.*/d' \
| sed -e '/.*dev.*/!d' \
| sed -e "/.*$EXCLUDE_TEXT.*/d" \
@@ -180,6 +196,7 @@ for f in */; do
&& LASTVERSION=$(
curl -f -L -s --fail "https://hub.docker.com/v2/repositories/${DOCKERHUB_REPO}/${DOCKERHUB_IMAGE}/tags?page_size=${LISTSIZE}&ordering=last_updated$FILTER_TEXT" \
| jq '.results | .[] | .name' -r \
| regex_versions \
| sed -e '/.*latest.*/d' \
| sed -e '/.*dev.*/d' \
| sed -e '/.*nightly.*/d' \
@@ -187,6 +204,7 @@ for f in */; do
| sort -V \
| tail -n 1
) \
&& [ -n "$LASTVERSION" ] \
&& DATE=$(
curl -f -L -s --fail "https://hub.docker.com/v2/repositories/${DOCKERHUB_REPO}/${DOCKERHUB_IMAGE}/tags/?page_size=${LISTSIZE}&ordering=last_updated$FILTER_TEXT" \
| jq '.results[] | select(.name==$LASTVERSION) | .last_updated' -r --arg LASTVERSION "$LASTVERSION"
@@ -347,7 +365,11 @@ for f in */; do
if [ -n "$CODEBERG_TAGS" ]; then
if [ -n "$FILTER_TEXT" ]; then
CODEBERG_TAGS=$(echo "$CODEBERG_TAGS" | grep "$FILTER_TEXT" || true)
if [[ "$FILTER_TEXT" == "~"* ]]; then
CODEBERG_TAGS=$(echo "$CODEBERG_TAGS" | regex_versions)
else
CODEBERG_TAGS=$(echo "$CODEBERG_TAGS" | grep "$FILTER_TEXT" || true)
fi
fi
if [ -n "$EXCLUDE_TEXT" ]; then
@@ -8,9 +8,9 @@ set -e
declare ingress_interface
declare ingress_port
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
@@ -8,9 +8,9 @@ set -e
declare ingress_interface
declare ingress_port
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
+1 -1
View File
@@ -22,7 +22,7 @@ if [ -f "$CONFIG_LOCATION" ]; then
# under each configured *arr integration (radarr.base_url,
# sonarr.base_url, ...) and those must not be touched.
sed -i "/^general:/,/^[^ ]/{ s| base_url:.*| base_url: /$slug|; }" "$CONFIG_LOCATION"
bashio::addon.restart
bashio::app.restart
fi
fi
fi
@@ -8,9 +8,9 @@ set -e
declare ingress_interface
declare ingress_port
ingress_port="$(bashio::addon.ingress_port)"
ingress_interface="$(bashio::addon.ip_address)"
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port="$(bashio::app.ingress_port)"
ingress_interface="$(bashio::app.ip_address)"
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
+4
View File
@@ -1,3 +1,7 @@
## 20261028 (28-10-2026)
- Synced with upstream and rebuilt against the current open PRs of the fork. The 20261027 build failed and was auto-reverted: the first-daily-consensus PR imported `hasSettingsChanged` twice after its merge with main. The species-workspace PR also no longer compiled on main (`publishAndSaveSettings` and `noteToDetectionResponse` were removed upstream). Both PR branches have been fixed.
## 20261020 (20-10-2026)
- Synced with upstream and rebuilt against the current open PRs of the fork. Fork PR #60 (Safari/WebKit live spectrogram) no longer merged onto main after the audio source-node cache refactor; its branch has been updated with main.
+1 -1
View File
@@ -129,5 +129,5 @@ slug: birdnet-go-dev
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "20261020"
version: "20261028"
video: true
+34 -1
View File
@@ -20,6 +20,13 @@
# stale, sometimes belonging to a closed PR), so GitHub can report CLEAN for a PR
# that does not merge onto main at all.
#
# A clean textual merge is not a working build: two PRs can each add the same
# import, or a PR can call a function that upstream renamed, and git merges both
# without a conflict. So when nothing conflicts, --check then compiles the merged
# tree the way the build does - `task frontend-build` and a Go compile (no link) -
# and exits 3 if that fails. It needs task, go, gcc and npm on PATH and exits 4,
# without judging the tree, when one of them is missing.
#
# Environment:
# BIRDNET_FORK owner/repo of the fork (default alexbelgium/birdnet-go)
# BIRDNET_UPSTREAM owner/repo of the upstream (default tphakala/birdnet-go)
@@ -107,6 +114,20 @@ merges_onto_main() {
return "${rc}"
}
# Does the merged tree in the current directory compile? Runs the same
# `task frontend-build` as the add-on build, then compiles the Go code. `go list -export`
# type-checks and compiles every package without linking, so it needs the TensorFlow Lite
# headers (fetched by the tree's own Taskfile) but not the C library. noembed matches the
# build and leaves out the model files; the amd64 openvino tag is not covered.
verify_compiles() {
log "Building the frontend of the merged tree"
task frontend-build || return 1
log "Compiling the Go code of the merged tree"
task --silent check-tensorflow > /dev/null || return 1
CGO_ENABLED=1 CGO_CFLAGS="-I${PWD}/.cache/tensorflow" \
go list -export -tags noembed -f '' ./... > /dev/null || return 1
}
git config --global user.email "addon-builder@users.noreply.github.com"
git config --global user.name "BirdNET-Go Addon Builder"
git config --global advice.detachedHead false
@@ -179,7 +200,19 @@ done
if [ "${CHECK_ONLY}" = "1" ]; then
if [ "${#conflicting[@]}" -eq 0 ]; then
log "CHECK OK: every open non-draft PR merges into the combined build tree"
log "Every open non-draft PR merges into the combined build tree"
for tool in task go gcc npm; do
if ! command -v "${tool}" > /dev/null 2>&1; then
echo "!!! BUILD CHECK cannot run: ${tool} is not on PATH, so the merged tree was not compiled." >&2
exit 4
fi
done
if ! verify_compiles; then
echo "!!! BUILD CHECK FAILED: the merged tree does not compile, so the add-on build would fail." >&2
echo "!!! The errors above name the files; fix the PR that owns them, then re-run --check." >&2
exit 3
fi
log "CHECK OK: every open non-draft PR merges and the combined tree compiles"
exit 0
fi
echo "!!! CHECK FAILED: ${#conflicting[@]} PR(s) would break the add-on build" >&2
@@ -10,9 +10,9 @@ declare ingress_interface
declare ingress_port
echo "Adapting for ingress"
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
@@ -10,9 +10,9 @@ declare ingress_interface
declare ingress_port
echo "Adapting for ingress"
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
+4
View File
@@ -1,3 +1,7 @@
## 2026.10.28 (2026-10-28)
- Update to latest version from zach7036/BirdNET-Pi-Enhanced-Version (changelog : https://github.com/zach7036/BirdNET-Pi-Enhanced-Version/releases)
- Upstream tag : 2.8.4
- Local disks: `localdisks` can now mount a single folder of a disk with `disk/folder` (e.g. `sda1/public` or `NAS/public`, mounted at `/mnt/<disk>/<folder>`). Existing values are unchanged.
- Migrate legacy add-on configuration map names to current app configuration terminology.
## 2026.08.15 (15-08-2026)
+1 -1
View File
@@ -116,5 +116,5 @@ tmpfs: true
udev: true
url: https://github.com/alexbelgium/hassio-addons/tree/master/birdnet-pi-zach
usb: true
version: 2026.08.15
version: "2026.10.28"
video: true
@@ -47,7 +47,7 @@ done
# CHECK PORT #
##############
if [[ "$(bashio::addon.port "80")" == 3000 ]]; then
if [[ "$(bashio::app.port "80")" == 3000 ]]; then
bashio::log.fatal "This is crazy but your port is set to 3000 and streamlit doesn't accept this port! You need to change it from the addon options and restart. Thanks"
sleep infinity
fi
@@ -34,7 +34,7 @@ if bashio::supervisor.ping 2> /dev/null; then
done
# Check if port 80 is correctly configured
if [ -n "$(bashio::addon.port "80")" ] && [ "$(bashio::addon.port "80")" != 80 ]; then
if [ -n "$(bashio::app.port "80")" ] && [ "$(bashio::app.port "80")" != 80 ]; then
bashio::log.fatal "The port 80 is enabled, but should still be 80 if you want automatic SSL certificates generation to work."
fi
fi
@@ -18,9 +18,9 @@ fi
#################
# Variables
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
# Quits if ingress is not active
if [[ "$ingress_entry" != "/api"* ]]; then
+2 -2
View File
@@ -1,8 +1,8 @@
{
"last_update": "10-07-2026",
"last_update": "2026-10-28",
"repository": "alexbelgium/hassio-addons",
"slug": "birdnet-pi-zach",
"source": "github",
"upstream_repo": "zach7036/BirdNET-Pi-Enhanced-Version",
"upstream_version": "2026.08.15"
"upstream_version": "2.8.4"
}
@@ -47,7 +47,7 @@ done
# CHECK PORT #
##############
if [[ "$(bashio::addon.port "80")" == 3000 ]]; then
if [[ "$(bashio::app.port "80")" == 3000 ]]; then
bashio::log.fatal "This is crazy but your port is set to 3000 and streamlit doesn't accept this port! You need to change it from the addon options and restart. Thanks"
sleep infinity
fi
@@ -34,7 +34,7 @@ if bashio::supervisor.ping 2> /dev/null; then
done
# Check if port 80 is correctly configured
if [ -n "$(bashio::addon.port "80")" ] && [ "$(bashio::addon.port "80")" != 80 ]; then
if [ -n "$(bashio::app.port "80")" ] && [ "$(bashio::app.port "80")" != 80 ]; then
bashio::log.fatal "The port 80 is enabled, but should still be 80 if you want automatic SSL certificates generation to work."
fi
fi
@@ -18,9 +18,9 @@ fi
#################
# Variables
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
# Quits if ingress is not active
if [[ "$ingress_entry" != "/api"* ]]; then
@@ -9,9 +9,9 @@ set -e
declare ingress_interface
declare ingress_port
ingress_port="$(bashio::addon.ingress_port)"
ingress_interface="$(bashio::addon.ip_address)"
ingress_entry="$(bashio::addon.ingress_entry)"
ingress_port="$(bashio::app.ingress_port)"
ingress_interface="$(bashio::app.ip_address)"
ingress_entry="$(bashio::app.ingress_entry)"
sed -i \
-e "s|proxy_pass http://api|proxy_pass http://127.0.0.1|g" \
+1 -1
View File
@@ -14,7 +14,7 @@
# 1 Build Image #
#################
ARG BUILD_FROM=ghcr.io/hassio-addons/debian-base:9.1.0
ARG BUILD_FROM=ghcr.io/hassio-addons/debian-base:9.5.1
###############################################################################
# Get prebuild containers from Vaultwarden
###############################################################################
+2 -2
View File
@@ -1,4 +1,4 @@
---
build_from:
aarch64: ghcr.io/hassio-addons/debian-base/aarch64:9.1.0
amd64: ghcr.io/hassio-addons/debian-base/amd64:9.1.0
aarch64: ghcr.io/hassio-addons/debian-base/aarch64:9.5.1
amd64: ghcr.io/hassio-addons/debian-base/amd64:9.5.1
@@ -42,7 +42,7 @@ if bashio::config.has_value 'PASSWORD'; then
PASSWORD=$(bashio::config 'PASSWORD')
passwd -d abc
echo -e "$PASSWORD\n$PASSWORD" | passwd abc
elif ! bashio::config.has_value 'PASSWORD' && [[ -n "$(bashio::addon.port "3000")" ]] && [[ -n $(bashio::addon.port "3001") ]]; then
elif ! bashio::config.has_value 'PASSWORD' && [[ -n "$(bashio::app.port "3000")" ]] && [[ -n $(bashio::app.port "3001") ]]; then
bashio::log.warning "SEVERE RISK IDENTIFIED"
bashio::log.warning "You are opening an external port but your password is not defined"
bashio::log.warning "You risk being hacked ! Please disable the external ports, or use a password"
@@ -4,7 +4,7 @@ set -e
# nginx Path
NGINX_CONFIG=/etc/nginx/sites-available/ingress.conf
SUBFOLDER="$(bashio::addon.ingress_entry)/"
SUBFOLDER="$(bashio::app.ingress_entry)/"
# Copy template
cp /defaults/default.conf "${NGINX_CONFIG}"
@@ -15,7 +15,7 @@ mv tmpfile "${NGINX_CONFIG}"
# Remove ipv6
sed -i '/listen \[::\]/d' "${NGINX_CONFIG}"
# Add ingress parameters
sed -i "s|3000|$(bashio::addon.ingress_port)|g" "${NGINX_CONFIG}"
sed -i "s|3000|$(bashio::app.ingress_port)|g" "${NGINX_CONFIG}"
sed -i "s|CWS|8082|g" "${NGINX_CONFIG}"
sed -i '/proxy_buffering/a proxy_set_header Accept-Encoding "";' "${NGINX_CONFIG}"
sed -i '/proxy_buffering/a sub_filter_once off;' "${NGINX_CONFIG}"
+2 -2
View File
@@ -3,7 +3,7 @@
set -e
NGINX_CONFIG=/etc/nginx/sites-available/ingress.conf
SUBFOLDER="$(bashio::addon.ingress_entry)"
SUBFOLDER="$(bashio::app.ingress_entry)"
# Ensure subfolder ends with a trailing slash (except for root)
if [[ -n "${SUBFOLDER}" && "${SUBFOLDER}" != "/" ]]; then
@@ -22,7 +22,7 @@ mv tmpfile "${NGINX_CONFIG}"
sed -i '/listen \[::\]/d' "${NGINX_CONFIG}"
# Adapt ports and upstream paths for Home Assistant ingress
sed -i "s|3000|$(bashio::addon.ingress_port)|g" "${NGINX_CONFIG}"
sed -i "s|3000|$(bashio::app.ingress_port)|g" "${NGINX_CONFIG}"
sed -i "s|SUBFOLDER|/|g" "${NGINX_CONFIG}"
sed -i "s|CWS|8082|g" "${NGINX_CONFIG}"
sed -i "s|REPLACE_HOME|${HOME:-/root}|g" "${NGINX_CONFIG}"
+1 -1
View File
@@ -18,7 +18,7 @@ ARG BUILD_FROM
ARG BUILD_VERSION
ARG BUILD_UPSTREAM="latest"
FROM ${BUILD_FROM}${BUILD_UPSTREAM}
ENV BASHIO_VERSION=1.29.1
ENV BASHIO_VERSION=0.19.0
##################
# 2 Modify Image #
@@ -12,7 +12,7 @@ declare ingress_interface
declare ingress_port
#declare keyfile
#port=$(bashio::addon.port 80)
#port=$(bashio::app.port 80)
#if bashio::var.has_value "${port}"; then
# bashio::config.require.ssl
#
@@ -54,12 +54,12 @@ if bashio::config.true 'login_with_ha_user'; then
bashio::log.info "Ingress logs in as the Home Assistant username"
fi
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
#ha_port=$(bashio::core.port)
sed -i "s/%%ingress_user%%/${ingress_user}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
#sed -i "s/%%haport%%/${ha_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%UIPATH%%|$(bashio::addon.ingress_entry)|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%UIPATH%%|$(bashio::app.ingress_entry)|g" /etc/nginx/servers/ingress.conf
@@ -9,9 +9,9 @@ declare ingress_interface
declare ingress_port
declare ingress_entry
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
+4
View File
@@ -1,4 +1,8 @@
## 07308545.19 (2026-10-28)
- Update to latest version from aaddrick/claude-desktop-debian (changelog : https://github.com/aaddrick/claude-desktop-debian/releases)
- Upstream tag : v3.3.13+claude4.29.0
## 07308545.18 (2026-10-27)
- Update to latest version from aaddrick/claude-desktop-debian (changelog : https://github.com/aaddrick/claude-desktop-debian/releases)
- Upstream tag : v3.3.13+claude3.6556.2
+1 -1
View File
@@ -175,5 +175,5 @@ schema:
slug: claude_desktop
udev: true
url: https://github.com/alexbelgium/hassio-addons
version: "07308545.18"
version: "07308545.19"
video: true
@@ -51,7 +51,7 @@ if bashio::config.has_value 'PASSWORD'; then
PASSWORD=$(bashio::config 'PASSWORD')
passwd -d abc
echo -e "$PASSWORD\n$PASSWORD" | passwd abc
elif [[ -n "$(bashio::addon.port "3000")" ]] || [[ -n "$(bashio::addon.port "3001")" ]]; then
elif [[ -n "$(bashio::app.port "3000")" ]] || [[ -n "$(bashio::app.port "3001")" ]]; then
bashio::log.warning "SEVERE RISK IDENTIFIED"
bashio::log.warning "You are opening an external port but your password is not defined"
bashio::log.warning "You risk being hacked ! Please disable the external ports, or use a password"
@@ -3,7 +3,7 @@
set -e
NGINX_CONFIG=/etc/nginx/sites-available/ingress.conf
SUBFOLDER="$(bashio::addon.ingress_entry)"
SUBFOLDER="$(bashio::app.ingress_entry)"
# Ensure subfolder ends with a trailing slash (except for root)
if [[ -n "${SUBFOLDER}" && "${SUBFOLDER}" != "/" ]]; then
@@ -22,7 +22,7 @@ mv tmpfile "${NGINX_CONFIG}"
sed -i '/listen \[::\]/d' "${NGINX_CONFIG}"
# Adapt ports and upstream paths for Home Assistant ingress
sed -i "s|3000|$(bashio::addon.ingress_port)|g" "${NGINX_CONFIG}"
sed -i "s|3000|$(bashio::app.ingress_port)|g" "${NGINX_CONFIG}"
sed -i "s|SUBFOLDER|/|g" "${NGINX_CONFIG}"
# Same value 20-folders.sh exports to the Selkies services; both must move together or nginx
# proxies the data websocket to a port nothing listens on. That script also normalises it into
+2 -2
View File
@@ -4,6 +4,6 @@
"github_fulltag": true,
"slug": "claude_desktop",
"paused": false,
"upstream_version": "v3.3.13+claude3.6556.2",
"last_update": "2026-10-27"
"upstream_version": "v3.3.13+claude4.29.0",
"last_update": "2026-10-28"
}
+1 -1
View File
@@ -48,7 +48,7 @@ COPY rootfs/ /
RUN find /. -type f \( -name "*.sh" \) -print -exec chmod +x {} \;
# Install bashio standalone
RUN BASHIO_VERSION="0.14.3" && \
RUN BASHIO_VERSION="0.19.0" && \
mkdir -p /tmp/bashio && \
curl -f -L -s -S "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" | tar -xzf - --strip 1 -C /tmp/bashio && \
mv /tmp/bashio/lib /usr/lib/bashio && \
@@ -51,7 +51,7 @@ declare ingress_interface
declare ingress_port
# declare keyfile
CLOUDCMD_PREFIX=$(bashio::addon.ingress_entry)
CLOUDCMD_PREFIX=$(bashio::app.ingress_entry)
export CLOUDCMD_PREFIX
declare ADDON_PROTOCOL=http
@@ -60,9 +60,9 @@ if bashio::config.true 'ssl'; then
bashio::config.require.ssl
fi
# port=$(bashio::addon.port 80)
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
# port=$(bashio::app.port 80)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s|%%protocol%%|${ADDON_PROTOCOL}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
+3
View File
@@ -1,4 +1,7 @@
## 2.5.7 (2026-10-28)
- Update to latest version from ajslater/codex (changelog : https://github.com/ajslater/codex/releases)
## 2.5.6 (2026-10-24)
- Update to latest version from ajslater/codex (changelog : https://github.com/ajslater/codex/releases)
+1 -1
View File
@@ -101,4 +101,4 @@ schema:
slug: codex
udev: true
url: https://github.com/alexbelgium/hassio-addons
version: "2.5.6"
version: "2.5.7"
+2 -2
View File
@@ -8,7 +8,7 @@ CSRF=""
# Get HA Port
result=$(bashio::api.supervisor GET /core/info true || true)
port=$(bashio::jq "$result" ".data.port")
addon_port=$(bashio::addon.port 9810)
addon_port=$(bashio::app.port 9810)
# Get all possible URLs
result=$(bashio::api.supervisor GET /core/api/config true || true)
@@ -44,7 +44,7 @@ for url in "${urls[@]}"; do
if bashio::var.has_value "${url}"; then
if [[ "${url}" != "null" ]] && [[ "${url}" != "null.local" ]]; then
CSRF="https://${url}:${port},http://${url}:${port},https://${url},http://${url}",${CSRF}
if bashio::var.has_value "$(bashio::addon.port 9810)"; then
if bashio::var.has_value "$(bashio::app.port 9810)"; then
CSRF="https://${url}:${addon_port},http://${url}:${addon_port}",${CSRF}
fi
fi
+4 -4
View File
@@ -26,7 +26,7 @@ declare ingress_interface
declare ingress_port
#declare keyfile
FB_BASEURL="$(bashio::addon.ingress_entry)"
FB_BASEURL="$(bashio::app.ingress_entry)"
export FB_BASEURL
declare ADDON_PROTOCOL=http
@@ -35,9 +35,9 @@ if bashio::config.true 'ssl'; then
ADDON_PROTOCOL=https
fi
#port=$(bashio::addon.port 80)
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
#port=$(bashio::app.port 80)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s|%%protocol%%|${ADDON_PROTOCOL}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
+2 -2
View File
@@ -1,9 +1,9 @@
{
"github_beta": "true",
"last_update": "2026-10-24",
"last_update": "2026-10-28",
"repository": "alexbelgium/hassio-addons",
"slug": "codex",
"source": "github",
"upstream_repo": "ajslater/codex",
"upstream_version": "2.5.6"
"upstream_version": "2.5.7"
}
+1 -1
View File
@@ -46,7 +46,7 @@ FROM ${BUILD_FROM} AS collabora
###############################################################################
# Build the actual add-on on a base that has a shell
###############################################################################
FROM ghcr.io/hassio-addons/debian-base:9.3.0
FROM ghcr.io/hassio-addons/debian-base:9.5.1
# Inherited from the base, declared here so it is visible to hadolint and to
# anyone adding a pipe below. Note that the linkage check does NOT pipe into
@@ -9,9 +9,9 @@ declare ingress_interface
declare ingress_port
declare ingress_entry
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
+4 -4
View File
@@ -28,7 +28,7 @@ if [[ "$INGRESS" == "true" ]]; then
declare ingress_port
#declare keyfile
FB_BASEURL="$(bashio::addon.ingress_entry)"
FB_BASEURL="$(bashio::app.ingress_entry)"
export FB_BASEURL
declare ADDON_PROTOCOL=http
@@ -37,9 +37,9 @@ if [[ "$INGRESS" == "true" ]]; then
ADDON_PROTOCOL=https
fi
#port=$(bashio::addon.port 80)
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
#port=$(bashio::app.port 80)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s|%%protocol%%|${ADDON_PROTOCOL}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
@@ -9,9 +9,9 @@ declare ingress_interface
declare ingress_port
declare ingress_entry
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
+1 -1
View File
@@ -7,7 +7,7 @@ set -e
# DEGOOG_BASE_URL. Setting it to the ingress entry makes the pages correct under
# ingress as they are ; nginx maps the direct port onto the same path.
# The listener is forced because nginx and the healthcheck are built around it.
DEGOOG_BASE_URL="$(bashio::addon.ingress_entry)"
DEGOOG_BASE_URL="$(bashio::app.ingress_entry)"
export DEGOOG_BASE_URL
export DEGOOG_DATA_DIR=/config
export DEGOOG_PORT=4445
+2 -2
View File
@@ -10,8 +10,8 @@ declare ingress_interface
declare ingress_port
echo "Adapting for ingress"
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
+2 -2
View File
@@ -10,8 +10,8 @@ declare ingress_interface
declare ingress_port
echo "Adapting for ingress"
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
@@ -8,9 +8,9 @@ set -e
declare ingress_interface
declare ingress_port
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
@@ -8,9 +8,9 @@ set -e
declare ingress_interface
declare ingress_port
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
+4
View File
@@ -1,4 +1,8 @@
## 2026.10.28 (2026-10-28)
- Update to latest version from charlocharlie/epicgames-freegames
- Upstream tag : debian-2026-10-28
## 2026.10.25 (2026-10-25)
- Update to latest version from charlocharlie/epicgames-freegames
- Upstream tag : debian-2026-10-25
+1 -1
View File
@@ -88,5 +88,5 @@ schema:
slug: epicgamesfree
udev: true
url: https://github.com/alexbelgium/hassio-addons
version: "2026.10.25"
version: "2026.10.28"
webui: "[PROTO:ssl]://[HOST]:[PORT:3000]"
+2 -2
View File
@@ -2,10 +2,10 @@
"dockerhub_by_date": true,
"dockerhub_list_size": 2,
"github_exclude": "-",
"last_update": "2026-10-25",
"last_update": "2026-10-28",
"repository": "alexbelgium/hassio-addons",
"slug": "epicgamesfree",
"source": "dockerhub",
"upstream_repo": "charlocharlie/epicgames-freegames",
"upstream_version": "debian-2026-10-25"
"upstream_version": "debian-2026-10-28"
}
+4 -4
View File
@@ -42,7 +42,7 @@ declare ingress_interface
declare ingress_port
#declare keyfile
FB_BASE_URL=$(bashio::addon.ingress_entry)
FB_BASE_URL=$(bashio::app.ingress_entry)
export FB_BASE_URL
declare ADDON_PROTOCOL=http
@@ -55,9 +55,9 @@ fi
# shell and therefore cannot read the addon options
echo -n "${ADDON_PROTOCOL}" > /run/health_protocol
#port=$(bashio::addon.port 80)
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
#port=$(bashio::app.port 80)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s|%%protocol%%|${ADDON_PROTOCOL}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
@@ -46,7 +46,7 @@ declare ingress_port
# The app's own baseURL is the Supervisor ingress-entry path, unchanged from
# before: FileBrowser emits that prefix as absolute links in its HTML and JS,
# so it is also the path direct ip:port access has to use (see direct.conf).
FB_BASEURL=$(bashio::addon.ingress_entry)
FB_BASEURL=$(bashio::app.ingress_entry)
export FB_BASEURL
declare ADDON_PROTOCOL=http
@@ -55,9 +55,9 @@ if bashio::config.true 'ssl'; then
ADDON_PROTOCOL=https
fi
#port=$(bashio::addon.port 80)
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
#port=$(bashio::app.port 80)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s|%%protocol%%|${ADDON_PROTOCOL}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
@@ -6,8 +6,8 @@ slug=fireflyiii_data_importer
if [[ "$(bashio::config "CONFIG_LOCATION")" == *"/addons_config/fireflyiii_data_importer"* ]]; then
bashio::log.warning "Reset CONFIG_LOCATION to /config"
bashio::addon.option "CONFIG_LOCATION" "/config"
bashio::addon.restart
bashio::app.option "CONFIG_LOCATION" "/config"
bashio::app.restart
fi
CONFIGSOURCE="$(bashio::config "CONFIG_LOCATION")"
@@ -154,7 +154,7 @@ if [ "${RUN_ONCE}" = "true" ]; then
bashio::log.info "Stopping the add-on"
sleep 2
bashio::addon.stop
bashio::app.stop
exit "${exit_code}"
fi
+1 -1
View File
@@ -64,7 +64,7 @@ for file in /config/app.ini /etc/templates/app.ini; do
if bashio::config.has_value 'ROOT_URL'; then
bashio::log.blue "ROOT_URL set, using value : $(bashio::config 'ROOT_URL')"
else
ROOT_URL="$PROTOCOL://$(bashio::config 'DOMAIN'):$(bashio::addon.port 3000)"
ROOT_URL="$PROTOCOL://$(bashio::config 'DOMAIN'):$(bashio::app.port 3000)"
bashio::log.blue "ROOT_URL not set, using extrapolated value : $ROOT_URL"
sed -i "/server/a ROOT_URL=$ROOT_URL" "$file"
fi
@@ -12,7 +12,7 @@ declare keyfile
# General values
port=5001
sed -i "s|%%port%%|$port|g" /etc/nginx/servers/ssl.conf
sed -i "s|%%interface%%|$(bashio::addon.ip_address)|g" /etc/nginx/servers/ssl.conf
sed -i "s|%%interface%%|$(bashio::app.ip_address)|g" /etc/nginx/servers/ssl.conf
# Ssl values
if bashio::config.true 'ssl'; then
@@ -29,5 +29,5 @@ if bashio::config.true 'ssl'; then
sed -i "s|default_server|ssl|g" /etc/nginx/servers/ssl.conf
sed -i "/proxy_params.conf/a ssl_certificate /ssl/$certfile;" /etc/nginx/servers/ssl.conf
sed -i "/proxy_params.conf/a ssl_certificate_key /ssl/$keyfile;" /etc/nginx/servers/ssl.conf
bashio::log.info "Ssl enabled, please use https for connection. UI is at https://YOURIP:$(bashio::addon.port "$port")"
bashio::log.info "Ssl enabled, please use https for connection. UI is at https://YOURIP:$(bashio::app.port "$port")"
fi
+1 -1
View File
@@ -44,7 +44,7 @@ else
bashio::log.warning "Secret key saved to addon options."
GRAMPSWEB_SECRET_KEY="$(cat /config/secret/secret)"
export GRAMPSWEB_SECRET_KEY
bashio::addon.option "GRAMPSWEB_SECRET_KEY" "$GRAMPSWEB_SECRET_KEY"
bashio::app.option "GRAMPSWEB_SECRET_KEY" "$GRAMPSWEB_SECRET_KEY"
fi
##################
@@ -12,7 +12,7 @@ declare ingress_user
declare ingress_port
declare keyfile
port=$(bashio::addon.port 80)
port=$(bashio::app.port 80)
if bashio::var.has_value "${port}"; then
bashio::config.require.ssl
@@ -29,8 +29,8 @@ if bashio::var.has_value "${port}"; then
fi
fi
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
@@ -46,13 +46,13 @@ fi
sed -i "s|%%ingress_user%%|${ingress_user}|g" /etc/nginx/servers/ingress.conf
# auth-header trusts any REMOTE_USER header, and the published port reaches Tomcat without nginx
if [[ "$(bashio::config 'EXTENSIONS')" == *auth-header* ]] && bashio::var.has_value "$(bashio::addon.port 8080)"; then
bashio::log.warning "SECURITY RISK: the auth-header extension is enabled and port 8080 is published on host port $(bashio::addon.port 8080)."
if [[ "$(bashio::config 'EXTENSIONS')" == *auth-header* ]] && bashio::var.has_value "$(bashio::app.port 8080)"; then
bashio::log.warning "SECURITY RISK: the auth-header extension is enabled and port 8080 is published on host port $(bashio::app.port 8080)."
bashio::log.warning "Anyone who can reach that port can send a REMOTE_USER header and log in as any Guacamole user, including guacadmin."
bashio::log.warning "Disable the port in the add-on Network settings and use Ingress, or remove auth-header from EXTENSIONS."
fi
# Implement SUBFOLDER value
if [ -f /etc/s6-overlay/s6-rc.d/svc-autostart/run ]; then sed -i "1a SUBFOLDER=$(bashio::addon.ingress_url)" /etc/s6-overlay/s6-rc.d/svc-autostart/run; fi
if [ -f /etc/services.d/guacamole/run ]; then sed -i "2a SUBFOLDER=$(bashio::addon.ingress_url)" /etc/services.d/guacamole/run; fi
if [ -f /etc/services.d/guacd/run ]; then sed -i "2a SUBFOLDER=$(bashio::addon.ingress_url)" /etc/services.d/guacd/run; fi
if [ -f /etc/s6-overlay/s6-rc.d/svc-autostart/run ]; then sed -i "1a SUBFOLDER=$(bashio::app.ingress_url)" /etc/s6-overlay/s6-rc.d/svc-autostart/run; fi
if [ -f /etc/services.d/guacamole/run ]; then sed -i "2a SUBFOLDER=$(bashio::app.ingress_url)" /etc/services.d/guacamole/run; fi
if [ -f /etc/services.d/guacd/run ]; then sed -i "2a SUBFOLDER=$(bashio::app.ingress_url)" /etc/services.d/guacd/run; fi
+3
View File
@@ -1,4 +1,7 @@
## 3.3.5.2 (2026-10-28)
- Mask JWT_SECRET, cifspassword, env_vars and other secret options in the startup log (#3165)
## 3.3.5.1 (2026-10-27)
- Update to latest version from ghcr.io/imagegenius/immich:3
- Upstream tag : 3.3.5
+1 -1
View File
@@ -141,6 +141,6 @@ slug: immich
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "3.3.5.1"
version: "3.3.5.2"
video: true
webui: http://[HOST]:[PORT:8080]
+3 -3
View File
@@ -13,7 +13,7 @@ export_options() {
for key in "${keys[@]}"; do
local value
value=$(jq -r ".${key}" "${json_source}")
if bashio::config.false "verbose" || [[ "$key" == *"PASS"* ]]; then
if bashio::config.false "verbose" || [[ "${key}" == "env_vars" || "${key,,}" =~ pass|token|secret|apikey|api_key|private|pwd|key ]]; then
bashio::log.blue "${key}=******"
else
bashio::log.blue "${key}='${value}'"
@@ -39,7 +39,7 @@ check_db_hostname() {
bashio::log.warning "The addon will stop until this is fixed."
bashio::log.warning "------------------------------------"
sleep 30
bashio::addon.stop
bashio::app.stop
else
echo "$DB_HOSTNAME is reachable."
fi
@@ -89,7 +89,7 @@ setup_root_user() {
else
bashio::log.warning "DB_ROOT_PASSWORD not set. Generating a random 12-character alphanumeric password and storing it in the addon options."
export DB_ROOT_PASSWORD="$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c12)"
bashio::addon.option "DB_ROOT_PASSWORD" "${DB_ROOT_PASSWORD}"
bashio::app.option "DB_ROOT_PASSWORD" "${DB_ROOT_PASSWORD}"
# Store generated password in the s6 environment if available
if [ -d /var/run/s6/container_environment ]; then
+3
View File
@@ -1,4 +1,7 @@
## 3.3.5.2 (2026-10-28)
- Mask JWT_SECRET, cifspassword, env_vars and other secret options in the startup log (#3165)
## 3.3.5.1 (2026-10-27)
- Update to latest version from ghcr.io/imagegenius/immich:3-cuda
- Upstream tag : 3.3.5
+1 -1
View File
@@ -139,6 +139,6 @@ slug: immich_cuda
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "3.3.5.1"
version: "3.3.5.2"
video: true
webui: http://[HOST]:[PORT:8080]
+3
View File
@@ -1,4 +1,7 @@
## 3.3.5.2 (2026-10-28)
- Mask JWT_SECRET, cifspassword, env_vars and other secret options in the startup log (#3165)
## 3.3.5.1 (2026-10-27)
- Update to latest version from ghcr.io/imagegenius/immich:3-noml
- Upstream tag : 3.3.5
+1 -1
View File
@@ -140,6 +140,6 @@ slug: immich_noml
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "3.3.5.1"
version: "3.3.5.2"
video: true
webui: http://[HOST]:[PORT:8080]
+3
View File
@@ -1,4 +1,7 @@
## 3.3.5.2 (2026-10-28)
- Mask JWT_SECRET, cifspassword, env_vars and other secret options in the startup log (#3165)
## 3.3.5.1 (2026-10-27)
- Update to latest version from ghcr.io/imagegenius/immich:3-openvino
- Upstream tag : 3.3.5
+1 -1
View File
@@ -140,6 +140,6 @@ slug: immich_openvino
udev: true
url: https://github.com/alexbelgium/hassio-addons
usb: true
version: "3.3.5.1"
version: "3.3.5.2"
video: true
webui: http://[HOST]:[PORT:8080]
@@ -11,7 +11,7 @@ declare ingress_interface
declare ingress_port
declare keyfile
port=$(bashio::addon.port 80)
port=$(bashio::app.port 80)
if bashio::var.has_value "${port}"; then
bashio::config.require.ssl
@@ -28,8 +28,8 @@ if bashio::var.has_value "${port}"; then
fi
fi
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
+6 -6
View File
@@ -63,16 +63,16 @@ declare ingress_interface
declare ingress_port
#declare keyfile
#INGRESSURL=$(bashio::config 'local_ip_port')$(bashio::addon.ingress_url)
#INGRESSURL=$(bashio::config 'local_ip_port')$(bashio::app.ingress_url)
host_port=$(bashio::core.port)
ingress_url=$(bashio::addon.ingress_entry)
ADDONPORT=$(bashio::addon.port "8081")
ingress_url=$(bashio::app.ingress_entry)
ADDONPORT=$(bashio::app.port "8081")
host_ip=$(bashio::network.ipv4_address)
host_ip=${host_ip%/*}
UIPATH=$(bashio::config 'ui_path')
#port=$(bashio::addon.port 80)
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
#port=$(bashio::app.port 80)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
#################
# NGINX SETTING #
+3
View File
@@ -1,4 +1,7 @@
## 1.29.2 (2026-10-28)
- Update to latest version from gotson/komga (changelog : https://github.com/gotson/komga/releases)
## 1.29.1 (2026-10-16)
- Update to latest version from gotson/komga (changelog : https://github.com/gotson/komga/releases)
+2 -2
View File
@@ -16,9 +16,9 @@
ARG BUILD_FROM
ARG BUILD_VERSION
ARG BUILD_UPSTREAM="1.29.1"
ARG BUILD_UPSTREAM="1.29.2"
FROM ${BUILD_FROM}
ENV BASHIO_VERSION=0.14.3
ENV BASHIO_VERSION=0.19.0
##################
# 2 Modify Image #
+1 -1
View File
@@ -101,4 +101,4 @@ schema:
slug: komga
udev: true
url: https://github.com/alexbelgium/hassio-addons/tree/master/komga
version: "1.29.1"
version: "1.29.2"
@@ -9,9 +9,9 @@ declare ingress_interface
declare ingress_port
declare ingress_entry
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
sed -i "s|%%ingress_entry%%|${ingress_entry}|g" /etc/nginx/servers/ingress.conf
+2 -2
View File
@@ -1,9 +1,9 @@
{
"github_beta": "false",
"last_update": "2026-10-16",
"last_update": "2026-10-28",
"repository": "alexbelgium/hassio-addons",
"slug": "komga",
"source": "github",
"upstream_repo": "gotson/komga",
"upstream_version": "1.29.1"
"upstream_version": "1.29.2"
}
+3
View File
@@ -1,3 +1,6 @@
## 0.34.26 (2026-10-28)
- Update to latest version from letta-ai/letta-code (changelog : https://github.com/letta-ai/letta-code/releases)
## 0.34.21.1 (24-10-2026)
- Fix `getcwd: cannot access parent directories` at startup: the image now starts from `/` instead of upstream's `/workspace`, which is replaced by a symlink to `/config/workspace` during init
+1 -1
View File
@@ -16,7 +16,7 @@
ARG BUILD_FROM
ARG BUILD_VERSION
ARG BUILD_UPSTREAM="0.34.21"
ARG BUILD_UPSTREAM="0.34.26"
FROM ghcr.io/letta-ai/letta-code:${BUILD_UPSTREAM}
##################
+1 -1
View File
@@ -27,4 +27,4 @@ schema:
token: password?
slug: letta_code
url: https://github.com/alexbelgium/hassio-addons/tree/master/letta_code
version: "0.34.21.1"
version: "0.34.26"
+2 -2
View File
@@ -2,10 +2,10 @@
"github_beta": false,
"github_fulltag": false,
"github_havingasset": true,
"last_update": "2026-10-24",
"last_update": "2026-10-28",
"repository": "alexbelgium/hassio-addons",
"slug": "letta_code",
"source": "github",
"upstream_repo": "letta-ai/letta-code",
"upstream_version": "0.34.21"
"upstream_version": "0.34.26"
}
+1 -1
View File
@@ -72,7 +72,7 @@ RUN chmod +x /entrypoint.sh \
find "$@" -type f \( -name "*.js" -o -name "*.ts" -o -name "*.json" -o -name "*.sh" -o -name "*.yml" -o -name "*.yaml" -o -name "*.env" -o -name "*.conf" -o -name "*.cfg" \) -exec grep -l "/opt/data" {} + 2>/dev/null | xargs -r sed -i 's|/opt/data|/config/data|g'
# Install bashio standalone
RUN BASHIO_VERSION="0.14.3" && \
RUN BASHIO_VERSION="0.19.0" && \
mkdir -p /tmp/bashio && \
curl -f -L -s -S "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" | tar -xzf - --strip 1 -C /tmp/bashio && \
mv /tmp/bashio/lib /usr/lib/bashio && \
@@ -10,9 +10,9 @@ declare ingress_port
bashio::log.info "Configuring NGinx for ingress..."
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
+4 -4
View File
@@ -24,9 +24,9 @@ fi
bashio::log.info "Adapting for ingress"
ingress_port=$(bashio::addon.ingress_port)
ingress_interface=$(bashio::addon.ip_address)
ingress_entry=$(bashio::addon.ingress_entry)
ingress_port=$(bashio::app.ingress_port)
ingress_interface=$(bashio::app.ip_address)
ingress_entry=$(bashio::app.ingress_entry)
base_path="/mealie/"
sed -i "s|%%port%%|${ingress_port}|g" /etc/nginx/servers/ingress.conf
sed -i "s|%%interface%%|${ingress_interface}|g" /etc/nginx/servers/ingress.conf
@@ -36,7 +36,7 @@ sed -i "s|%%base_subpath%%|${base_path}|g" /etc/nginx/servers/ssl.conf
if bashio::config.has_value "BASE_URL"; then
BASE_URL="$(bashio::config "BASE_URL")"
BASE_URL="${BASE_URL#*://}:$(bashio::addon.port 9001)"
BASE_URL="${BASE_URL#*://}:$(bashio::app.port 9001)"
sed -i "s|%%BASE_URL%%|$BASE_URL|g" /etc/nginx/servers/ssl.conf
else
sed -i "/BASE_URL/d" /etc/nginx/servers/ssl.conf
@@ -6,7 +6,7 @@ declare config
config=$(
bashio::var.json \
host "http://127.0.0.1" \
port "^$(bashio::addon.port 9001)"
port "^$(bashio::app.port 9001)"
)
if bashio::discovery "mealie" "${config}" > /dev/null; then
+4 -4
View File
@@ -84,13 +84,13 @@ if [ -d /homeassistant/addons_config/mealie_data ] && [ ! -f /homeassistant/addo
bashio::log.warning "Migrating data, current data will not be touched"
cp -rnf /homeassistant/addons_config/mealie_data/* /config/ || true
touch /homeassistant/addons_config/mealie_data/migrated
bashio::addon.option "DATA_DIR" "/config"
bashio::app.option "DATA_DIR" "/config"
fi
if [ -f /homeassistant/addons_config/mealie/config.yaml ] && [ ! -f /homeassistant/addons_config/mealie/migrated ]; then
bashio::log.warning "Migrating config.yaml, current data will not be touched"
cp -nf /homeassistant/addons_config/mealie/config.yaml /config/ || true
touch /homeassistant/addons_config/mealie/migrated
bashio::addon.option "DATA_DIR" "/config"
bashio::app.option "DATA_DIR" "/config"
fi
# Solve issues in migration
@@ -99,8 +99,8 @@ if [ -d /config/recipes ] && [ -d /config/backups ]; then
[ -d /config/addons_autoscripts ] && rm -r /config/addons_autoscripts && bashio::log.warning "Deleted /config/addons_autoscripts, it shouldn't be there"
fi
if [[ "$(bashio::config "DATA_DIR")" == "/config/addons_config/mealie_data" ]]; then
bashio::addon.option "DATA_DIR" "/config"
bashio::addon.restart
bashio::app.option "DATA_DIR" "/config"
bashio::app.restart
fi
###############
+2 -2
View File
@@ -115,10 +115,10 @@ if [ -z "$APP_KEY" ] || [ ${#APP_KEY} -lt 32 ]; then
echo -n 'base64:'
openssl rand -base64 32
)"
bashio::addon.option "APP_KEY" "${APP_KEY}"
bashio::app.option "APP_KEY" "${APP_KEY}"
bashio::log.warning "The APP_KEY set was invalid, generated a random one: ${APP_KEY}. Restarting to take it into account"
echo "${APP_KEY}" >> /config/APP_KEY
bashio::addon.restart
bashio::app.restart
fi
APP_KEY="$(bashio::config "APP_KEY")"
export APP_KEY
+1 -1
View File
@@ -73,7 +73,7 @@ RUN set -eux; \
# Bring in jq + gosu (and their libs). NO apk in final stage.
COPY --from=ha_tools /out/ /
RUN BASHIO_VERSION="0.14.3" && \
RUN BASHIO_VERSION="0.19.0" && \
mkdir -p /tmp/bashio && \
curl -f -L -s -S "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" | tar -xzf - --strip 1 -C /tmp/bashio && \
mv /tmp/bashio/lib /usr/lib/bashio && \
@@ -6,7 +6,7 @@ set -e
sed -i "s|'/server'|''|g" /app/back/app.conf
sed -i "s|gzip on|gzip off|g" /services/config/nginx/netalertx.conf.template
sed -i "/add_header X-Forwarded-Prefix/a sub_filter '\"/server' '\"$(bashio::addon.ingress_entry)/server';" /services/config/nginx/netalertx.conf.template
sed -i "/add_header X-Forwarded-Prefix/a sub_filter '\"/server' '\"$(bashio::app.ingress_entry)/server';" /services/config/nginx/netalertx.conf.template
sed -i "/add_header X-Forwarded-Prefix/a sub_filter_types *;" /services/config/nginx/netalertx.conf.template
sed -i "/add_header X-Forwarded-Prefix/a sub_filter_once off;" /services/config/nginx/netalertx.conf.template
@@ -113,7 +113,7 @@ wait_for_config_file() {
sleep 1
done
echo "$config_file is now available. Rebooting the addon."
bashio::addon.restart
bashio::app.restart
}
# Main script logic
Loaded 100 of 165 files, more files were not shown because too many files have changed in this diff. Show more