OpenClaw в Docker: установка и настройка контейнера

Что такое OpenClaw в Docker

OpenClaw в Docker — это способ запустить ИИ-агента в изолированном контейнере, где все зависимости, библиотеки и настройки упакованы в единый воспроизводимый пакет. Вместо установки Node.js, Python и десятков пакетов на хост-машине вы получаете готовую среду, которая работает одинаково на любом сервере.

Docker-установка — рекомендуемый способ для продакшн-развертываний OpenClaw. Официальный репозиторий содержит готовый Dockerfile, docker-compose.yml и скрипт автоматической настройки, которые делают процесс установки предсказуемым и повторяемым.

Зачем использовать Docker для OpenClaw

Docker даёт три ключевых преимущества при работе с OpenClaw:

  • Изоляция. OpenClaw работает в своём контейнере и не влияет на другие сервисы на сервере. Если что-то сломается — перезапуск контейнера решает проблему без побочных эффектов.
  • Воспроизводимость. Один и тот же образ работает идентично на вашем ноутбуке, VPS и выделенном сервере. Нет ситуации «у меня работает, а на сервере нет».
  • Простое обновление. Обновление OpenClaw сводится к одной команде: docker compose pull && docker compose up -d. Никакого ручного обновления зависимостей.
  • Если вы планируете запустить OpenClaw на VPS или выделенном сервере и хотите стабильную, изолированную среду — Docker это правильный выбор. Если же вы просто хотите попробовать OpenClaw локально на своём компьютере, обычная установка через npm будет быстрее.

    Требования к серверу

    Для запуска OpenClaw в Docker потребуется:

  • Docker Engine версии 20.10 или выше
  • Docker Compose v2 (входит в состав современных версий Docker)
  • Минимум 2 ГБ ОЗУ — при сборке образа pnpm install может завершиться с ошибкой OOM (exit 137) на серверах с 1 ГБ памяти
  • Достаточно места на диске — образы Docker, логи и данные агента занимают место
  • Рекомендуемые ресурсы в зависимости от сценария использования:

    Сценарий CPU RAM Диск
    Персональный ассистент 2 vCPU 4 ГБ 80 ГБ
    Автоматизация рабочих процессов 4 vCPU 8 ГБ 160 ГБ
    Разработка и тестирование 4+ vCPU 16 ГБ 240+ ГБ

    Установка Docker на сервер

    Если Docker ещё не установлен, выполните на сервере с Ubuntu:

    sudo apt update && sudo apt upgrade -y
    sudo apt install -y ca-certificates curl gnupg lsb-release
    
    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    sudo apt update
    sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
    

    Проверьте установку:

    docker --version
    docker compose version
    

    Способ 1: Автоматическая установка (рекомендуется)

    Самый простой путь — использовать официальный скрипт настройки. Он проведёт вас через все шаги интерактивно.

    Клонирование репозитория

    git clone https://github.com/openclaw/openclaw.git
    cd openclaw
    

    Запуск скрипта настройки

    ./scripts/docker/setup.sh
    

    Скрипт автоматически:

  • Соберёт Docker-образ локально (или скачает готовый, если задать OPENCLAW_IMAGE)
  • Запустит интерактивный онбординг — запросит API-ключи провайдера
  • Сгенерирует токен доступа к gateway и запишет его в .env
  • Создаст директорию для профилей аутентификации
  • Запустит gateway через Docker Compose
  • Если хотите использовать готовый образ вместо сборки:

    export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
    ./scripts/docker/setup.sh
    

    Готовые образы публикуются в GitHub Container Registry. Доступные теги: main, latest, а также версии вида 2026.2.26.

    Способ 2: Ручная установка

    Если хотите контролировать каждый шаг, можно выполнить всё вручную.

    Сборка образа

    docker build -t openclaw:local -f Dockerfile .
    

    Онбординг

    docker compose run --rm --no-deps --entrypoint node openclaw-gateway \
      dist/index.js onboard --mode local --no-install-daemon
    

    Настройка конфигурации

    docker compose run --rm --no-deps --entrypoint node openclaw-gateway \
      dist/index.js config set --batch-json '[
        {"path":"gateway.mode","value":"local"},
        {"path":"gateway.bind","value":"lan"},
        {"path":"gateway.controlUi.allowedOrigins","value":["http://localhost:18789","http://127.0.0.1:18789"]}
      ]'
    

    Запуск

    docker compose up -d openclaw-gateway
    

    Первый запуск и доступ к веб-интерфейсу

    После запуска контейнера откройте в браузере http://127.0.0.1:18789/. Если OpenClaw развёрнут на удалённом сервере — замените адрес на IP сервера.

    Для аутентификации потребуется токен, который был сгенерирован при настройке. Он записан в файле .env в переменной OPENCLAW_GATEWAY_TOKEN.

    Если токен утерян, его можно получить заново:

    docker compose run --rm openclaw-cli dashboard --no-open
    

    Команда выведет URL с токеном для доступа к панели управления.

    Ошибка «pairing required»

    Иногда при открытии интерфейса появляется ошибка disconnected (1008): pairing required. Это значит, что устройство ещё не одобрено. Решение:

    docker compose exec openclaw-gateway node dist/index.js devices list
    docker compose exec openclaw-gateway node dist/index.js devices approve 
    

    Подключение мессенджеров

    OpenClaw поддерживает подключение нескольких мессенджеров через CLI-контейнер.

    Telegram

    Сначала создайте бота через @BotFather в Telegram (команда /newbot), получите токен. Затем:

    docker compose run --rm openclaw-cli channels add --channel telegram --token "ВАШ_ТОКЕН"
    

    После подключения OpenClaw отправит код подтверждения в Telegram. Одобрьте его:

    docker compose run --rm openclaw-cli pairing approve telegram КОД
    

    WhatsApp

    Для WhatsApp используется авторизация через QR-код:

    docker compose run --rm openclaw-cli channels login
    

    Отсканируйте QR-код камерой телефона через WhatsApp (Настройки → Связанные устройства).

    Discord

    docker compose run --rm openclaw-cli channels add --channel discord --token "ВАШ_ТОКЕН"
    

    Использование локальных моделей (Ollama, LM Studio)

    Если вы запускаете модели локально через Ollama или LM Studio на той же машине, где работает Docker-контейнер, нужно учесть особенность Docker-сети: 127.0.0.1 внутри контейнера указывает на сам контейнер, а не на хост-машину.

    Вместо http://127.0.0.1:11434 (Ollama) или http://127.0.0.1:1234 (LM Studio) используйте http://host.docker.internal:11434 и http://host.docker.internal:1234 соответственно.

    Убедитесь, что Ollama или LM Studio слушают на всех интерфейсах:

    # Ollama
    OLLAMA_HOST=0.0.0.0:11434 ollama serve
    
    # LM Studio
    lms server start --port 1234 --bind 0.0.0.0
    

    Официальный docker-compose.yml уже содержит маппинг host.docker.internal на Docker host gateway для Linux.

    Управление контейнером

    Основные команды

    # Запуск
    docker compose up -d
    
    # Остановка
    docker compose down
    
    # Просмотр логов
    docker compose logs -f
    
    # Перезапуск
    docker compose restart openclaw-gateway
    

    Проверка здоровья

    OpenClaw предоставляет эндпоинты для проверки состояния без аутентификации:

    curl -fsS http://127.0.0.1:18789/healthz   # жив ли контейнер
    curl -fsS http://127.0.0.1:18789/readyz     # готов ли к работе
    

    Docker-образ встроенно проверяет /healthz. Если проверка не проходит, контейнер помечается как unhealthy.

    Установка дополнительных пакетов

    Контейнер OpenClaw работает от пользователя node (uid 1000), без root-доступа. Если нужно установить дополнительные пакеты:

    docker compose exec -u root openclaw-gateway bash
    apt-get update && apt-get install -y нужный_пакет
    

    Для пакетов, которые нужны при сборке образа, используйте переменные окружения:

    export OPENCLAW_IMAGE_APT_PACKAGES="ripgrep ffmpeg"
    export OPENCLAW_IMAGE_PIP_PACKAGES="some-python-package==1.0.0"
    ./scripts/docker/setup.sh
    

    Обновление OpenClaw в Docker

    Обновление до новой версии — одна из главных причин использовать Docker. Процесс:

    cd openclaw
    git pull
    docker compose pull   # если используете готовый образ
    docker compose up -d  # пересоздаёт контейнер с новым образом
    

    Если вы собирали образ локально:

    cd openclaw
    git pull
    docker compose build
    docker compose up -d
    

    Данные агента (память, конфигурация, профили) сохраняются, потому что они монтируются как тома из хост-системы.

    Автоматическое обновление с Watchtower

    Для автоматического обновления можно использовать Watchtower:

    docker run -d \
      --name watchtower \
      -v /var/run/docker.sock:/var/run/docker.sock \
      containrrr/watchtower --schedule "0 0 4 * * *" openclaw-gateway
    

    Это обновит контейнер OpenClaw каждый день в 4:00.

    Хранение данных и персистентность

    Docker Compose монтирует три директории из хост-системы:

  • Конфигурация (~/.openclaw/home/node/.openclaw) — настройки, API-ключи, память агента
  • Рабочая область (~/openclaw/workspace/home/node/.openclaw/workspace) — файлы, с которыми работает агент
  • Секреты аутентификации (~/.config/openclaw/home/node/.config/openclaw) — ключи шифрования профилей
  • В этих директориях хранятся:

  • openclaw.json — основной конфигурационный файл
  • agents//agent/auth-profiles.json — OAuth и API-ключи
  • .env — runtime-секреты вроде OPENCLAW_GATEWAY_TOKEN
  • За ростом диска нужно следить: медиафайлы, логи сессий (JSONL), база данных SQLite и установленные плагины могут занимать значительное место.

    Переменные окружения

    Скрипт настройки принимает дополнительные переменные:

    Переменная Назначение
    `OPENCLAW_IMAGE` Использовать готовый образ вместо сборки
    `OPENCLAW_IMAGE_APT_PACKAGES` Дополнительные apt-пакеты при сборке
    `OPENCLAW_IMAGE_PIP_PACKAGES` Дополнительные Python-пакеты при сборке
    `OPENCLAW_EXTENSIONS` Плагины для предустановки при сборке
    `OPENCLAW_EXTRA_MOUNTS` Дополнительные монтирования (через запятую)
    `OPENCLAW_HOME_VOLUME` Хранить `/home/node` в именованном томе Docker
    `OPENCLAW_SANDBOX` Включить песочницу (`1`, `true`, `yes`)
    `OPENCLAW_SKIP_ONBOARDING` Пропустить интерактивный онбординг

    Безопасность при развёртывании

    OpenClaw выполняет системные команды и имеет доступ к файлам. При публичном развертывании важно соблюдать меры безопасности:

  • Не открывайте порт 18789 наружу без необходимости. Если нужен удалённый доступ — используйте VPN, Tailscale или reverse proxy с HTTPS.
  • Используйте токен аутентификации. OPENCLAW_GATEWAY_TOKEN в .env защищает панель управления от несанкционированного доступа.
  • Не запускайте контейнер от root. Официальный образ работает от пользователя node (uid 1000). Не меняйте это без веской причины.
  • Настройте файрвол. На Ubuntu используйте ufw — откройте только необходимые порты.
  • Права на файлы. Если видите ошибки EACCES, убедитесь что директории на хосте принадлежат uid 1000:
  • sudo chown -R 1000:1000 ~/.openclaw ~/openclaw/workspace
    

    Установка на VPS: пошаговый сценарий

    Полный процесс запуска OpenClaw в Docker на VPS с Ubuntu:

  • Подключиться к серверу по SSH
  • Установить Docker (см. раздел выше)
  • Клонировать репозиторий:
  • git clone https://github.com/openclaw/openclaw.git && cd openclaw
    
  • Запустить настройку:
  • ./scripts/docker/setup.sh
    
  • Во время онбординга указать API-ключ выбранного провайдера (Anthropic, OpenAI, Google и др.)
  • Открыть панель по адресу http://IP_СЕРВЕРА:18789
  • Подключить мессенджер (Telegram, WhatsApp или Discord) через CLI
  • После этого агент будет доступен из мессенджера и веб-интерфейса, работая 24/7 на вашем сервере.

    ClawDock: утилита для удобного управления

    Для повседневного управления Docker-контейнером OpenClaw можно установить набор shell-хелперов ClawDock:

    mkdir -p ~/.clawdock && curl -sL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/clawdock/clawdock-helpers.sh -o ~/.clawdock/clawdock-helpers.sh
    echo 'source ~/.clawdock/clawdock-helpers.sh' >> ~/.zshrc && source ~/.zshrc
    

    После установки доступны команды: clawdock-start, clawdock-stop, clawdock-dashboard и другие. Полный список — через clawdock-help.

    Частые вопросы

    OpenClaw в Docker не запускается — что проверить?

    Сначала посмотрите логи: docker compose logs -f. Типичные проблемы: нехватка ОЗУ (exit 137), ошибки в .env, неправильные права на смонтированные директории. Убедитесь, что на сервере достаточно памяти — минимум 2 ГБ.

    Можно ли запустить несколько агентов в одном Docker-контейнере?

    Нет. Каждый агент OpenClaw должен работать в отдельном контейнере со своей конфигурацией и томами. Это обеспечивает изоляцию и предсказуемость.

    Как перенести агента на другой сервер?

    Скопируйте три директории (~/.openclaw, ~/openclaw/workspace, ~/.config/openclaw) на новый сервер и запустите docker compose up -d. Все настройки, память и профили агента сохранятся.

    Работает ли OpenClaw в Docker на ARM (Apple Silicon, Raspberry Pi)?

    Официальный образ поддерживает linux/amd64. На ARM-устройствах (Apple M1/M2, Raspberry Pi) образ собирается из исходников при первом запуске, что занимает больше времени. На Raspberry Pi с 4 ГБ ОЗУ это возможно, но сборка может занять 10-15 минут.

    Чем Docker-установка отличается от обычной?

    Обычная установка (npm install -g openclaw) ставит OpenClaw прямо на хост-машину. Это быстрее для локального тестирования, но не изолировано. Docker-установка даёт чистую, воспроизводимую среду, которая легко обновляется и не зависит от системных пакетов хоста.