diff --git a/hass-n8n/docker-entrypoint.sh b/hass-n8n/docker-entrypoint.sh index eb686f6..b732dff 100755 --- a/hass-n8n/docker-entrypoint.sh +++ b/hass-n8n/docker-entrypoint.sh @@ -10,17 +10,27 @@ mkdir -p "${N8N_PATH}/.n8n/.cache" ## USER PARAMETERS ## ##################### -# Read env_vars_list line by line (NO arrays) -jq -r '.env_vars_list[]?' "$CONFIG_PATH" | while IFS= read -r element; do +# IMPORTANT: +# Don't use: jq ... | while ...; do export ...; done +# Because in POSIX sh it runs in a subshell and exports won't persist. +values="$(jq -r '.env_vars_list[]?' "$CONFIG_PATH")" + +# Iterate newline-separated list safely in POSIX sh +set -f +IFS=' +' +for element in $values; do key="${element%%:*}" value="${element#*:}" - # trim whitespace (POSIX) + # trim whitespace (POSIX; busybox sed is fine) value="$(printf '%s' "$value" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')" export "$key=$value" echo "exported $key=$value" done +unset IFS +set +f export N8N_HOST="$(jq -r '.n8n_host // empty' "$CONFIG_PATH")" export N8N_PORT="$(jq -r '.n8n_port // empty' "$CONFIG_PATH")" @@ -48,11 +58,15 @@ fi ## MAIN ## ########### -# Fix ownership BEFORE exec -chown -R node /home/node || true +# Fix ownership BEFORE exec (don't fail container if chown can't run) +chown -R node:node /home/node 2>/dev/null || true +# BusyBox 'su' is available (from busybox --install /bin) +# Use -s to specify shell and -c to run command. if [ "$#" -gt 0 ]; then - exec su-exec node n8n $N8N_CMD_LINE + # Started with args (keep behavior similar to your original) + exec su node -s /bin/sh -c "n8n $N8N_CMD_LINE" else - exec su-exec node n8n start + # Started without args + exec su node -s /bin/sh -c "n8n start" fi \ No newline at end of file