Командам нужен шлюз OpenClaw Gateway, когда ноутбуки засыпают и домашний канал нестабилен. Вынести его на арендованный удалённый Mac — практичный способ получить постоянный слушатель, границу аудита и нормальную интеграцию с Tailscale без личной машины. Ниже — шаги в духе docs.openclaw.ai/gateway, remote и tailscale: держать gateway.bind на loopback, для повседневного доступа предпочитать Serve внутри tailnet, добавлять маршруты подсетей только там, где реально нужен RFC1918, а Funnel трактовать как контролируемое исключение с усиленной аутентификацией. Базовую установку и усиление сопоставьте с нашим гайдом по Docker и прокси и чек-листом первого SSH/VNC на том же хосте; политику исходящего трафика навыков — с материалом про песочницу и белый список egress.
Зачем поднимать шлюз именно на арендованном Mac
Шлюз ближе к инфраструктуре, чем к случайной CLI-сессии: его нельзя убить закрытием крышки ноутбука и он должен переживать смену сетей без ручного переподключения.
- Аптайм — у аренды Mac mini класса обычно предсказуемое питание и охлаждение; провайдеры закладывают круглосуточную работу под CI и агентов.
- Сетевой контур — плоскость управления можно не выставлять в публичную LAN, оставив доступ по путям Tailscale, которые уже ревьюит безопасность.
- Радиус поражения — tailnet ACL плюс ограничения egress на стороне OpenClaw снижают риск, что один скомпрометированный навык «прогуляется» по всем внутренним префиксам, если вы открыли маршрутизацию подсети.
Сверка с документацией: привязка шлюза и минимальные привилегии
Таблица для брифинга с безопасностью: каждая строка связывает ожидание из официальных доков с практикой на машине провайдера.
| Тема | Официальное ожидание | Практика на арендованном Mac |
|---|---|---|
| gateway.bind | По умолчанию loopback; более широкие bind требуют токена или пароля. | Оставаться на loopback; наружу выводить через Serve, SSH -L или соседний reverse proxy — не светить сырой 18789 в общей сети датацентра. |
| Tailscale Serve | HTTPS внутри tailnet; опционально заголовки allowTailscale для путей UI. | API-маршруты держать на явных токенах; отключать доверие к identity-заголовкам, если на хосте есть чужие рабочие нагрузки. |
| Funnel | Требуется режим password; зависимости — HTTPS, MagicDNS, узел с возможностью funnel. | Включать на короткие окна для подрядчиков без tailnet; пароль только в переменных окружения, не в world-readable файлах. |
| Удалённый CLI | При --url обязательны явные --token или --password. | Автоматизация после ротации должна атомарно обновлять секреты: туннель может быть зелёным, а авторизация — устаревшей. |
Маршрут подсети против Serve против Funnel
Маршрутизация подсети позволяет устройствам tailnet ходить во внутренние сервисы через тот Mac, который анонсирует префикс: частные реестры артефактов, старые HTTP-хелперы за NAT. Одобряйте в консоли Tailscale самый узкий префикс, включайте форвардинг на этом Mac и проверяйте обратный путь до продакшена, прежде чем строить на схеме ночные пайплайны.
Serve — ответ на запрос «удалённая команда, закрытая сеть»: шлюз остаётся на 127.0.0.1, TLS и терминация — на стороне Tailscale, доверенные заголовки подключаются только там, где это осознанно разрешено конфигом.
Funnel публикует ту же точку входа в открытый интернет. Резервируйте для вендоров, которые физически не могут вступить в tailnet. Ждите более жёсткой аутентификации, мониторинга и регламентов на отключение после работ.
Эксперименты в терминале перед фиксацией в конфиге:
# Только tailnet (шлюз остаётся на loopback)
openclaw gateway --tailscale serve
# Публичный интернет — пароль и политика
openclaw gateway --tailscale funnel --auth password
Сужение ACL и ротация учётных данных
Сначала нарисуйте граф соединений: какие ноутбуки админов бьют в Serve, какие теги описывают CI-раннеры, какие исходящие API нужны самому шлюзу. Всё остальное по умолчанию запрещено. Объявления подсетей привязывайте к группам, а не ко всей компании, если политика это допускает.
Сочетайте ACL tailnet с политиками egress OpenClaw: иначе скомпрометированный skill сможет использовать свежий RFC1918-коридор как мост в локалку. Это особенно важно на мультиарендных площадках, где диски иногда переиспользуются между клиентами.
Ротация привяжите к окнам обслуживания провайдера аренды. Сгенерируйте новый OPENCLAW_GATEWAY_TOKEN, обновите launchd или окружение Docker на удалённом хосте, перезапустите шлюз, выполните openclaw gateway status и openclaw channels status --probe, затем раздайте секрет ноутбукам и задачам CI. Старый материал отзовите и приложите запись к тикету, если возможна смена образа диска между арендаторами.
HowTo: минимально воспроизводимая последовательность
- Tailscale на арендованном Mac — согласуйте версию клиента, hostname и ожидания MagicDNS с админом tailnet.
- Установка OpenClaw официальным путём — CLI или Docker; параметры bind и токена возьмите из раздела шлюза в доках.
- Старт с loopback и токеном — по SSH убедитесь, что openclaw gateway status зелёный, прежде чем открывать доступ из tailnet.
- Включение Serve — проверьте WebSocket и Control UI со второго устройства в tailnet без Funnel.
- Подсети по необходимости — сначала сырые IP и трассировка, потом сужение ACL к реальным операторам префикса.
- Опциональный Funnel — переключение на пароль, владелец окна, автоматическое отключение по таймеру или runbook.
- Регулярная смена секретов — квартал или инцидент; токен шлюза по серьёзности как продакшен API key.
Якоря для ссылок и чек-листов: слушатель по умолчанию 127.0.0.1:18789; проверки /healthz и /readyz; режимы Tailscale serve и funnel; переменные OPENCLAW_GATEWAY_TOKEN и OPENCLAW_GATEWAY_PASSWORD; обязательность явных флагов при --url в удалённом CLI.
FAQ: типовые ошибки связности
Ping Tailscale есть, WebSocket падает. Чаще всего не проброшен порт 18789 к loopback-слушателю. Добавьте Serve или SSH-туннель и повторите openclaw gateway status на сервере.
Непрерывные ответы unauthorized. Ищите вызовы с --url без пары --token или рассинхрон поколений после ротации.
Funnel и отказ запуска шлюза. Подтвердите парольный режим, теги funnel, HTTPS и MagicDNS по чек-листу Tailscale и OpenClaw.
Одобренный маршрут подсети, но пакеты гасятся. Проверьте sysctl, фаервол хоста и строки ACL, которые разрешают и сам маршрут, и целевой порт назначения.
Итог
Арендованный Mac как носитель шлюза переводит OpenClaw из эксперимента на ноутбуке в сервис, от которого команда может отключаться вечером. Опорная точка — loopback bind, повседневный доступ через Serve и суженные ACL, а Funnel и маршруты подсетей — осознанные решения с мониторингом. Плановая ротация OPENCLAW_GATEWAY_TOKEN ограничивает ущерб от переиспользования инфраструктуры аренды.
Готовы выделить узел под шлюз и смежные задачи — откройте тарифы и оформление заказа; страницы читаются без входа в аккаунт. Нужна помощь с выбором региона или доступом — справочный центр MacCompute.