From 63fbe69b5d92efc8a27c6168d16f77fb876f283a Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Nov 2025 07:48:03 +0000 Subject: [PATCH 1/8] GitHub bot: changelog --- birdnet-pi/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/birdnet-pi/CHANGELOG.md b/birdnet-pi/CHANGELOG.md index 45ad095ed..5cb8496fa 100644 --- a/birdnet-pi/CHANGELOG.md +++ b/birdnet-pi/CHANGELOG.md @@ -1,3 +1,4 @@ +## 2025.11.05 (15-11-2025) - Added support for configuring extra environment variables via the `env_vars` add-on option alongside config.yaml. See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details. ## 2025.11.04 (05-11-2025) From 44b7b74843ba3d9169ba06bd1cccb39a174cf02f Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Sat, 15 Nov 2025 11:17:50 +0100 Subject: [PATCH 2/8] Fix Calibre ingress for Selkies dashboard --- calibre/README.md | 1 - calibre/rootfs/etc/cont-init.d/90-ingress.sh | 31 ++++++++++---------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/calibre/README.md b/calibre/README.md index 1c8cb72dc..7b191e860 100644 --- a/calibre/README.md +++ b/calibre/README.md @@ -1,4 +1,3 @@ -## ⚠ Open Issue : [šŸ› [Calibre] Waiting for stream... / WebSocket disconnected. Attempting to reconnect... / Connection established. Waiting for server mode... (opened 2025-09-25)](https://github.com/alexbelgium/hassio-addons/issues/2126) by [@codyc1515](https://github.com/codyc1515) # Home assistant add-on: calibre [![Donate][donation-badge]](https://www.buymeacoffee.com/alexbelgium) diff --git a/calibre/rootfs/etc/cont-init.d/90-ingress.sh b/calibre/rootfs/etc/cont-init.d/90-ingress.sh index 18552d5a2..d4c8b35a0 100755 --- a/calibre/rootfs/etc/cont-init.d/90-ingress.sh +++ b/calibre/rootfs/etc/cont-init.d/90-ingress.sh @@ -2,34 +2,33 @@ # shellcheck shell=bash set -e -# nginx Path NGINX_CONFIG=/etc/nginx/sites-available/ingress.conf SUBFOLDER="$(bashio::addon.ingress_entry)" -# Copy template +# Ensure subfolder ends with a trailing slash (except for root) +if [[ -n "${SUBFOLDER}" && "${SUBFOLDER}" != "/" ]]; then + [[ "${SUBFOLDER}" == */ ]] || SUBFOLDER="${SUBFOLDER}/" +else + SUBFOLDER="/" +fi + cp /defaults/default.conf "${NGINX_CONFIG}" # Keep only the first (non-SSL) server block awk -v n=2 '/^[[:space:]]*server[[:space:]]*\{/{n--} n>0' "${NGINX_CONFIG}" > tmpfile mv tmpfile "${NGINX_CONFIG}" -# Remove ipv6 +# Disable IPv6 listeners for ingress proxying sed -i '/listen \[::\]/d' "${NGINX_CONFIG}" -# Add ingress parameters +# Adapt ports and upstream paths for Home Assistant ingress sed -i "s|3000|$(bashio::addon.ingress_port)|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}" -sed -i '/proxy_buffering/a sub_filter_types *;' "${NGINX_CONFIG}" -sed -i '/proxy_buffering/a sub_filter "vnc/index.html?autoconnect" "vnc/index.html?path=%%path%%/websockify?autoconnect";' "${NGINX_CONFIG}" -sed -i "s|%%path%%|${SUBFOLDER:1}|g" "${NGINX_CONFIG}" - -# Replace placeholders +sed -i "s|SUBFOLDER|${SUBFOLDER}|g" "${NGINX_CONFIG}" sed -i "s|CWS|8082|g" "${NGINX_CONFIG}" -sed -i "s|REPLACE_HOME|${HOME:-/root}|g" "${NGINX_CONFIG}" +sed -i "s|REPLACE_DOWNLOADS_PATH|${HOME:-/config}|g" "${NGINX_CONFIG}" -# Correct image -sed -i "s|SUBFOLDER|/|g" "${NGINX_CONFIG}" +# Avoid content encoding on proxied responses to keep Selkies happy +sed -i '/proxy_buffering/a \ + proxy_set_header Accept-Encoding "";' "${NGINX_CONFIG}" -# Enable ingress -cp /etc/nginx/sites-available/ingress.conf /etc/nginx/sites-enabled +cp "${NGINX_CONFIG}" /etc/nginx/sites-enabled From b24d3904539b75d59ef8968e1382d811b2354fff Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Sat, 15 Nov 2025 11:18:59 +0100 Subject: [PATCH 3/8] Update config.yaml --- calibre/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/calibre/config.yaml b/calibre/config.yaml index c1263cbcd..ae47f8b60 100644 --- a/calibre/config.yaml +++ b/calibre/config.yaml @@ -117,5 +117,5 @@ schema: slug: calibre udev: true url: https://github.com/alexbelgium/hassio-addons/tree/master/calibre -version: "8.14.0" +version: "8.14.0-2" video: true From ec0488a2b82e521ed103f7bdbb447dceff307c31 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Sat, 15 Nov 2025 11:23:57 +0100 Subject: [PATCH 4/8] Add device paths to navidrome config --- navidrome/config.yaml | 64 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/navidrome/config.yaml b/navidrome/config.yaml index 025f38f22..4d8412ca0 100644 --- a/navidrome/config.yaml +++ b/navidrome/config.yaml @@ -4,6 +4,68 @@ arch: backup_exclude: - "**/cache/**" description: Navidrome for Home Assistant +devices: + - /dev/dri + - /dev/dri/card0 + - /dev/dri/card1 + - /dev/dri/renderD128 + - /dev/vchiq + - /dev/video10 + - /dev/video11 + - /dev/video12 + - /dev/video13 + - /dev/video14 + - /dev/video15 + - /dev/video16 + - /dev/ttyUSB0 + - /dev/sda + - /dev/sdb + - /dev/sdc + - /dev/sdd + - /dev/sde + - /dev/sdf + - /dev/sdg + - /dev/nvme + - /dev/nvme0 + - /dev/nvme0n1 + - /dev/nvme0n1p1 + - /dev/nvme0n1p2 + - /dev/nvme0n1p3 + - /dev/nvme1n1 + - /dev/nvme1n1p1 + - /dev/nvme1n1p2 + - /dev/nvme1n1p3 + - /dev/nvme2n1 + - /dev/nvme2n1p1 + - /dev/nvme2n1p2 + - /dev/nvme2n3p3 + - /dev/mmcblk + - /dev/fuse + - /dev/sda1 + - /dev/sdb1 + - /dev/sdc1 + - /dev/sdd1 + - /dev/sde1 + - /dev/sdf1 + - /dev/sdg1 + - /dev/sda2 + - /dev/sdb2 + - /dev/sdc2 + - /dev/sdd2 + - /dev/sde2 + - /dev/sdf2 + - /dev/sdg2 + - /dev/sda3 + - /dev/sdb3 + - /dev/sda4 + - /dev/sdb4 + - /dev/sda5 + - /dev/sda6 + - /dev/sda7 + - /dev/sda8 + - /dev/nvme0 + - /dev/nvme1 + - /dev/nvme2 image: ghcr.io/alexbelgium/navidrome-{arch} init: false map: @@ -57,5 +119,5 @@ schema: slug: navidrome udev: true url: https://github.com/alexbelgium/hassio-addons/tree/master/navidrome -version: "0.58.5" +version: 0.58.5-2 webui: "[PROTO:ssl]://[HOST]:[PORT:4533]" From dcb40e54b1e860a27227343896ff083ec5063bae Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Nov 2025 10:26:31 +0000 Subject: [PATCH 5/8] GitHub bot: changelog --- navidrome/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/navidrome/CHANGELOG.md b/navidrome/CHANGELOG.md index d0666cbd9..05a17d49c 100644 --- a/navidrome/CHANGELOG.md +++ b/navidrome/CHANGELOG.md @@ -1,3 +1,5 @@ +## 0.58.5-2 (15-11-2025) +- Minor bugs fixed ## 0.58.5 (15-11-2025) - Update to latest version from navidrome/navidrome (changelog : https://github.com/navidrome/navidrome/releases) From bb3718102fcd5ec019ea1cae44840a5c4ab93502 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Nov 2025 10:33:12 +0000 Subject: [PATCH 6/8] GitHub bot: changelog --- calibre/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/calibre/CHANGELOG.md b/calibre/CHANGELOG.md index 3a6daf624..315009c7e 100644 --- a/calibre/CHANGELOG.md +++ b/calibre/CHANGELOG.md @@ -1,3 +1,5 @@ +## 8.14.0-2 (15-11-2025) +- Minor bugs fixed ## 8.14.0 (08-11-2025) - Update to latest version from linuxserver/docker-calibre (changelog : https://github.com/linuxserver/docker-calibre/releases) From 828505c5fe1320d878b4bc1c88f25bf35568c9ee Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Sat, 15 Nov 2025 11:35:32 +0100 Subject: [PATCH 7/8] Guard Meilisearch watchdog wait --- monica/CHANGELOG.md | 4 ++ monica/Dockerfile | 11 ++++ monica/README.md | 4 +- monica/config.yaml | 6 +- monica/rootfs/etc/cont-init.d/99-run.sh | 87 +++++++++++++++++++++++++ 5 files changed, 109 insertions(+), 3 deletions(-) diff --git a/monica/CHANGELOG.md b/monica/CHANGELOG.md index 59603051a..a2b691aed 100644 --- a/monica/CHANGELOG.md +++ b/monica/CHANGELOG.md @@ -1,3 +1,7 @@ +## v5.0_beta6 (06-01-2025) +- Bundled an internal Meilisearch service and configure Monica to use it for full-text search by default. +- Ensure the init script only launches the bundled Meilisearch when `MEILISEARCH_URL` points to localhost and wait for the health endpoint before starting Monica. + ## v5.0_beta5 (14-11-2025) - Added support for configuring extra environment variables via the `env_vars` add-on option alongside config.yaml. See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details. diff --git a/monica/Dockerfile b/monica/Dockerfile index 01417b0f6..f9bad2b14 100644 --- a/monica/Dockerfile +++ b/monica/Dockerfile @@ -50,6 +50,17 @@ RUN chmod 744 /ha_automodules.sh && /ha_automodules.sh "$MODULES" && rm /ha_auto # Manual apps ENV PACKAGES="mariadb-client" +# Meilisearch +ARG MEILISEARCH_VERSION="v1.25.0" +RUN case "${BUILD_ARCH}" in \ + amd64) MEILI_ARCH="linux-amd64" ;; \ + aarch64) MEILI_ARCH="linux-aarch64" ;; \ + *) echo "Unsupported architecture: ${BUILD_ARCH}" >&2 && exit 1 ;; \ + esac && \ + curl -fsSL -o /usr/local/bin/meilisearch "https://github.com/meilisearch/meilisearch/releases/download/${MEILISEARCH_VERSION}/meilisearch-${MEILI_ARCH}" && \ + chmod 755 /usr/local/bin/meilisearch && \ + mkdir -p /data/meilisearch + # Automatic apps & bashio ADD "https://raw.githubusercontent.com/alexbelgium/hassio-addons/master/.templates/ha_autoapps.sh" "/ha_autoapps.sh" RUN chmod 744 /ha_autoapps.sh && /ha_autoapps.sh "$PACKAGES" && rm /ha_autoapps.sh diff --git a/monica/README.md b/monica/README.md index ff87b1f5d..95072fe11 100644 --- a/monica/README.md +++ b/monica/README.md @@ -34,6 +34,7 @@ Key features: - Journal functionality - Gift ideas tracking - Multiple database options (SQLite, MariaDB, MySQL) +- Built-in Meilisearch full-text search engine This addon is based on the official [Monica](https://github.com/monicahq/monica) application. @@ -104,6 +105,7 @@ Configure SMTP settings to enable: This addon supports custom scripts and environment variables through the `addon_config` mapping: +- **Meilisearch full-text search**: The addon ships with an embedded [Meilisearch](https://www.meilisearch.com/) service that Monica uses by default. The search API listens on `http://127.0.0.1:7700` inside the container. Override `MEILISEARCH_URL` via `env_vars` if you prefer an external Meilisearch instance—the init script will detect that and skip starting the bundled daemon. You can further tweak Meilisearch by defining extra environment variables through the `env_vars` option if needed. - **Custom scripts**: See [Running Custom Scripts in Addons](https://github.com/alexbelgium/hassio-addons/wiki/Running-custom-scripts-in-Addons) - **env_vars option**: Use the add-on `env_vars` option to pass extra environment variables (uppercase or lowercase names). See https://github.com/alexbelgium/hassio-addons/wiki/Add-Environment-variables-to-your-Addon-2 for details. @@ -136,5 +138,3 @@ Create an issue on github, or ask on the [home assistant community forum](https: For more information about Monica, visit: https://www.monicahq.com/ [repository]: https://github.com/alexbelgium/hassio-addons - - diff --git a/monica/config.yaml b/monica/config.yaml index 1afaaed10..5262c9cf5 100644 --- a/monica/config.yaml +++ b/monica/config.yaml @@ -67,6 +67,10 @@ environment: MAIL_MAILER: log DEFAULT_STORAGE_LIMIT: "1024" DEFAULT_MAX_STORAGE_SIZE: "1024" + SCOUT_DRIVER: meilisearch + SCOUT_QUEUE: "false" + MEILISEARCH_URL: http://127.0.0.1:7700 + MEILISEARCH_KEY: "" image: ghcr.io/alexbelgium/monica-{arch} init: false options: @@ -103,5 +107,5 @@ services: - mysql:want slug: monica url: https://github.com/alexbelgium/hassio-addons/tree/master/monica -version: v5.0_beta5 +version: v5.0_beta6 webui: "[PROTO:ssl]://[HOST]:[PORT:80]" diff --git a/monica/rootfs/etc/cont-init.d/99-run.sh b/monica/rootfs/etc/cont-init.d/99-run.sh index b9294643d..8e7593f80 100755 --- a/monica/rootfs/etc/cont-init.d/99-run.sh +++ b/monica/rootfs/etc/cont-init.d/99-run.sh @@ -113,6 +113,93 @@ fi APP_KEY="$(bashio::config "APP_KEY")" export APP_KEY +bashio::log.info "Preparing Meilisearch" +MEILISEARCH_URL="${MEILISEARCH_URL:-http://127.0.0.1:7700}" +export MEILISEARCH_URL + +MEILISEARCH_URI="${MEILISEARCH_URL#*://}" +MEILISEARCH_HOST_PORT="${MEILISEARCH_URI%%/*}" +MEILISEARCH_HOST="${MEILISEARCH_HOST_PORT%%:*}" +MEILISEARCH_PORT="${MEILISEARCH_HOST_PORT##*:}" +if [ "${MEILISEARCH_PORT}" = "${MEILISEARCH_HOST_PORT}" ]; then + MEILISEARCH_PORT="" +fi + +MEILISEARCH_LOCAL=false +if [[ -n "${MEILISEARCH_PORT}" && ! ${MEILISEARCH_PORT} =~ ^[0-9]+$ ]]; then + bashio::log.warning "Ignoring bundled Meilisearch because MEILISEARCH_URL uses a non-numeric port (${MEILISEARCH_PORT})." +elif [[ "${MEILISEARCH_HOST}" =~ ^(127\.0\.0\.1|localhost)$ ]]; then + MEILISEARCH_LOCAL=true + if [ -z "${MEILISEARCH_PORT}" ]; then + MEILISEARCH_PORT="7700" + fi + MEILISEARCH_ADDR="${MEILISEARCH_HOST}:${MEILISEARCH_PORT}" +else + MEILISEARCH_ADDR="127.0.0.1:7700" +fi + +if [[ "${MEILISEARCH_LOCAL}" == true ]]; then + bashio::log.info "Starting bundled Meilisearch instance at ${MEILISEARCH_ADDR}" + MEILISEARCH_DB_PATH="/data/meilisearch" + mkdir -p "${MEILISEARCH_DB_PATH}" + + MEILISEARCH_ENV_KEY="${MEILISEARCH_KEY:-}" + MEILISEARCH_ENVIRONMENT="${MEILI_ENV:-production}" + MEILISEARCH_NO_ANALYTICS="${MEILI_NO_ANALYTICS:-true}" + + S6_SUPERVISED_DIR="/run/s6/services" + if [ ! -d "${S6_SUPERVISED_DIR}" ]; then + S6_SUPERVISED_DIR="/var/run/s6/services" + fi + + MEILISEARCH_CMD=( + env \ + MEILI_ENV="${MEILISEARCH_ENVIRONMENT}" \ + MEILI_NO_ANALYTICS="${MEILISEARCH_NO_ANALYTICS}" \ + meilisearch \ + --http-addr "${MEILISEARCH_ADDR}" \ + --db-path "${MEILISEARCH_DB_PATH}" + ) + + if [ -n "${MEILISEARCH_ENV_KEY}" ]; then + MEILISEARCH_CMD+=(--master-key "${MEILISEARCH_ENV_KEY}") + fi + + "${MEILISEARCH_CMD[@]}" & + MEILISEARCH_PID=$! + + ( + set +e + wait "${MEILISEARCH_PID}" + exit_code=$? + set -e + if [ "${exit_code}" -ne 0 ]; then + bashio::log.error "Meilisearch exited unexpectedly (code ${exit_code}). Stopping add-on." + s6-svscanctl -t "${S6_SUPERVISED_DIR}" + fi + ) & + + bashio::log.info "Waiting for Meilisearch TCP socket" + bashio::net.wait_for "${MEILISEARCH_ADDR%:*}" "${MEILISEARCH_ADDR#*:}" + + bashio::log.info "Waiting for Meilisearch health endpoint" + MEILISEARCH_HEALTH_URL="${MEILISEARCH_URL%/}/health" + for attempt in $(seq 1 30); do + if curl -fs "${MEILISEARCH_HEALTH_URL}" | grep -q '"status":"available"'; then + bashio::log.info "Meilisearch is ready" + break + fi + sleep 1 + if [ "${attempt}" -eq 30 ]; then + bashio::log.error "Meilisearch did not become ready in time. Stopping add-on." + s6-svscanctl -t "${S6_SUPERVISED_DIR}" + exit 1 + fi + done +else + bashio::log.info "Detected external Meilisearch endpoint (${MEILISEARCH_URL}); skipping bundled service startup" +fi + bashio::log.info "Starting Monica" entrypoint.sh apache2-foreground From 198098168355a79cbc1692fac6d71993741264c2 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Sat, 15 Nov 2025 11:36:47 +0100 Subject: [PATCH 8/8] Update config.yaml --- monica/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monica/config.yaml b/monica/config.yaml index 5262c9cf5..e9cecfa3d 100644 --- a/monica/config.yaml +++ b/monica/config.yaml @@ -107,5 +107,5 @@ services: - mysql:want slug: monica url: https://github.com/alexbelgium/hassio-addons/tree/master/monica -version: v5.0_beta6 +version: v5.0_beta5-2 webui: "[PROTO:ssl]://[HOST]:[PORT:80]"