From cb2e223a4d6cfbd85c649026382f5016cf43a6a8 Mon Sep 17 00:00:00 2001 From: grendervill Date: Sat, 19 Sep 2026 20:48:59 +0300 Subject: [PATCH] =?UTF-8?q?feat(ufw):=20--allow-port/--allow-from=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D0=B4=D0=BE=D1=81=D1=82=D1=83=D0=BF=D0=B0=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=BA=D1=81=D0=B8=20=D0=BA=20=D0=B2=D0=BD?= =?UTF-8?q?=D1=83=D1=82=D1=80=D0=B5=D0=BD=D0=BD=D0=B5=D0=BC=D1=83=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=80=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/install.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/deploy/install.sh b/deploy/install.sh index e9f1db1..400fab8 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -64,6 +64,8 @@ TURN_RELAY_PORT="${TURN_RELAY_PORT:-3478}" TURN_RELAY_TLS_PORT="${TURN_RELAY_TLS_PORT:-5349}" TLS_BY_PROXY="${TLS_BY_PROXY:-false}" APP_BIND_ADDR="${APP_BIND_ADDR:-127.0.0.1}" +ALLOW_PORTS="${ALLOW_PORTS:-}" +ALLOW_FROM="${ALLOW_FROM:-10.77.0.0/24}" LIVEKIT_BIND_ADDR="${LIVEKIT_BIND_ADDR:-127.0.0.1}" TURN_CERT_REMOTE="${TURN_CERT_REMOTE:-}" TURN_CERT_REMOTE_CRT="${TURN_CERT_REMOTE_CRT:-}" @@ -137,6 +139,9 @@ install.sh — установка glchat (AGENT.md 10). но ссылки в API отдаются как https/wss --app-bind-addr адрес app (по умолчанию 127.0.0.1); для прокси по WireGuard укажите адрес в туннеле, например 10.77.0.13 + --allow-port <порт/прото> разрешить порт только из подсети --allow-from + (можно указывать несколько раз), например 8080/tcp + --allow-from источник для --allow-port (по умолчанию 10.77.0.0/24) --livekit-bind-addr адрес LiveKit (по умолчанию 127.0.0.1) --turn-cert-remote тянуть сертификат TURN/TLS с внешнего узла по SSH --turn-cert-remote-crt <путь> путь к сертификату на внешнем узле @@ -195,6 +200,8 @@ parse_args() { --turn-relay-tls-port) TURN_RELAY_TLS_PORT="${2:?}"; shift 2 ;; --tls-terminated-by-proxy) TLS_BY_PROXY="true"; shift ;; --app-bind-addr) APP_BIND_ADDR="${2:?}"; shift 2 ;; + --allow-port) ALLOW_PORTS="${ALLOW_PORTS} ${2:?}"; shift 2 ;; + --allow-from) ALLOW_FROM="${2:?}"; shift 2 ;; --livekit-bind-addr) LIVEKIT_BIND_ADDR="${2:?}"; shift 2 ;; --turn-cert-remote) TURN_CERT_REMOTE="${2:?}"; shift 2 ;; --turn-cert-remote-crt) TURN_CERT_REMOTE_CRT="${2:?}"; shift 2 ;; @@ -1203,6 +1210,21 @@ configure_ufw() { # Relay-диапазон: через эти порты TURN отдаёт медиа (AGENT.md 4.2). ufw allow "${TURN_RELAY_START}:${TURN_RELAY_END}/udp" comment 'turn-relay' >/dev/null fi + # Правила для доступа из доверенной подсети (например, прокси по WireGuard): + # внутренний порт приложения не публикуется, но прокси должен до него дойти. + local spec port proto + for spec in $ALLOW_PORTS; do + port="${spec%%/*}" + proto="${spec##*/}" + [ "$proto" = "$port" ] && proto="tcp" + if [ "$port" = "8080" ] && [ "$APP_BIND_ADDR" = "127.0.0.1" ]; then + continue + fi + ufw allow from "$ALLOW_FROM" to any port "$port" proto "$proto" comment 'glchat-proxy' >/dev/null 2>&1 || + warn "не удалось добавить правило UFW для ${spec}" + ok "UFW: ${spec} разрешён из ${ALLOW_FROM}" + done + ufw --force enable >/dev/null restore_foreign_ufw_rules ok "UFW активен: $(ufw status | head -1)"