This commit is contained in:
root
2026-05-17 05:22:53 +00:00
parent 07aa02bca6
commit 03dc47a569
24 changed files with 941 additions and 93 deletions

View File

@@ -1,7 +1,9 @@
#!/usr/bin/env bash
# 排查「live.local refused to connect」多为 :80 无进程、服务未起、或跨机 mDNS/防火墙。
# 在设备本机执行: sudo bash scripts/linux/probe_live_access.sh
set +euo pipefail
set +e
set -u
set -o pipefail
SELF_DIR="$(cd "$(dirname "$0")" && pwd)"
INSTALL_TAG="probe"
@@ -9,6 +11,7 @@ INSTALL_TAG="probe"
. "$SELF_DIR/lib/common.sh"
load_env
MDNS_HOST="${HOSTNAME_ALIAS:-live}.local"
echo "=== Probe: refused to connect (no listener / firewall / wrong host) ==="
echo "Note: 502 = reverse proxy up but upstream dead; refused = nothing accepting TCP."
@@ -16,6 +19,7 @@ echo ""
echo "--- Host / IP ---"
echo "hostname: $(hostname 2>/dev/null)"
echo "mdns host: $MDNS_HOST"
LAN_IP=""
LAN_IP="$(detect_preferred_lan_ip || true)"
echo "guess LAN IP: ${LAN_IP:-unknown}"
@@ -57,11 +61,43 @@ else
fi
echo ""
echo "--- mDNS / LAN acceptance ---"
if getent hosts "$MDNS_HOST" >/dev/null 2>&1; then
echo "OK getent hosts $MDNS_HOST"
else
echo "FAIL getent hosts $MDNS_HOST → check avahi-daemon / libnss-mdns"
fi
deploy_json="$(curl -fsS -m 10 "http://127.0.0.1:${PORT}/deploy/check" 2>/dev/null || true)"
if [ -n "$deploy_json" ]; then
DEPLOY_JSON="$deploy_json" python3 - <<'PY'
import json
import os
raw = os.environ.get("DEPLOY_JSON", "").strip()
if not raw:
raise SystemExit(0)
data = json.loads(raw)
status = "READY" if data.get("ready") else "DEGRADED"
print(f"deployment: {status} ({data.get('pass_count', 0)}/{data.get('total_count', 0)})")
for item in data.get("failing_checks") or []:
label = item.get("label") or item.get("id") or "check"
detail = item.get("detail") or item.get("error") or ""
print(f"- FAIL {label}: {detail}")
for hint in data.get("hints") or []:
print(f"- hint: {hint}")
PY
else
echo "deploy/check unavailable on :${PORT}"
fi
echo ""
echo "--- From your phone/PC browser ---"
echo "1) Same WiFi/LAN as this box."
echo "2) Try: http://${LAN_IP}:${PORT}/ (direct control plane, bypasses :80 and mDNS)"
echo "3) live.local needs mDNS (Android often OK; Windows may need Bonjour or use IP)."
echo "4) If OK on IP but not live.local: Avahi on this host — systemctl status avahi-daemon"
echo "3) Try: http://${MDNS_HOST}/ (edge proxy) or http://${MDNS_HOST}:${PORT}/ (direct API)."
echo "4) live.local needs mDNS (Android often OK; Windows may need Bonjour or use IP)."
echo "5) If OK on IP but not live.local: Avahi on this host — systemctl status avahi-daemon"
echo ""
if ! systemctl is-active live-console.service >/dev/null 2>&1; then