mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-10-29 17:21:44 +00:00
Compare commits
20
Commits
a256e5afeb
...
1d64eab4ef
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d64eab4ef | ||
|
|
c03f62746a | ||
|
|
649ce9e4c1 | ||
|
|
b06899520e | ||
|
|
dd34fc67b9 | ||
|
|
fb9cbd1c8f | ||
|
|
5c1fc62ad0 | ||
|
|
cb2d41a0c9 | ||
|
|
25c615acaa | ||
|
|
d937674d5b | ||
|
|
4727beb0d8 | ||
|
|
68a4d93642 | ||
|
|
914508781f | ||
|
|
dd601e480a | ||
|
|
2d02d18d45 | ||
|
|
bf62ba0a2c | ||
|
|
970a5df076 | ||
|
|
7c39806ab7 | ||
|
|
b18716d417 | ||
|
|
845e401bc2 |
No files matched your search
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" \
|
||||
|
||||
@@ -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
|
||||
###############################################################################
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -101,4 +101,4 @@ schema:
|
||||
slug: codex
|
||||
udev: true
|
||||
url: https://github.com/alexbelgium/hassio-addons
|
||||
version: "2.5.6"
|
||||
version: "2.5.7"
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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,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"
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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]
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 #
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
##################
|
||||
|
||||
@@ -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,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"
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
###############
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in new issue
Block a user