feat(discord-bridge): dashboard publicat in tailnet prin tailscale serve

https://claude-agent.tailf7372d.ts.net/punte — acelasi tipar ca /echo de pe
moltbot: procesul ramane legat de 127.0.0.1, tailscaled il proxeaza si pune HTTPS.

Montarea sub prefix a cerut doua schimbari:

- toate URL-urile din pagini sunt acum relative, fiindca --set-path TAIE prefixul
  inainte de a proxa (serverul vede /api/status, browserul cere /punte/api/status).
  DASHBOARD_PREFIX ramane necesar doar pentru redirectul de login, si e acceptat
  si intact pe intrare, ca sa mearga si curl direct pe localhost.
- adresa fara slash final (/punte) primeste 301 catre /punte/: altfel URL-urile
  relative s-ar rezolva la radacina hostului, unde proxy-ul nu trimite nimic
  incoace, si panoul ar arata gol fara nicio eroare vizibila.

ops/install.sh configureaza serve-ul daca sudo permite; altfel spune comanda.
Sase teste noi pentru montarea sub prefix (31 in total pe dashboard).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B29CApsP1JkSdjYaGaHpE7
This commit is contained in:
Claude Agent
2026-08-30 13:27:59 +00:00
parent 57867672f2
commit dd7fa28fa5
9 changed files with 173 additions and 34 deletions

View File

@@ -60,3 +60,7 @@ DASHBOARD_TOKEN=
# spre tot clusterul, deci accesul se face prin tunel SSH, nu expus in LAN.
DASHBOARD_BIND=127.0.0.1
DASHBOARD_PORT=18790
# Prefixul sub care il publica `tailscale serve --set-path` (vezi dashboard/README.md).
# Gol = montat in radacina. Paginile au URL-uri relative, deci prefixul e nevoie
# doar pentru redirecturi.
DASHBOARD_PREFIX=/punte

View File

@@ -137,6 +137,25 @@ else
rm -f "$TMP_CRON"
fi
# --- 6b. tailscale serve pentru dashboard ----------------------------------
# Publica panoul in tailnet la https://<host>.<tailnet>.ts.net/punte, exact ca
# dashboard-ul lui echo de pe LXC 110 (/echo). Serviciul ramane legat de
# 127.0.0.1: tailscaled e singurul care ajunge la el.
DASH_PREFIX="$(grep -E '^DASHBOARD_PREFIX=' "$STATE_DIR/env" 2>/dev/null | cut -d= -f2- || true)"
DASH_PREFIX="${DASH_PREFIX:-/punte}"
DASH_PORT="$(grep -E '^DASHBOARD_PORT=' "$STATE_DIR/env" 2>/dev/null | cut -d= -f2- || true)"
DASH_PORT="${DASH_PORT:-18790}"
if ! command -v tailscale >/dev/null 2>&1; then
warn "tailscale lipseste — dashboard-ul ramane doar pe 127.0.0.1:$DASH_PORT (tunel SSH)"
elif tailscale serve status 2>/dev/null | grep -q "$DASH_PREFIX proxy"; then
info "tailscale serve: $DASH_PREFIX exista deja"
elif sudo -n tailscale serve --bg --set-path "$DASH_PREFIX" "http://127.0.0.1:$DASH_PORT" >/dev/null 2>&1; then
info "tailscale serve: https://$(tailscale status --json | python3 -c 'import json,sys;print(json.load(sys.stdin)["Self"]["DNSName"].rstrip("."))')$DASH_PREFIX"
else
warn "nu am putut configura tailscale serve; ruleaza manual:"
warn " sudo tailscale serve --bg --set-path $DASH_PREFIX http://127.0.0.1:$DASH_PORT"
fi
# --- 7. mail ---------------------------------------------------------------
if command -v mail >/dev/null 2>&1; then
info "binarul mail: $(command -v mail)"