2026-04-15 OpenClaw: переменные окружения и секреты на арендованном безголовом облачном Mac (launchd)
Шлюз OpenClaw читает слои: окружение процесса, проектный .env, ~/.openclaw/.env, JSON в ~/.openclaw/openclaw.json. Команды, проверявшие только интерактивную оболочку, недооценивают порядок. На арендованном Apple Silicon, доступном лишь по SSH, пропуски проявляются как загадочные ошибки аутентификации LLM, а не как дружелюбный TUI. Этот материал (2026-04-15) описывает реальную последовательность, дыры launchd, матрицу хранения, ротацию в шесть шагов и ссылается на проверки готовности, nginx reverse proxy и структурированное логирование, чтобы шлюзы в Гонконге, Токио, Сеуле, Сингапуре и США оставались воспроизводимыми.
launchctl часто внедряет переменные до того, как CLI прочитает локальные файлы; дублирующие ключи дают «в tmux работает, после перезагрузки нет». Соберите секреты в одном аудируемом месте, используйте ${VAR} в JSON и логируйте размер эффективного окружения (обычно < 32 КБ), чтобы ловить случайный импорт printenv в CI.
Как OpenClaw разрешает окружение (модель 2026)
Как LaunchAgent дерево процессов начинается с launchd. Переменные только в .zprofile не появятся без контролируемого shell-import. Нечувствительные переключатели можно держать в plist, но не кладите долгоживущие токены в общедоступные plist. Обёртка, экспортирующая короткоживущие значения из связки ключей, безопаснее.
«Echo в терминале» не доказывает видимость шлюзом. Арендодатели могут внедрять proxy/CA; слой .env OpenClaw не всегда побеждает последним. Печатайте маскированные имена ключей в CI-обёртке и ведите diff-аудит после правок plist. Одностраничная матрица «регион ↔ материал секрета» снижает ошибки передачи.
Пробелы на безголовых арендованных Mac
- Нет окна входа — только
.zprofileне попадает в LaunchAgents. - Путаница UID GUI/SSH — другой пользователь для
openclaw gatewayдаёт пустую конфигурацию. - Распыление секретов — копия
.envв/tmpделает файл world-readable; chmod 600 и удаление. - Мультирегион — ключ US East, унаследованный JP-шлюзом, может нарушить резидентность данных.
Матрица хранения (один основной)
| Механизм | Плюсы | Риски |
|---|---|---|
~/.openclaw/.env (0600) |
Быстрые итерации, простые бэкапы | Видно root и полным образам диска |
launchd EnvironmentVariables |
Явно для демонов, переживает reboot | plist в ~/Library/LaunchAgents не должен быть world-writable |
| Связка ключей + обёртка | Лучший аудит | Сложнее разблокировка в headless |
Паттерн launchd для арендованных билдеров
UID plist = пользователь SSH CI. Секреты через связку ключей или OPENCLAW_STATE_DIR=/Volumes/secure/openclaw-$REGION, чтобы токены не делили дом с кэшем Xcode. VNC только для политического break-glass; обычно SSH и логи openclaw doctor.
#!/bin/bash
set -euo pipefail
export OPENCLAW_STATE_DIR="/Volumes/secure/openclaw-sg"
exec /usr/local/bin/openclaw gateway run
Шестишаговая ротация без падения webhook
- Заморозить ingress — nginx, внешние webhook до 90 с (статья о reverse proxy).
- Новый ключ — сначала консоль провайдера; старый ещё 15 минут.
- Атомарный swap —
.env.new, fsync,mv,chmod 600. - launchctl kickstart -k gui/$UID/pcx.openclaw.gateway — exit 0 в syslog.
- Проверка —
openclaw doctorи синтетика 127.0.0.1:18789 (пробы). - Включить nginx — 200 за 120 с; откат при ошибке > 5%.
.env в прикладные репозитории — даже приватные часто зеркалируются.
Мультитенант Mac: границы OPENCLAW_STATE_DIR
Два отряда на одном Mac mini M4: разделите /Volumes/secure/openclaw-teamA и ...-teamB, используйте разные метки launchd и unix-группы для ACL. Код региона в пути снижает ошибочную трансграничную маршрутизацию. Если ночью крутятся архивы Xcode, держите состояние вне префиксов, которые чистит CI, и исключите /Volumes/secure из janitor.
FAQ: секреты OpenClaw на облачных Mac
| Вопрос | Ответ | Ссылка |
|---|---|---|
| Оставить shell env import в проде? | Отключите, если тянет сотни лишних переменных; явные ключи plist. | справка |
| Кто менял ключ? | Контрольные суммы plist в git, syslog в SIEM. | логи |
| Один .env на все регионы? | Технически да, операционно нет — сегментируйте. | цены |
Мост к наблюдаемости и ёмкости
Секреты — это половина. После стабилизации окружения подключайте пробы и лог-пайплайны. Перечитайте пробы здоровья, масштабируйте через цены, если очередь > 40 сообщений дольше 10 минут. Индекс блога ведёт к остальной серии.
Итог: относитесь к окружению OpenClaw как к продакшн-секретам Kubernetes — явно, с минимальными правами и репетированной ротацией — тогда шлюзы Apple Silicon ведут себя одинаково в Токио и Вирджинии.
Разверните OpenClaw на выделенных M4-шлюзах
SSH в приоритете · HK · JP · KR · SG · US