2026 OpenClaw headless Linux Docker: onboard в pending, pending.json и dashboard --no-open, runbook проверки

~16 мин чтения · MACCOME

Если вы запускаете OpenClaw только с Docker на headless Linux VPS—без рабочего стола и браузера—и упираетесь в мастер или onboard, застрявшие в pending, логи с просьбой открыть локальный браузер или dashboard, падающий без DISPLAY, эта статья даёт готовую к тикету лестницу приёмки для headless: зафиксируйте один compose-трек и один источник истины TOKEN, затем замените «я видел Control UI» на dashboard --no-open, gateway status/probe и структурированные логи. Дополняет гайд установки для трёх ОС, triage Windows Docker, Linux systemd+Tunnel без Docker и Compose pairing 1006/1008; производственные якоря стыкуются с выделенным Gateway через SSH LocalForward.

Шесть ложных «провалов» на headless Linux Docker для OpenClaw

  1. Считать «обязательно открыть браузер» критерием приёмки: на headless чаще ошибка в тестовом сценарии, а не одиночная поломка Gateway—используйте контракты CLI.
  2. Двойной трек onboard и compose: два входа наполовину пишут pending.json и переменные окружения—случайный pending или дрейф TOKEN (та же причина, что в статье про Compose pairing).
  3. Нет silent/headless-переключателей: мастер ждёт ввода, пока health всё ещё «зелёный».
  4. cgroup, graph driver и дефолтные ulimits: на маленьких VPS — OOM или исчерпание fd, ошибочно читаемые как WebSocket 1006.
  5. Корпоративный MITM или прозрачные прокси: pull образов проходит, рукопожатия WebSocket ломаются—проверьте ожидания TLS и trust store.
  6. Копировать windows-домашку на Linux: предпосылки WSL2 и Docker Desktop отличаются от Linux engine—следуйте порядку «сначала engine» из triage doctor после установки.

Ценность headless — меньшая атакуемая поверхность и сильнее автоматизация; если приёмка всё ещё зависит от клика в браузере, вы лишь перенесли хаос десктопа в SSH. Читая runbook Docker для продакшена, держите тег образа, хеш compose и инъекцию TOKEN на одном тикете.

Если команда ведёт и bare metal systemd, и Docker, задокументируйте истину по умолчанию: какой путь для CI-образов и какой для продакшена—смешанные хосты отлаживаются тяжелее всего.

Измерение Headless Docker (эта статья) Linux systemd + Tunnel (без контейнеров)
Воспроизводимость и апгрейды Теги образов и compose быстро версионируются, откат прост Зависит от пакетов дистрибутива и unit-файлов; глубже кастом, слабее «история образа»
Приёмка headless Естественно сочетается с --no-open и лог-драйверами контейнера journald и curl-пробы; пути другие, чем у Docker
Сетевые пространства имён 1006/1008 часто связаны с комбинациями bridge / publish Стек хоста; проблемы чаще на Tunnel и bind
С выделенным удалённым Mac Gateway можно перенести на выделенный хост; ноутбук остаётся только с CLI Тот же вывод; отличаются привычки эксплуатации
Типичное неправильное использование Разветвления compose CI/prod без меток Держать в голове два Gateway на одной коробке: Tunnel и Docker
info

Заметка: Советы сообщества ставить silent true в pending.json, чтобы пропускать блокирующие мастера, нужно сверять с актуальной документацией OpenClaw, прежде чем вшивать это в пайплайны; после апгрейдов снова прогоняйте регрессию, чтобы silent не превратился в тихий зависон.

Шестишаговый headless-runbook: от «умеем pull образов» до «gateway probe зелёный»

  1. Зафиксировать один входной трек: только compose или только официальный docker-setup; второй путь — только справочник.
  2. Проверить engine и диск: docker info, свободное место у корня данных Docker, ulimit -n; крошечным VPS стоит добавить swap или ограничить параллелизм до включения фич.
  3. Обработать onboard / pending: примените документированные headless-переключатели; после изменений выводите хеш pending-файлов в логи CI для аудита.
  4. Запустить Gateway и проверить только CLI: openclaw gateway statusopenclaw gateway probe (если есть) → openclaw dashboard --no-open; запретите единственный сигнал успеха «увидел в браузере».
  5. Запустить doctor и зафиксировать отступления: согласуйте поля с triage doctor после установки; у каждого отступления есть владелец и срок.
  6. Добавить регрессию: после пересборки контейнера тот же скрипт должен проходить за 10 минут; иначе инцидент с хешем compose и digest образа.
bash
# Пример: проверки только через CLI (имена сервисов compose подстройте)
docker compose ps
docker compose logs -f --tail=200 openclaw-gateway

openclaw gateway status || true
openclaw dashboard --no-open || true
openclaw doctor --yes || true

Три метрики для SLO или заметок дежурства (подстроить под SKU)

  • Холодный старт до первой успешной probe (G2P): медиана минут от compose up -d до первой успешной gateway probe; если неделя к неделе рост >40% при тех же тегах образов, смотрите диск и fds до обвинений моделей.
  • Шаги, зависящие от браузера, на headless: цель — ноль; любой новый шаг с DISPLAY возвращайте в продукт или dev-only-профиль compose.
  • События dual-Gateway: считайте двойные bind на 18789 или алерты двух источников TOKEN; >0 две недели подряд — повод на архитектурный разбор по статье про два источника TOKEN.

Почему «лёгкий рабочий стол + VNC» или «повторять onboard до удачи» — плохая сделка в 2026

Лёгкие десктопы расширяют поверхность патчей и стоимость аудита сессий; публичный VNC — классический высокорисковый паттерн. Бесконечные повторы onboard прячут дрейф полей в мышечной памяти, а не в автоматизации.

Когда нужен 7×24 аудируемый Gateway, согласованный с CI, а headless Linux остаётся лучше для краевых проб или коротких PoC, размещение авторитетного Gateway на выделенном удалённом Apple Silicon Mac с документированным SSH-forward или политикой tailnet обычно выигрывает у борьбы с cgroup на маленьких VPS—MACCOME предлагает Mac mini (M4 / M4 Pro) в шести регионах с гибкой арендой; оцените топологию по публичному гайду по узлам и аренде до решения.

Итог: headless-приёмка живёт в DOCKER_GATEWAY.md, не в чате

Отдавайте: версию compose, digest образа, политику silent/pending, образцы вывода CLI, явную формулировку «браузер не нужен». Любой шаг, который не воспроизвести на второй headless-коробке, — незавершённая документация.

Сравнивая с triage Windows Docker, помните: та же лестница, другой хост и engine; не смешивайте пути логов Docker Desktop и Linux engine.

FAQ

Onboard остаётся в pending на headless-сервере—нужен ли рабочий стол?

Обычно нет: используйте headless-переключатели и CLI-приёмку; поля pending.json сверяйте с докой. Для продакшен-Gateway на выделенных узлах см. цены аренды Mac mini и снова цены аренды Mac mini для тарифов.

Могут ли Linux Docker и systemd+Tunnel делить одну машину?

Технически да, но без разделения сред часто возникает двойной Gateway / двойная истина TOKEN. Зафиксируйте значение по умолчанию. См. runbook Tunnel и статью про Compose pairing.