feat: Update changelog and configuration for version 0.5.51

- Set default `force_ipv4_dns` to true to prevent web_fetch timeouts in HAOS VMs.
- Introduced `nginx_log_level` option to control access log verbosity.
- Updated translations for new configuration options.
This commit is contained in:
techartdev
2026-02-23 15:50:07 +02:00
parent 78353c336f
commit c16b938674
11 changed files with 81 additions and 14 deletions
+8
View File
@@ -2,6 +2,14 @@
All notable changes to the OpenClaw Assistant Home Assistant Add-on will be documented in this file.
## [0.5.51] - 2026-02-23
### Fixed
- **`web_fetch failed: fetch failed`**: changed `force_ipv4_dns` default to **true**. Node 22 tries IPv6 first; most HAOS VMs lack IPv6 egress, causing outbound `web_fetch` / HTTP tool calls to time out.
### Added
- **`nginx_log_level` option** (`minimal` / `full`, default `minimal`): suppresses repetitive Home Assistant health-check and polling requests (`GET /`, `GET /v1/models`, `POST /tools/invoke`) from the nginx access log.
## [0.5.50] - 2026-02-23
**[!WARNING!]**
+10 -4
View File
@@ -1,5 +1,5 @@
name: OpenClaw Assistant
version: "0.5.50"
version: "0.5.51"
slug: openclaw_assistant
description: Run OpenClaw Assistant (OpenClaw-compatible) as a Home Assistant add-on.
url: https://github.com/techartdev/OpenClawHomeAssistant
@@ -95,9 +95,14 @@ options:
enable_openai_api: false
# Force IPv4-first DNS result ordering for Node fetch/network calls.
# Useful on networks where IPv6 resolution exists but IPv6 egress is broken
# (can affect Telegram API polling in some HAOS/VM setups).
force_ipv4_dns: false
# Most HAOS VMs lack IPv6 egress, causing web_fetch / Telegram timeouts.
# Default: true (recommended). Set to false only if you need IPv6.
force_ipv4_dns: true
# Nginx access log verbosity:
# full: log all requests (useful for debugging)
# minimal: suppress repetitive HA health-check and polling requests (default)
nginx_log_level: minimal
schema:
@@ -122,4 +127,5 @@ schema:
gateway_trusted_proxies: str?
enable_openai_api: bool?
force_ipv4_dns: bool?
nginx_log_level: list(full|minimal)?
+2 -2
View File
@@ -9,8 +9,8 @@ http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Log to stdout/stderr (container-friendly)
access_log /dev/stdout;
# Logging (configurable via nginx_log_level option)
__NGINX_ACCESS_LOG__
error_log /dev/stderr notice;
sendfile on;
+16 -1
View File
@@ -30,6 +30,7 @@ def main():
disk_used = os.environ.get('DISK_USED', '')
disk_avail = os.environ.get('DISK_AVAIL', '')
disk_pct = os.environ.get('DISK_PCT', '')
nginx_log_level = os.environ.get('NGINX_LOG_LEVEL', 'minimal')
# Token comes from environment (best-effort CLI query in run.sh)
token = os.environ.get('GW_TOKEN', '')
@@ -37,7 +38,21 @@ def main():
gw_path = '' if public_url.endswith('/') else '/'
# ── nginx.conf ──────────────────────────────────────────────
conf = tpl.replace('__TERMINAL_PORT__', terminal_port)
# Build access_log directive (minimal suppresses HA health-check / polling noise)
if nginx_log_level == 'minimal':
access_log_block = (
'# Suppress repetitive HA health-check / polling requests\n'
' map $http_user_agent $loggable {\n'
' ~HomeAssistant 0;\n'
' default 1;\n'
' }\n'
' access_log /dev/stdout combined if=$loggable;'
)
else:
access_log_block = 'access_log /dev/stdout;'
conf = tpl.replace('__NGINX_ACCESS_LOG__', access_log_block)
conf = conf.replace('__TERMINAL_PORT__', terminal_port)
# Build HTTPS gateway proxy block (only for lan_https mode)
https_block = ''
+3 -1
View File
@@ -52,8 +52,9 @@ GATEWAY_PORT=$(jq -r '.gateway_port // 18789' "$OPTIONS_FILE")
ENABLE_OPENAI_API=$(jq -r '.enable_openai_api // false' "$OPTIONS_FILE")
GATEWAY_AUTH_MODE=$(jq -r '.gateway_auth_mode // "token"' "$OPTIONS_FILE")
GATEWAY_TRUSTED_PROXIES=$(jq -r '.gateway_trusted_proxies // empty' "$OPTIONS_FILE")
FORCE_IPV4_DNS=$(jq -r '.force_ipv4_dns // false' "$OPTIONS_FILE")
FORCE_IPV4_DNS=$(jq -r '.force_ipv4_dns // true' "$OPTIONS_FILE")
ACCESS_MODE=$(jq -r '.access_mode // "custom"' "$OPTIONS_FILE")
NGINX_LOG_LEVEL=$(jq -r '.nginx_log_level // "minimal"' "$OPTIONS_FILE")
export TZ="$TZNAME"
@@ -603,6 +604,7 @@ GW_PUBLIC_URL="$GW_PUBLIC_URL" GW_TOKEN="$GW_TOKEN" TERMINAL_PORT="$TERMINAL_POR
ENABLE_HTTPS_PROXY="$ENABLE_HTTPS_PROXY" HTTPS_PROXY_PORT="$GATEWAY_PORT" \
GATEWAY_INTERNAL_PORT="$GATEWAY_INTERNAL_PORT" ACCESS_MODE="$ACCESS_MODE" \
DISK_TOTAL="$DISK_TOTAL" DISK_USED="$DISK_USED" DISK_AVAIL="$DISK_AVAIL" DISK_PCT="$DISK_PCT" \
NGINX_LOG_LEVEL="$NGINX_LOG_LEVEL" \
python3 /render_nginx.py
echo "Starting ingress proxy (nginx) on :48099 ..."
+7 -1
View File
@@ -88,4 +88,10 @@ configuration:
description: Активиране на OpenAI-съвместим Chat Completions ендпойнт. Позволява използването на OpenClaw като разговорен агент в HA Assist pipeline чрез Extended OpenAI Conversation (HACS) или всеки OpenAI-съвместим клиент.
force_ipv4_dns:
name: Принудителен IPv4 DNS ред
description: Принудително задава IPv4-приоритет при DNS резолв за Node мрежови заявки. Полезно е, когато IPv6 DNS се резолвира, но IPv6 интернет маршрутизацията е неработеща (може да влияе на Telegram API polling).
description: Принудително задава IPv4-приоритет при DNS резолв. Повечето HAOS VM нямат IPv6 изход — предизвиква web_fetch и Telegram грешки. Препоръчително ВКЛЮЧЕНО (по подразбиране).
nginx_log_level:
name: Nginx ниво на логове
description: "Подробност на логовете на nginx проксито. 'minimal' (по подразбиране) потиска повтарящи се HA health-check заявки. 'full' логва всичко."
options:
minimal: "Минимално (потискане на HA polling шум)"
full: "Пълно (логване на всички заявки)"
+7 -1
View File
@@ -88,4 +88,10 @@ configuration:
description: OpenAI-kompatiblen Chat Completions Endpunkt aktivieren. Ermöglicht die Verwendung von OpenClaw als Gesprächsagent in der HA Assist Pipeline über Extended OpenAI Conversation (HACS) oder jeden OpenAI-kompatiblen Client.
force_ipv4_dns:
name: IPv4-DNS-Reihenfolge erzwingen
description: Erzwingt IPv4-vorrangige DNS-Auflösung für Node-Netzwerkaufrufe. Nützlich, wenn IPv6-DNS aufgelöst wird, aber IPv6-Internet-Routing nicht funktioniert (kann Telegram-API-Polling beeinträchtigen).
description: Erzwingt IPv4-vorrangige DNS-Auflösung. Die meisten HAOS-VMs haben keinen IPv6-Ausgang — verursacht web_fetch- und Telegram-Timeouts. Empfohlen EIN (Standard).
nginx_log_level:
name: Nginx Log-Level
description: "Ausführlichkeit des Nginx-Zugriffslogs. 'minimal' (Standard) unterdrückt wiederholte HA-Healthcheck- und Polling-Anfragen. 'full' protokolliert alles."
options:
minimal: "Minimal (HA-Polling-Rauschen unterdrücken)"
full: "Vollständig (alle Anfragen protokollieren)"
+7 -1
View File
@@ -88,4 +88,10 @@ configuration:
description: Enable OpenAI-compatible Chat Completions endpoint. Allows using OpenClaw as a conversation agent in HA Assist pipeline via Extended OpenAI Conversation (HACS) or any OpenAI-compatible client.
force_ipv4_dns:
name: Force IPv4 DNS Order
description: Force IPv4-first DNS ordering for Node network calls. Useful when IPv6 DNS resolves but IPv6 internet routing is broken (can affect Telegram API polling).
description: Force IPv4-first DNS ordering for Node network calls. Most HAOS VMs lack IPv6 egress, causing web_fetch and Telegram timeouts. Recommended ON (default).
nginx_log_level:
name: Nginx Log Level
description: "Access log verbosity for the built-in nginx proxy. 'minimal' (default) suppresses repetitive HA health-check and polling requests. 'full' logs everything."
options:
minimal: "Minimal (suppress HA polling noise)"
full: "Full (log all requests)"
+7 -1
View File
@@ -88,4 +88,10 @@ configuration:
description: Activar endpoint de Chat Completions compatible con OpenAI. Permite usar OpenClaw como agente de conversación en HA Assist pipeline mediante Extended OpenAI Conversation (HACS) o cualquier cliente compatible con OpenAI.
force_ipv4_dns:
name: Forzar orden DNS IPv4
description: Fuerza el orden de DNS con prioridad IPv4 para llamadas de red de Node. Útil cuando el DNS IPv6 resuelve, pero el enrutamiento IPv6 a Internet falla (puede afectar el polling de la API de Telegram).
description: Fuerza prioridad IPv4 en DNS. La mayoría de VMs HAOS no tienen salida IPv6 — causa errores en web_fetch y Telegram. Recomendado ACTIVADO (por defecto).
nginx_log_level:
name: Nivel de log Nginx
description: "Nivel de detalle del log de acceso de nginx. 'minimal' (por defecto) suprime las solicitudes repetitivas de health-check y polling de HA. 'full' registra todo."
options:
minimal: "Mínimo (suprimir ruido de polling HA)"
full: "Completo (registrar todas las solicitudes)"
+7 -1
View File
@@ -88,4 +88,10 @@ configuration:
description: Włącz endpoint Chat Completions kompatybilny z OpenAI. Pozwala używać OpenClaw jako agenta konwersacji w HA Assist pipeline przez Extended OpenAI Conversation (HACS) lub dowolnego klienta kompatybilnego z OpenAI.
force_ipv4_dns:
name: Wymuś kolejność DNS IPv4
description: Wymusza preferowanie IPv4 przy rozwiązywaniu DNS dla wywołań sieciowych Node. Przydatne, gdy DNS IPv6 się rozwiązuje, ale routing IPv6 do Internetu nie działa (może wpływać na polling API Telegrama).
description: Wymusza priorytet IPv4 w DNS. Większość VM HAOS nie ma wyjścia IPv6 — powoduje błędy web_fetch i Telegram. Zalecane WŁĄCZONE (domyślnie).
nginx_log_level:
name: Poziom logów Nginx
description: "Szczegółowość logów dostępu nginx. 'minimal' (domyślnie) pomija powtarzające się żądania health-check i polling HA. 'full' loguje wszystko."
options:
minimal: "Minimalny (pominięcie szumu polling HA)"
full: "Pełny (logowanie wszystkich żądań)"
+7 -1
View File
@@ -88,4 +88,10 @@ configuration:
description: Habilitar endpoint de Chat Completions compatível com OpenAI. Permite usar o OpenClaw como agente de conversação no pipeline do HA Assist via Extended OpenAI Conversation (HACS) ou qualquer cliente compatível com OpenAI.
force_ipv4_dns:
name: Forçar ordem DNS IPv4
description: Força a ordem de DNS com prioridade para IPv4 nas chamadas de rede do Node. Útil quando o DNS IPv6 resolve, mas o roteamento IPv6 para a internet está quebrado (pode afetar o polling da API do Telegram).
description: Força prioridade IPv4 no DNS. A maioria das VMs HAOS não tem saída IPv6 — causa erros em web_fetch e Telegram. Recomendado LIGADO (padrão).
nginx_log_level:
name: Nível de log Nginx
description: "Detalhamento do log de acesso do nginx. 'minimal' (padrão) suprime requisições repetitivas de health-check e polling do HA. 'full' registra tudo."
options:
minimal: "Mínimo (suprimir ruído de polling HA)"
full: "Completo (registrar todas as requisições)"