diff --git a/deploy/install.sh b/deploy/install.sh index b19085f..9e73719 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -128,6 +128,17 @@ GLCHAT_UPDATES_DIR="${GLCHAT_UPDATES_DIR:-${TARGET_DIR}/updates}" GLCHAT_INSTALL_LOG="${TARGET_DIR}/install.log" GLCHAT_ENV_FILE="${TARGET_DIR}/.env" +# app_check_url печатает адрес /readyz с учётом привязки приложения: во внешнем +# режиме и на стенде приложение слушает не localhost, а адрес туннеля, поэтому +# проверка 127.0.0.1 всегда падала бы (AGENT.md 10.13). +app_check_url() { + local port="$1" host="${2:-}" + case "$host" in + 0.0.0.0 | "" | "::") host="127.0.0.1" ;; + esac + printf 'http://%s:%s/readyz' "$host" "$port" +} + usage() { cat <<'EOF' install.sh — установка glchat (AGENT.md 10). @@ -1660,16 +1671,17 @@ start_stack() { restart_livekit_if_config_changed info "ожидаем готовности приложения" - local waited=0 - until curl -fsS "http://127.0.0.1:${APP_PORT}/readyz" >/dev/null 2>&1; do + local ready_url waited=0 + ready_url="$(app_check_url "$APP_PORT" "$APP_BIND_ADDR")" + until curl -fsS "$ready_url" >/dev/null 2>&1; do waited=$((waited + 2)) if [ "$waited" -ge 60 ]; then - warn "приложение не ответило за 60 с — смотрите: glchat logs app" + warn "приложение не ответило за 60 с ($ready_url) — смотрите: glchat logs app" break fi sleep 2 done - curl -fsS "http://127.0.0.1:${APP_PORT}/readyz" >/dev/null 2>&1 && ok "приложение готово" || warn "готовность не подтверждена" + curl -fsS "$ready_url" >/dev/null 2>&1 && ok "приложение готово ($ready_url)" || warn "готовность не подтверждена ($ready_url)" } bootstrap_admin() {