Онбординг уже проходит, но CLI или панель долго остаются на Gateway not ready / not ready — обычно это происходит до того, как процесс реально слушает порт, другой слой, чем gateway closed (1000) (сессии, scopes, токены). Здесь — кратчайший путь для платформенных инженеров: семь пунктов про порты, память, таймауты, образы и права на тома, таблица bare‑metal systemd против Docker для выбора логов, затем шестишаговый runbook с openclaw doctor и примерами команд, плюс чтение вместе с обзором установки, Docker production и наблюдаемостью.
not ready обычно значит, что control plane ещё не увидел успешный listen, готовность зависимостей или прохождение health‑проб; это не то же самое, что отключение по политике после поднятого WebSocket — для такого сначала читайте closed (1000). Семь пунктов ниже — самопроверка платформы в первую неделю после установки.
Порт занят старым процессом или другим сервисом: после апгрейдов или повторных docker compose up на хосте может остаться старый Gateway на том же порту; новый процесс поднимается наполовину, а CLI показывает только not ready.
Мало памяти и swap, OOM: на маленьком VPS, где одновременно тянут модель и Gateway, Node может быть убит до готовности — в логах часто exit 137 или «тихое» исчезновение.
Слишком короткий таймаут старта: холодные pull или нативные сборки превышают дефолтный startupTimeout, healthcheck падает рано, кажется «вечный not ready».
Смотрите не тот лог: при смешанной отладке systemd и Docker можно tail‑ить контейнер и забыть, что host‑unit всё ещё поднимает старый бинарник — или наоборот.
Права на named volume и UID‑mapping: пользователь контейнера не может писать состояние; Gateway уходит в crash loop, снаружи только not ready.
Дрейф digest образа и конфигурации: compose смотрит на :latest, но кэш слоёв не совпадает с новыми полями openclaw.json, entry‑скрипт выходит рано.
Сеть принимают за сбой старта: таймауты реестра моделей/плагинов зависают на инициализации — отделите DNS/egress от самого Gateway.
Общее: процесс не доходит до обслуживаемого состояния, поэтому status/RPC выглядят «наполовину зелёными». Занесите это в шаблон тикета, затем по таблице ниже выберите поверхность логов и не прыгайте между journal и docker logs.
Согласовано с кросс‑платформенной установкой: там «ставится», здесь «не поднимается». С наблюдаемостью: там долгие метрики и откат, здесь жёсткие сбои до первой готовности.
Если Gateway на выделенном удалённом Mac или маленьком Linux‑VPS, в review изменений добавьте минимум памяти и запас диска, а не только пины версий — иначе not ready всплесками перед демо. Таблица ниже сводит «какой лог читать» к одному решению.
Не выставляйте Gateway в публичный интернет «проверить связность», пока не ясно, что слушает порт; следуйте принципу минимальной поверхности из статьи по усилению безопасности.
При отладке not ready первый выбор — форма входа: systemd поднимает процесс или compose в контейнере? Смешение тратит время.
| Измерение | Linux/macOS bare metal + systemd (или launchd) | Docker / Compose |
|---|---|---|
| Первый экран логов | journalctl -u <unit> -n 200 --no-pager или эквивалент платформы | docker compose logs --tail=200 <service>, выровнять по меткам рестартов |
| Проверка конфликта портов | На хосте lsof -nP -iTCP:<port> -sTCP:LISTEN (иллюстративно) | Слушатели на хосте и внутри контейнера; publish‑порты против уже занятых сервисов |
| Права / тома | Владелец каталога состояния и пользователь рантайма | UID named volume, read‑only root и записываемые маунты; см. Docker production |
| Таймауты и ретраи | В unit: TimeoutStartSec, политика Restart= | healthcheck start_period, retries и холодный старт образа |
| Апгрейд / откат | Версия пакета + путь к последней рабочей копии конфига | Закреплённый digest образа + версионируемый compose; дух раздела отката из статьи про наблюдаемость |
«Сначала убедиться в listen, потом говорить про сессии»: на фазе not ready лучший ROI — порты + ресурсы + правильное окно логов, а не первая смена токенов.
Если выкатываете Ubuntu 24.04 + systemd + Tunnel, проверьте, что upstream туннеля всё ещё смотрит на актуальный порт; иначе снаружи вечный not ready, а локально curl 127.0.0.1 выглядит нормально.
В Docker часто ошибаются: «контейнер Exited, а compose будто creating» — docker compose ps -a для кодов выхода, затем права на тома и entry‑скрипт.
Когда процесс слушает и пробы зелёные, но клиенты ведут себя странно, переходите к сессионному пути в closed (1000).
Порядок держит дешёвые проверки впереди: сначала ресурсы и порты, потом конфиг и образы. Точные подкоманды зависят от вашей сборки OpenClaw.
Заморозить параллельные ретраи: остановите авто‑reconnect скрипты коллег, чтобы шторм соединений не засыпал расследование.
Снимок версии и ресурсов: в тикет положите openclaw --version, uname -a, свободную память и диск.
Проверить порты и старые процессы: listen на настроенном порту; если есть старый PID — аккуратно остановить и поднять по доке systemd/Docker.
Запустить doctor / validate: openclaw doctor или эквивалент, закрыть очевидные дыры, снова старт.
Расширить окно наблюдения старта: если поддерживается, временно поднять gateway.startupTimeout или start_period healthcheck в compose, чтобы отделить «медленно» от «мёртво».
Минимальная приёмка: после локального curl health или официальной status‑команды ready верните остальных пользователей; если нет — эскалация с логами из раздела 4.
openclaw --version openclaw doctor # пример systemd: # journalctl -u openclaw-gateway -n 120 --no-pager # пример Docker: # docker compose logs --tail=120 gateway # затем перезапуск unit/compose по документации дистрибутива
Заметка: если в логах CLI таймауты загрузки модели/плагина, отделите egress от самого Gateway; в окне обслуживания можно временно расширить allowlist, затем снова сузить — см. усиление безопасности.
Согласовано с обзором установки: после смены биллинга Anthropic или формы API‑ключа держите env и конфиг из одного источника, иначе парсинг ключей блокируется и выглядит как not ready.
На выделенном удалённом Mac с долгим Gateway добавьте в тот же runbook политику рестартов launchd/unit и чистку диска, чтобы полный диск не гонял цикл not ready.
Закрепите карту «простыми словами → действие» в on‑call, чтобы срезать шум. Если уже фигурируют коды закрытия WebSocket, переходите к closed (1000).
Порт занят: сначала остановить старый процесс, потом новый; не масштабировать без свободного порта. Мало памяти: снизить параллелизм или добавить swap/апгрейд до тюнинга. Не удалось стянуть образ: сначала docker pull или доступ к registry, потом конфиг Gateway.
Внимание: не запускайте docker system prune в проде без следа; можно снести бэкапы named volume, которые ещё нужны. Пути очистки фиксируйте в записи изменения.
Связка с наблюдаемостью: после устранения not ready пометьте корневую причину на дашборде (порт/память/образ/том), чтобы класс не открывался снова на следующей неделе.
Если Gateway с дочерними процессами MCP на том же хосте, на старте проверьте пути к бинарям детей и sandbox‑маунты внутри контейнера — иначе родитель зависнет на обнаружении инструментов.
Поля для выравнивания между командами; перед внешней отправкой обезличьте.
Только ноутбук делает Gateway уязвимым ко сну и обновлениям ОС; крошечный VPS часто OOM на холодном старте. Когда нужен долгоживущий, договорный macOS‑слой исполнения для OpenClaw и цепочки инструментов, выделенный удалённый Mac обычно стабильнее одалживания железа. По сравнению с лоскутной инфраструктурой, облачная аренда Mac Mini от NodeMini даёт фиксированный SSH и понятные дисковые уровни, чтобы «Gateway + toolchain» передавался как узел estate. Спеки и цены: цены аренды Mac Mini; вопросы онбординга: справочный центр; серию OpenClaw начинайте с категории блога.
Эта статья, если процесс не слушает или подозреваете порты, память, таймауты; closed (1000), если WebSocket был поднят и сессия или политика закрыла соединение. Для планирования мощности и онбординга см. цены аренды Mac Mini и справочный центр.
docker compose logs --tail=120 gateway плюс снимок dmesg/ресурсов на хосте за тот же интервал; при подозрении на права тома добавьте коды выхода docker compose ps -a.
Откройте категорию OpenClaw в блоге для установки, Docker, systemd, безопасности, наблюдаемости и MCP; эта статья для фазы «не стартует».