Канал

Установка OpenClaw через Docker

Docker --- опциональный способ запуска OpenClaw. Используйте его, если хотите изолированное окружение на сервере или VPS. Для обычной работы на своём компьютере проще использовать нативную установку на Mac или Windows.

Источник: вся информация в этой статье основана на официальной документации Docker и репозитории OpenClaw на GitHub.

Когда нужен Docker

СценарийDocker нужен?
Запуск на своём Mac/WindowsНет --- используйте нативную установку
Запуск на VPS/сервере в изоляцииДа
Песочница для агентов (sandbox)Нужен Docker, но gateway может работать нативно
Одноразовое тестовое окружениеДа

Требования

  • Docker Desktop (или Docker Engine) + Docker Compose v2
  • Достаточно места на диске для образов и логов

Проверка

docker --version
docker compose version

Быстрый старт (рекомендуемый способ)

Официальный способ --- клонировать репозиторий и запустить скрипт настройки:

git clone https://github.com/openclaw/openclaw.git
cd openclaw
./docker-setup.sh

Скрипт docker-setup.sh автоматически:

  1. Собирает Docker-образ gateway
  2. Запускает мастер настройки (onboarding)
  3. Показывает подсказки по подключению провайдера LLM
  4. Запускает gateway через Docker Compose
  5. Генерирует токен gateway и записывает его в .env

После завершения:

  • Откройте http://127.0.0.1:18789/ в браузере
  • Вставьте токен в Control UI (Settings → token)
  • Если нужен токен повторно: docker compose run --rm openclaw-cli dashboard --no-open

Конфигурация сохраняется на хосте в ~/.openclaw/ и ~/.openclaw/workspace.

Ручной запуск (Docker Compose)

Если вы хотите контролировать каждый шаг:

# Из корня склонированного репозитория
docker build -t openclaw:local -f Dockerfile .
docker compose run --rm openclaw-cli onboard
docker compose up -d openclaw-gateway

Структура официального docker-compose.yml

В репозитории OpenClaw файл docker-compose.yml содержит два сервиса:

services:
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE:-openclaw:local}
    environment:
      HOME: /home/node
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    ports:
      - "${OPENCLAW_GATEWAY_PORT:-18789}:18789"
      - "${OPENCLAW_BRIDGE_PORT:-18790}:18790"
    init: true
    restart: unless-stopped
    command:
      [
        "node", "dist/index.js", "gateway",
        "--bind", "${OPENCLAW_GATEWAY_BIND:-lan}",
        "--port", "18789",
      ]

  openclaw-cli:
    image: ${OPENCLAW_IMAGE:-openclaw:local}
    environment:
      HOME: /home/node
      OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN}
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    stdin_open: true
    tty: true
    init: true
    entrypoint: ["node", "dist/index.js"]

Важно: образ собирается локально (openclaw:local), а не скачивается с Docker Hub. Контейнер работает от пользователя node (uid 1000), а не от root.

Переменные окружения (OPENCLAW_CONFIG_DIR, OPENCLAW_WORKSPACE_DIR, OPENCLAW_GATEWAY_TOKEN) автоматически задаются скриптом docker-setup.sh в файле .env.

Подключение каналов (Telegram, Discord и др.)

После запуска gateway настройте каналы через CLI-контейнер:

Telegram (по токену бота):

docker compose run --rm openclaw-cli channels add --channel telegram --token "<ваш-токен-бота>"

WhatsApp (по QR-коду):

docker compose run --rm openclaw-cli channels login

Discord (по токену бота):

docker compose run --rm openclaw-cli channels add --channel discord --token "<ваш-токен>"

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

# Статус
docker compose ps

# Логи (в реальном времени)
docker compose logs -f

# Перезапуск
docker compose restart openclaw-gateway

# Остановка
docker compose down

Опциональные настройки

Дополнительные монтирования

Если нужно пробросить директории с хоста внутрь контейнера:

export OPENCLAW_EXTRA_MOUNTS="$HOME/.codex:/home/node/.codex:ro,$HOME/github:/home/node/github:rw"
./docker-setup.sh

Сохранение /home/node между пересозданиями

export OPENCLAW_HOME_VOLUME="openclaw_home"
./docker-setup.sh

Установка системных пакетов в образ

export OPENCLAW_DOCKER_APT_PACKAGES="ffmpeg build-essential"
./docker-setup.sh

Песочница агентов (Agent Sandbox)

Sandbox --- это отдельная от gateway Docker-функция. Gateway может работать нативно на хосте, а инструменты агента выполняться в изолированном контейнере.

Для включения добавьте в ~/.openclaw/openclaw.json:

{
  agents: {
    defaults: {
      sandbox: {
        mode: "non-main",   // off | non-main | all
        scope: "agent",     // session | agent | shared
      },
    },
  },
}

Соберите образ песочницы:

# Базовая песочница
scripts/sandbox-setup.sh

# С инструментами разработки (Node, Go, Rust)
scripts/sandbox-common-setup.sh

# С браузером (Chromium + CDP)
scripts/sandbox-browser-setup.sh

По умолчанию песочница:

  • Образ: openclaw-sandbox:bookworm-slim
  • Сеть: none (без доступа в интернет)
  • Пользователь: 1000:1000 (не root)
  • Автоочистка: idle > 24ч или возраст > 7 дней

Деплой на VPS

Для VPS официальная документация рекомендует отдельный гайд: Hetzner (Docker VPS).

Общий порядок:

# 1. Установить Docker на сервере
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

# 2. Склонировать репозиторий
git clone https://github.com/openclaw/openclaw.git
cd openclaw

# 3. Запустить настройку
./docker-setup.sh

Gateway по умолчанию привязывается к lan (доступен по локальной сети), порт 18789.

Права доступа

Контейнер работает от пользователя node (uid 1000). Если возникают ошибки Permission denied:

sudo chown -R 1000:1000 ~/.openclaw ~/.openclaw/workspace

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

docker compose exec openclaw-gateway node dist/index.js health --token "$OPENCLAW_GATEWAY_TOKEN"

Типичные проблемы

«Permission denied» при монтировании volumes

  • Убедитесь, что директории на хосте принадлежат uid 1000: ls -ln ~/.openclaw/
  • Исправьте: sudo chown -R 1000:1000 ~/.openclaw

«Unauthorized» или «disconnected (1008): pairing required»

  • Получите свежий токен: docker compose run --rm openclaw-cli dashboard --no-open
  • Подтвердите устройство: docker compose run --rm openclaw-cli devices approve <requestId>

Контейнер перезапускается в цикле

  • Проверьте логи: docker compose logs --tail 50
  • Обычно проблема в конфигурации --- ошибка синтаксиса в openclaw.json

Агент не отвечает в мессенджере

  • Проверьте, что канал добавлен: docker compose run --rm openclaw-cli channels list
  • Проверьте сетевой доступ из контейнера

Что дальше

Следите за OpenClaw на русском

Разбираем обновления, пишем гайды, делимся кейсами

Подписаться на канал Задать вопрос в чате
Присоединяйтесь к сообществу