From 0308258d9983c26a62f0712f2efeab96ea609b87 Mon Sep 17 00:00:00 2001 From: root Date: Wed, 7 Oct 2026 11:20:29 +0300 Subject: [PATCH] =?UTF-8?q?fix(landing):=20=D1=82=D1=83=D0=BD=D0=BD=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=20=D1=81=D0=B0=D0=BC=20=D1=82=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20URL=20=E2=80=94=20=D0=BE=D0=B1=D1=91=D1=80=D1=82?= =?UTF-8?q?=D0=BA=D0=B0=20landing-tunnel-run.sh=20(systemd)=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D1=81=D0=B8=D1=82=20stdout=20localhost.run=20=D0=B8=20?= =?UTF-8?q?=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D1=8F=D0=B5=D1=82=20PUBLIC?= =?UTF-8?q?=5FURL.txt=20=D0=BF=D1=80=D0=B8=20=D0=BA=D0=B0=D0=B6=D0=B4?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=81=D0=BC=D0=B5=D0=BD=D0=B5=20=D1=81=D1=83?= =?UTF-8?q?=D0=B1=D0=B4=D0=BE=D0=BC=D0=B5=D0=BD=D0=B0;=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BF=D0=B8=D1=8F=20=D0=BE=D0=B1=D1=91=D1=80=D1=82=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B2=20scripts/=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=BE=D1=81?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B8=D0=B7=D0=B2=D0=BE=D0=B4=D0=B8=D0=BC?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D0=B8;=20DEPLOY.md:=20=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=BE=D1=87=D0=BD=D0=B8=D0=BA=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B4?= =?UTF-8?q?=D1=8B=20=D0=BF=D0=BE=20URL=20+=20=D0=BE=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20nokey-=D1=80=D0=B5?= =?UTF-8?q?=D0=B6=D0=B8=D0=BC=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/landing-tunnel-run.sh | 25 +++++++++++++++++++++++++ sites/landing/DEPLOY.md | 10 ++++++++-- sites/landing/PUBLIC_URL.txt | 2 +- 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100755 scripts/landing-tunnel-run.sh diff --git a/scripts/landing-tunnel-run.sh b/scripts/landing-tunnel-run.sh new file mode 100755 index 0000000..3cbd4d0 --- /dev/null +++ b/scripts/landing-tunnel-run.sh @@ -0,0 +1,25 @@ +#!/bin/bash +# Обёртка туннеля лендинга (localhost.run) — t-день 2026-10-07. +# Проблема: localhost.run без аккаунта выдаёт СЛУЧАЙНЫЙ субдомен на каждый +# рестарт туннеля → PUBLIC_URL.txt протухает и Alex получает битую ссылку. +# Фикс: парсим stdout ssh на лету и обновляем PUBLIC_URL.txt при каждой +# смене URL. URL всё ещё нестабилен (это свойство nokey-режима) — файл +# теперь всегда актуален; стабильный субдомен = именованный туннель/прод. +set -uo pipefail + +URL_FILE="${URL_FILE:-/root/simbiot-harness/sites/landing/PUBLIC_URL.txt}" +LOG="${LOG:-/var/log/landing-tunnel.log}" +mkdir -p "$(dirname "$LOG")" + +/usr/bin/ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=60 \ + -o ServerAliveCountMax=3 -o ExitOnForwardFailure=yes \ + -R 80:127.0.0.1:8095 nokey@localhost.run 2>&1 | +while IFS= read -r line; do + printf '%s\n' "$line" >>"$LOG" + url="$(printf '%s' "$line" | grep -oE 'https://[a-z0-9-]+\.lhr\.life' | head -1)" + if [ -n "$url" ] && [ "$(cat "$URL_FILE" 2>/dev/null)" != "$url" ]; then + printf '%s\n' "$url" >"$URL_FILE" + printf '[landing-tunnel] PUBLIC_URL.txt → %s\n' "$url" >>"$LOG" + fi +done +exit 1 # ssh умер — systemd Restart=always поднимет заново diff --git a/sites/landing/DEPLOY.md b/sites/landing/DEPLOY.md index 1c32d52..ee349a0 100644 --- a/sites/landing/DEPLOY.md +++ b/sites/landing/DEPLOY.md @@ -1,4 +1,10 @@ Landing served locally: systemd landing-serve (python3 http.server :8095, dir sites/landing) -Public tunnel: systemd landing-tunnel (ssh -R 80:127.0.0.1:8095 nokey@localhost.run) -Current public URL: https://898998510cf1d8.lhr.life (random subdomain per restart; see PUBLIC_URL.txt) +Public tunnel: systemd landing-tunnel (localhost.run; обёртка /usr/local/bin/landing-tunnel-run.sh) +Current public URL: см. PUBLIC_URL.txt (обёртка обновляет его сама при каждой смене) + +Важно (2026-10-07): localhost.run в nokey-режиме выдаёт случайный субдомен на +каждый рестарт — URL нестабилен by design. Обёртка туннеля парсит stdout ssh +и перезаписывает PUBLIC_URL.txt при смене URL (лог: /var/log/landing-tunnel.log). +Стабильный URL = только через прод (simbiot.cil.by, scripts/deploy_landing.sh +из origin/master) или именованный туннель с аккаунтом. Note: server IP 185.203.154.209 drops inbound from outside (NAT/firewall), hence tunnel. diff --git a/sites/landing/PUBLIC_URL.txt b/sites/landing/PUBLIC_URL.txt index 5e6263f..39eb696 100644 --- a/sites/landing/PUBLIC_URL.txt +++ b/sites/landing/PUBLIC_URL.txt @@ -1 +1 @@ -https://898998510cf1d8.lhr.life +https://d291eaced5e8c8.lhr.life