Коротко. Клонируйте репозиторий OpenClaw и запустите ./scripts/docker/setup.sh с заданным OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest", чтобы он использовал официальный готовый образ, а не собирал свой (сборка из исходников требует не меньше 6 GB RAM). Скрипт проводит onboarding, записывает токен Gateway в .env и запускает Gateway через Docker Compose. Смонтируйте папку состояния ~/.openclaw, чтобы ничего не пропало при замене контейнера, и держите порт 18789 закрытым от интернета: порты, опубликованные Docker, обходят UFW. Дайте контейнеру не меньше 2 GB памяти; при лимите 1 GB без swap официальный образ в нашем тесте был убит из-за нехватки памяти.
Проверено 6 ноября 2026, актуально для OpenClaw 2026.11.1.
В этом руководстве использованы документация OpenClaw по Docker, файл docker-compose.yml из его репозитория и тест официального образа, который мы провели на собственном сервере (цифры ниже).
Нужен ли вам Docker вообще?
Документация OpenClaw называет Docker необязательным: он полезен для изолированного одноразового Gateway или для хоста, где вы не хотите ставить Node.js. На VPS, где работает только OpenClaw, основной путь это обычная установка через npm со службой systemd (см. хостинг OpenClaw 24/7). Docker хорошо подходит, если вы уже запускаете другие вещи в контейнерах.
Что такое официальный образ
Где:ghcr.io/openclaw/openclaw (основной) и зеркало на Docker Hub openclaw/openclaw. OpenClaw не советует использовать неофициальные зеркала.
Теги:latest, конкретные релизы вроде 2026.11.1, варианты -slim и варианты -browser, включающие Chromium для автоматизации браузера.
Внутри: он работает от пользователя node под tini, а его entrypoint запускает openclaw doctor --fix на смонтированном состоянии до старта Gateway, поэтому обновления образа переносят состояние за вас. Встроенный health check обращается к /healthz.
Что мы измерили
Мы скачали ghcr.io/openclaw/openclaw:2026.11.1 на один из наших Linux-серверов и дважды запустили Gateway через docker run (не Compose), без модели, без чат-приложения, без опубликованного порта, с лимитом 1 CPU и без swap: один раз с лимитом памяти 2 GB, один раз с 1 GB. Значения памяти даны в MiB, как их показывает Linux.
Результат
Загрузка
Около 695 MB в сжатом виде (amd64), 2 818 MiB (около 3 GB) на диске после загрузки
Node.js в образе
24.22.1
Лимит 2 GB: старт
/healthz ответил через 48 секунд после docker run, включая проход doctor. Gateway загрузил 14 плагинов и записал "ready" через 22 секунды после собственного старта
Лимит 2 GB: память в покое
1 349 MiB через 30 секунд после ответа на health check, 1 106 MiB две минуты спустя, максимум 1 439 MiB. Событий нехватки памяти не было
Лимит 1 GB
Gateway дошёл до "ready", после чего весь контейнер был убит из-за нехватки памяти примерно через 54 секунды после старта (код выхода 137)
В FAQ OpenClaw 1 GB назван абсолютным минимумом для VPS. С этим релизом в контейнере с лимитом 1 GB этого не хватило. Закладывайте 2 GB и больше, а для реальных разговоров, нескольких чат-приложений или образа -browser ещё больше. Подробнее в сколько памяти нужно OpenClaw.
Пошагово с Docker Compose
Установите Docker Engine и Docker Compose v2, затем получите репозиторий:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
Без OPENCLAW_IMAGE скрипт собирает openclaw:local из исходников, что требует не меньше 6 GB RAM; сборка, закончившаяся сообщением Killed или кодом выхода 137, исчерпала память. Скрипт спрашивает API-ключ вашего провайдера, генерирует токен Gateway, записывает его в .env и затем запускает Gateway.
Откройте дашборд по адресу http://127.0.0.1:18789/ на той же машине и вставьте токен из .env в Settings. Нужна ссылка ещё раз: docker compose run --rm openclaw-cli dashboard --no-open.
Новые личные сообщения начинаются в режиме pairing: напишите боту, затем выполните docker compose run --rm openclaw-cli pairing approve telegram <CODE>. Подробнее в как подключить OpenClaw к Telegram.
Для хоста без интерактивных запросов OpenClaw описывает безголовый bootstrap: поместите ключ провайдера, OPENCLAW_GATEWAY_TOKEN и TELEGRAM_BOT_TOKEN в .env, затем выполните onboard --non-interactive и channels add --channel telegram --use-env через контейнер Gateway перед docker compose up -d openclaw-gateway.
Постоянство: что монтировать и копировать
В контейнере
Что там хранится
Сторона хоста (по умолчанию в setup)
/home/node/.openclaw
openclaw.json, базы SQLite (авторизация провайдеров, сессии), установленные плагины, секреты в .env
$HOME/.openclaw
/home/node/.openclaw/workspace
Рабочее пространство агента и файлы памяти
$HOME/.openclaw/workspace
/home/node/.config/openclaw
Ключ для старых зашифрованных учётных данных
$HOME/.openclaw-auth-profile-secrets
Монтируйте папку, а не отдельный файл. OpenClaw сохраняет openclaw.json, заменяя его, поэтому bind mount одного файла может привести к тому, что контейнер читает старую копию.
Держите состояние на локальном диске. Общие ресурсы NFS, SMB и CIFS не обеспечивают SQLite нужную координацию общей памяти и могут его повредить.
Один Gateway на папку состояния. Остановите старый контейнер, прежде чем запускать его замену.
Относитесь к резервным копиям как к секретам. В документации OpenClaw сказано, что токены OAuth лежат в этих файлах SQLite открытым текстом.
Всё, что вы устанавливаете внутри работающего контейнера, теряется при его пересоздании. Дополнительные инструменты нужно включать в образ при сборке.
Держите порт закрытым
docker-compose.yml из репозитория публикует 18789 (а также 18790 и 3978) на хосте и запускает Gateway с --bind lan, поэтому опубликованный порт до него доходит. На VPS это значит, что порт дашборда оказывается на публичном адресе, пока вы его не заблокируете. Две ловушки:
UFW это не покрывает. Опубликованные порты контейнеров идут через собственные цепочки пересылки Docker, а не только через правила INPUT хоста. В документации OpenClaw приведены правила для цепочки DOCKER-USER; подходит и облачный файрвол, пропускающий только SSH.
Для доступа к дашборду используйте туннель:ssh -N -L 18789:127.0.0.1:18789 root@<vps-ip>, затем откройте http://127.0.0.1:18789/ на своём компьютере.
Compose также задаёт restart: unless-stopped, поэтому Gateway возвращается после сбоя или перезагрузки, и убирает возможности NET_RAW и NET_ADMIN.
Entrypoint образа исправляет и мигрирует смонтированное состояние при старте. Сначала сделайте копию ~/.openclaw. С latest вы переходите на каждый стабильный релиз; зафиксируйте тег вроде 2026.11.1, чтобы остаться на месте.
Без Docker: запустите OpenClaw на PlayNHost
Сервер PlayNHost уже является изолированным контейнером со своим лимитом памяти, поэтому составлять нечего. Мы не используем официальный образ: сервер работает на Node.js 26 и при первом старте устанавливает пакет npm openclaw, а затем проверяет наличие нового релиза при каждом старте.
Настройка: вставьте ключ ИИ-провайдера и токен бота Telegram или Discord на странице «Агент», затем нажмите Start. В нашем тесте той же настройки агент работал через 67 секунд после первого Start, включая установку.
Постоянство:.openclaw лежит на диске сервера и в его резервных копиях (около 4 MB в нашем тесте); программа и её кэши устанавливаются заново, а не копируются.
Порт: Gateway слушает только на собственном loopback-адресе сервера, порт 18789, с токеном, который генерирует панель. Ничего не публикуется, так что файрвол настроить неправильно нельзя.
Память: тарифы 2 GB, 4 GB и 8 GB. Старт отказывается запускать OpenClaw при памяти меньше 2 GB.
Пока не включено: веб-дашборд, чат-приложения кроме Telegram и Discord и автоматизация браузера (нет Chromium).
Мы используем файлы cookie, чтобы сайт работал, чтобы понимать, как им пользуются, и чтобы оценивать наш маркетинг. Вы можете принять всё, принять только необходимые файлы cookie или выбрать по категориям.Мы используем файлы cookie, чтобы сайт работал, чтобы понимать, как им пользуются, и чтобы оценивать наш маркетинг. Здесь они включены по умолчанию. Вы можете отключить всё, что не хотите.Читать политику конфиденциальности