Низкоэкспозиционный мультирегион на узлах vpshalo: OpenClaw остаётся на loopback, наружу не открываются ни gateway, ни doctor; поверх — только frp STCP от билдера к бастиону и visitor у оператора на localhost. Токен frps отсекает посторонних, а merge health склеивает отказы двух полос в один региональный алерт, чтобы пейджер не дублировал шум.

HowTo дополняет loopback и ssh -R, JumpHost и digest проб, Cloudflare Tunnel и Tailscale MagicDNS: там иные плоскости доверия; здесь — цепочка gateway и doctor через один frps. Имена и маршрут — в матрице глобального входа. Ниже роли, порты, шаги и разборка сбоев.

Три боли, которые снимает схема: (1) публичный HTTP к шлюзу на билдере; (2) двойные алерты, когда упал только doctor, а трафик ещё жив; (3) утечка секретов STCP из‑за одинакового secretKey между регионами. Держите ключи раздельными и логируйте region в каждом событии синтетики.

Роль frp Где живёт Зона ответственности
frps (сервер) Linux-бастион в доверенной подсети; bindPort обычно 7000 Глобальный auth.token, firewall только на CI и операторов; единственная TCP-точка входа для всех STCP
frpc (клиент) Каждый региональный билдер на vpshalo рядом с удалённым Mac Два STCP-прокси: на 127.0.0.1:18080 (gateway) и 127.0.0.1:18081 (doctor), каждый со своим secretKey
visitor Рабочая станция дежурного или воркер merge JSON Локальные bindAddr 127.0.0.1 и порты визитора, например 28080 и 28081; наружу не публикует порты

Таблица — контракт для IaC: имя прокси вида openclaw-REGION-gw и openclaw-REGION-doctor должно совпадать с инвентарём DNS и метками в логах OpenClaw.

Цепочка OpenClaw: gateway, doctor и где вклиниться frp

Зафиксируйте gateway на loopback — основной HTTP для инструментов. doctor — отдельный loopback-порт для диагностики; не смешивайте с пользовательскими маршрутами. openclaw doctor из вашей сборки должен проходить тем же путём, что curl к /healthz, после подъёма visitor — так ловите расхождение конфигов до выката.

  • Локальная проверка. На билдере без frp: curl -fsS http://127.0.0.1:18080/healthz и отдельно эндпоинты doctor по документации вашей версии OpenClaw.
  • Через frp. После visitor на операторе те же URL, но на 127.0.0.1:28080 и 127.0.0.1:28081; заголовки авторизации должны совпасть с политикой шлюза.
  • Мультирегион. Не reuse один frpc.ini между континентами: разные serverAddr или один frps, но разные имена STCP и ключи, иначе при аварии вы потеряете изоляцию картины инцидента.
  • Наблюдаемость. Прокидывайте в метки те же region и pop, что в сводке проб за прокси, чтобы merge-алерт коррелировал с digest L7.
Если doctor требует другой токен, чем gateway, храните оба секрета в vault с префиксом региона и подставляйте в заголовки curl воркера merge, а не в публичные репозитории.

Порты, токены frps и граница доверия

frps слушает контрольный канал на 7000/tcp (или вашем pin из политики сети). Включите auth.method = token и длинный случайный auth.token; на уровне ОС разрешите этот порт только с подсетей билдеров и jump-хостов. frpc на каждом узле vpshalo подключается к frps и регистрирует два STCP без локального remote_port на публичном интерфейсе билдера — это суть низкой экспозиции. Visitor на стороне оператора держит два локальных порта и матчится по server_name и secretKey к соответствующему STCP.

  • Шлюз OpenClaw. Пример привязки: --gateway-bind 127.0.0.1:18080; никаких 0.0.0.0 в unit systemd или launchd.
  • Doctor. --doctor-bind 127.0.0.1:18081 или флаги вашей сборки; проверьте, что health-скрипты бьют именно в doctor для тяжёлых проверок.
  • Ротация. Меняйте auth.token frps и secretKey STCP в одном окне изменений; иначе frpc останется на старом ключе и даст ложный «регион мёртв».
  • Аудит. Логируйте успешные handshakes frp с привязкой к hostname билдера, не только отказы.
# Пример: быстрая проверка цепочки с операторской машины (после visitor)
curl -fsS --max-time 3 http://127.0.0.1:28080/healthz
curl -fsS --max-time 5 http://127.0.0.1:28081/<doctor-health-path>

Пять шагов и merge алерт gateway плюс doctor

Выполняйте строго по порядку: сначала loopback, затем frps, затем frpc, затем visitor, затем merge. Пропуск шага приводит к «зелёному» curl на билдере и «красному» через frp из‑за рассинхрона токенов.

  • Шаг 1. Поднять OpenClaw на loopback с портами 18080 и 18081; зафиксировать флаги в IaC.
  • Шаг 2. Развернуть frps с токеном и firewall; убедиться nc -vz bastion 7000 только с разрешённых сетей.
  • Шаг 3. На каждом регионе frpc: два блока [[proxies]] типа stcp к локальным портам шлюза и doctor.
  • Шаг 4. Visitor: два [[visitors]] с bindPort 28080 и 28081 на 127.0.0.1.
  • Шаг 5. Воркер каждые 30–60 с пишет JSON-событие; если в одном окне 3–5 минут оба порта визитора дали timeout или 5xx для одного region, отправить один алерт, иначе только запись в лог.
Отдельно алертить, если жив только doctor, а gateway мёртв: это почти всегда регрессия маршрутизации или auth на шлюзе, а не сеть frp.

Разборка: типичные симптомы и что мерить первым

login to server failed: token — несовпадение auth.token frpc и frps или устаревший unit после ротации; сверьте systemd drop-in. visitor не подключается — проверьте server_name и secretKey пары STCP, а также что frpc в этом регионе реально online в логах frps. curl к 28080 зависает — сначала ICMP и TCP до 7000 с билдера, затем статус frpc; не начинайте с правок OpenClaw. Только doctor красный — сузьте до зависимостей doctor (GPU, ключи облака), не эскалируйте как полный региональный отказ.

  • Золотые числа для стейджинга: контрольный 7000, loopback шлюза 18080, doctor 18081, визиторы 28080 и 28081 — зафиксируйте в runbook как дефолт приёмки.
  • Окно merge: 180–300 секунд при интервале пробы 30–60 с снижает дребезг при кратковременных рестартах frpc.
  • Корреляция с SSH: если одновременно падает SSH к удалённому Mac, смотрите сеть PoP, а не frp; смежный материал про ssh -R поможет отличить классы инцидентов.
Оговорка: точные ключи конфигурации frp и флаги OpenClaw зависят от версии; закрепите pin в репозитории. Схема не отменяет корпоративный PKI и модель угроз; при публикации любого HTTP наружу добавьте TLS и отдельный слой auth поверх visitor.

Итог. Паттерн даёт мультирегион без публичного слушателя на билдере: только frp-клиент наружу к бастиону и локальные порты у оператора. Подберите регион узла под вашу команду на публичных страницах ниже — тарифы, помощь и покупка доступны без обязательного входа в личный кабинет.

Публичные шаги на vpshalo

Тарифы, помощь и региональная аренда

Откройте главную, сравните тарифы, загляните в помощь и блог. Региональные страницы покупки: Токио · Сеул · Гонконг · Сингапур · Запад США. Оформить аренду без лишних шагов — единая страница покупки.

Арендовать Mac Тарифы Другие статьи блога На главную Помощь