Материал для инженеров, которые встраивают OpenClaw в реальные процессы: установка OpenClaw (глобальный CLI или контейнер), развёртывание в Docker, обратный прокси с TLS, усиление под продакшен, разбор типовых ошибок и шаблон удалённого Mac workflow. Команды сверены с публичными openclaw/openclaw и docs.openclaw.ai/install/docker (март 2026). Точки входа MacCompute: главная, все заметки, справочный центр.
Фон развёртывания в 2026 и типовые сценарии
OpenClaw — самохостящийся стек личного ассистента: Gateway (плоскость управления по WebSocket, в README указан ориентир ws://127.0.0.1:18789), Control UI в браузере, CLI, каналы мессенджеров и инструменты на хосте или в песочнице. На практике встречаются два пересекающихся паттерна:
- Шлюз на Linux/VPS — постоянно включённая плоскость рядом с API, доступ по SSH или Tailscale.
- Тяжёлые шаги на удалённом Mac — сборки Xcode, macOS-скрипты, подпись, длительные агенты без удержания ноутбука включённым.
Ниже — воспроизводимые команды и явные порты, без «обзорных» абзацев.
Чек-лист окружения перед установкой
- Node (путь CLI) — в README: Node 24 (рекомендуется) или Node 22.16+ до npm install -g openclaw@latest.
- Docker + Compose v2 — актуальный Engine/Desktop; в документации Docker предупреждают: для сборки образа желательно ≥ 2 ГБ RAM (иначе OOM, часто exit 137 при pnpm install).
- Git — для клонирования репозитория и ./docker-setup.sh.
- DNS и TLS — если выводите UI в интернет, заранее hostname и сертификаты (Let’s Encrypt через Caddy или certbot для Nginx).
- Фаервол и VPS — прочитайте upstream «Security hardening for network exposure» и заметки про DOCKER-USER для Docker на публичном хосте.
Воспроизводимые пути: глобальный CLI и Docker
Рекомендуемый CLI-путь (из README):
npm install -g openclaw@latest
openclaw onboard --install-daemon
openclaw gateway --port 18789 --verbose
Control UI: http://127.0.0.1:18789/. После обновлений полезно openclaw doctor.
Docker (официально) — из корня клонированного репозитория:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
./docker-setup.sh
Пропустить локальную сборку, взяв образ из GHCR:
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
./docker-setup.sh
Опционально песочница для gateway-окружения: export OPENCLAW_SANDBOX=1 перед скриптом (см. раздел Sandboxing в документации).
Ручной compose-поток (как в доках):
docker build -t openclaw:local -f Dockerfile .
docker compose run --rm openclaw-cli onboard
docker compose up -d openclaw-gateway
Сравнение: CLI и Docker
| Тема | Глобальный CLI | Docker (./docker-setup.sh) |
|---|---|---|
| Когда уместно | Быстрый цикл на своей машине, daemon через onboard | Изолированный шлюз, воспроизводимые серверы, минимум «мусора» на хосте |
| Точка входа | openclaw onboard --install-daemon | ./docker-setup.sh из корня репо + локальный docker-compose.yml |
| Control UI | http://127.0.0.1:18789/ | Тот же URL после публикации порта |
| Проверка живости | curl -fsS http://127.0.0.1:18789/healthz | То же; в образе есть HEALTHCHECK к /healthz |
| CLI после установки | Хост: openclaw … | docker compose run --rm openclaw-cli … (общий network namespace с шлюзом) |
Минимальная конфигурация безопасности: bind, токен, песочница, исходящий трафик
Привязка (bind). В конфиге используются значения gateway.bind вроде lan, loopback, tailnet, auto, custom — не сырые алиасы вроде 0.0.0.0 в этом поле. Для Docker по умолчанию задаётся OPENCLAW_GATEWAY_BIND=lan, чтобы хост доходил до опубликованного порта. При Tailscale Serve/Funnel upstream требует loopback для gateway.bind.
Токен и UI. Скрипт записывает токен шлюза в .env; вставьте его в Control UI (настройки). Относитесь к токену как к root-доступу к плоскости ассистента.
Личные сообщения. Входящие DM — ненадёжный ввод; по умолчанию действует pairing. Одобрение: openclaw pairing approve …; рискованные политики покажет openclaw doctor.
Песочница. Для групповых/канальных сессий задайте agents.defaults.sandbox.mode: "non-main", чтобы не-main сессии шли в Docker-песочницы. Это отдельно от «шлюз в Docker», но может делить один Docker на хосте.
Исходящий трафик. В профиле песочницы по умолчанию docker.network: "none"; расширяйте осознанно. На границе сети комбинируйте с политиками allow/deny инструментов.
Обратный прокси Nginx/Caddy и HTTPS
В документации первоклассны Tailscale и SSH-туннели. Если нужен классический прокси — терминируйте TLS на Caddy/Nginx и проксируйте на 127.0.0.1:18789 с поддержкой WebSocket.
Caddy (иллюстрация):
claw.example.com {
reverse_proxy 127.0.0.1:18789
}
Nginx: добавьте заголовки Upgrade и Connection для WebSocket; точные пути поверхности см. docs.openclaw.ai/web.
Контрольный список: валидный сертификат; наружу только 443 (или ограниченный allowlist); лимиты/ACL для админ-маршрутов; ротация токена задокументирована; curl -fsS https://claw.example.com/healthz через прокси возвращает успех.
Матрица диагностики: симптом → причина → действие
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
| Порт 18789 занят | Старый процесс шлюза или другой сервис | Linux: ss -tlnp | grep 18789; остановите дубликат compose или смените --port |
| 401 / unauthorized в UI | Неверный токен или pairing устройства | docker compose run --rm openclaw-cli dashboard --no-open; docker compose run --rm openclaw-cli devices list и approve по документации |
| CLI показывает ws://172.x, pairing required | Сбой gateway.mode / gateway.bind в Docker | docker compose run --rm openclaw-cli config set gateway.mode local; config set gateway.bind lan; проверка ws://127.0.0.1:18789 |
| Сборка образа exit 137 | OOM при установке зависимостей | Увеличьте RAM ≥ 2 ГБ или используйте OPENCLAW_IMAGE |
| EACCES на /home/node/.openclaw | Права bind-mount (образ под uid 1000) | Linux: sudo chown -R 1000:1000 путь_к_конфигу … |
| Песочница не стартует | Нет образа sandbox | scripts/sandbox-setup.sh или свой образ в конфиге |
| /readyz даёт 503 | Каналы в grace-периоде или отвал | Логи шлюза; проверка каналов; см. описание readyz в Docker-доках |
Автоматизация без TTY: docker compose run -T --rm openclaw-cli gateway probe.
Бизнес-пример: сквозной процесс на удалённом Mac
Шаблон для пользователей аренды или покупки Mac-вычислений: Mac — остров исполнения, секреты на машине, оркестрация по SSH (см. первую настройку SSH/VNC).
- Подготовка — вход по SSH; Docker Desktop или Colima, либо Node + глобальный CLI из раздела 3.
- OpenClaw — либо openclaw onboard --install-daemon, либо клон репозитория и ./docker-setup.sh с постоянными томами под ~/.openclaw и workspace на отдельном диске при необходимости.
- Пакет — launchd или cron запускает ваш скрипт сборки/тестов; артефакты — в каталог CI или ~/.openclaw/workspace; код выхода пишется в лог.
- Уведомление — по завершении вызов webhook (Slack/Telegram) из того же скрипта; при желании агент читает структурированные логи.
- Проверка — с ноутбука: ssh mac 'curl -fsS http://127.0.0.1:18789/healthz'; UI через туннель: ssh -L 18789:127.0.0.1:18789 mac и открыть http://127.0.0.1:18789/.
Ожидаемый результат: сборки и пакетные агенты идут без участия человека; шлюз отвечает на healthz; отладка по логам и редкому UI через SSH без публикации 18789 в интернет.
FAQ и быстрый triage
Нужен ли Docker, если нужна только песочница агентов? Песочница может использовать Docker при нативном шлюзе — см. разделы «Docker (optional)» и Sandboxing в официальных доках.
Где состояние? Compose монтирует каталоги конфигурации и workspace на хост; делайте бэкапы как для секретов и рабочей области.
Ничего не слушает? Сначала docker compose ps или openclaw doctor, затем curl на /healthz.
Итог
В продакшене OpenClaw держится на правильном пути установки (onboard vs ./docker-setup.sh), стабильном порте 18789, согласовании gateway.bind с способом публикации и многослойной защите (токен, pairing в каналах, опциональная песочница non-main, фаервол). Удалённый Mac уместен, когда нужны macOS-инструменты или суточные агенты на выделенном железе.
Для предсказуемой ёмкости под долгие задачи откройте тарифы и оформление заказа; общие вопросы — в справочном центре (без входа в личный кабинет).