OpenClaw на GCP Compute Engine (Docker, руководство по Production VPS)

Цель

Запустить постоянно работающий OpenClaw Gateway на виртуальной машине GCP Compute Engine, используя Docker, с долговременным состоянием, встроенными бинарниками и безопасным поведением при перезапуске.

Если вы хотите "OpenClaw 24/7 за ~$5-12/мес", это надежная настройка на Google Cloud. Цены зависят от типа машины и региона; выберите наименьшую VM, которая подходит для вашей рабочей нагрузки, и масштабируйте при необходимости.

Что мы делаем (простыми словами)?

  • Создаем проект GCP и включаем биллинг
  • Создаем виртуальную машину Compute Engine
  • Устанавливаем Docker (изолированная среда выполнения приложения)
  • Запускаем OpenClaw Gateway в Docker
  • Сохраняем ~/.openclaw + ~/.openclaw/workspace на хосте (переживает перезапуски/пересборки)
  • Получаем доступ к Control UI с вашего ноутбука через SSH-туннель

К Gateway можно получить доступ через:

  • SSH-проброс портов с вашего ноутбука
  • Прямой доступ к порту, если вы сами управляете firewall и токенами

Это руководство использует Debian на GCP Compute Engine. Ubuntu тоже работает; сопоставьте пакеты соответственно. Для общего Docker-процесса см. Docker.


Быстрый путь (для опытных операторов)

  1. Создать проект GCP + включить Compute Engine API
  2. Создать виртуальную машину Compute Engine (e2-small, Debian 12, 20GB)
  3. SSH в VM
  4. Установить Docker
  5. Клонировать репозиторий OpenClaw
  6. Создать постоянные директории хоста
  7. Настроить .env и docker-compose.yml
  8. Встроить необходимые бинарники, собрать и запустить

Что вам понадобится

  • Аккаунт GCP (подходит для бесплатного тарифа e2-micro)
  • Установленный gcloud CLI (или использовать Cloud Console)
  • SSH-доступ с вашего ноутбука
  • Базовая работа с SSH + копирование/вставка
  • ~20-30 минут
  • Docker и Docker Compose
  • Учетные данные аутентификации модели
  • Опциональные учетные данные провайдера
    • WhatsApp QR
    • Токен Telegram-бота
    • Gmail OAuth

1) Установить gcloud CLI (или использовать Console)

Вариант A: gcloud CLI (рекомендуется для автоматизации)

Установите с https://cloud.google.com/sdk/docs/install

Инициализируйте и аутентифицируйтесь:

gcloud init
gcloud auth login

Вариант B: Cloud Console

Все шаги можно выполнить через веб-интерфейс на https://console.cloud.google.com


2) Создать проект GCP

CLI:

gcloud projects create my-openclaw-project --name="OpenClaw Gateway"
gcloud config set project my-openclaw-project

Включите биллинг на https://console.cloud.google.com/billing (требуется для Compute Engine).

Включите Compute Engine API:

gcloud services enable compute.googleapis.com

Console:

  1. Перейдите в IAM & Admin > Create Project
  2. Назовите его и создайте
  3. Включите биллинг для проекта
  4. Перейдите в APIs & Services > Enable APIs > найдите "Compute Engine API" > Enable

3) Создать VM

Типы машин:

ТипХарактеристикиСтоимостьПримечания
e2-small2 vCPU, 2GB RAM~$12/месРекомендуется
e2-micro2 vCPU (shared), 1GB RAMПодходит для бесплатного тарифаМожет привести к OOM под нагрузкой

CLI:

gcloud compute instances create openclaw-gateway \
  --zone=us-central1-a \
  --machine-type=e2-small \
  --boot-disk-size=20GB \
  --image-family=debian-12 \
  --image-project=debian-cloud

Console:

  1. Перейдите в Compute Engine > VM instances > Create instance
  2. Имя: openclaw-gateway
  3. Регион: us-central1, Зона: us-central1-a
  4. Тип машины: e2-small
  5. Загрузочный диск: Debian 12, 20GB
  6. Create

4) SSH в VM

CLI:

gcloud compute ssh openclaw-gateway --zone=us-central1-a

Console:

Нажмите кнопку "SSH" рядом с вашей VM на панели Compute Engine.

Примечание: Распространение SSH-ключа может занять 1-2 минуты после создания VM. Если соединение отклонено, подождите и повторите попытку.


5) Установить Docker (на VM)

sudo apt-get update
sudo apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER

Выйдите и войдите снова, чтобы изменение группы вступило в силу:

exit

Затем снова SSH:

gcloud compute ssh openclaw-gateway --zone=us-central1-a

Проверьте:

docker --version
docker compose version

6) Клонировать репозиторий OpenClaw

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

Это руководство предполагает, что вы создадите пользовательский образ для гарантии постоянства бинарников.


7) Создать постоянные директории хоста

Docker-контейнеры эфемерны. Все долговременное состояние должно находиться на хосте.

mkdir -p ~/.openclaw
mkdir -p ~/.openclaw/workspace

8) Настроить переменные окружения

Создайте .env в корне репозитория.

OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=change-me-now
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789

OPENCLAW_CONFIG_DIR=/home/$USER/.openclaw
OPENCLAW_WORKSPACE_DIR=/home/$USER/.openclaw/workspace

GOG_KEYRING_PASSWORD=change-me-now
XDG_CONFIG_HOME=/home/node/.openclaw

Сгенерируйте надежные секреты:

openssl rand -hex 32

Не коммитьте этот файл.


9) Конфигурация Docker Compose

Создайте или обновите docker-compose.yml.

services:
  openclaw-gateway:
    image: ${OPENCLAW_IMAGE}
    build: .
    restart: unless-stopped
    env_file:
      - .env
    environment:
      - HOME=/home/node
      - NODE_ENV=production
      - TERM=xterm-256color
      - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
      - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
      - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
      - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
      - XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
      - PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    volumes:
      - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
      - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
    ports:
      # Рекомендуется: оставить Gateway только для loopback на VM; доступ через SSH-туннель.
      # Чтобы открыть публично, удалите префикс `127.0.0.1:` и настройте firewall соответственно.
      - "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"

      # Опционально: только если вы запускаете iOS/Android ноды против этой VM и нужен Canvas host.
      # Если вы открываете это публично, прочитайте /gateway/security и настройте firewall соответственно.
      # - "18793:18793"
    command:
      [
        "node",
        "dist/index.js",
        "gateway",
        "--bind",
        "${OPENCLAW_GATEWAY_BIND}",
        "--port",
        "${OPENCLAW_GATEWAY_PORT}"
      ]

10) Встроить необходимые бинарники в образ (критично)

Установка бинарников внутри работающего контейнера — это ловушка. Все установленное во время выполнения будет потеряно при перезапуске.

Все внешние бинарники, необходимые для skills, должны быть установлены во время сборки образа.

Приведенные ниже примеры показывают только три распространенных бинарника:

  • gog для доступа к Gmail
  • goplaces для Google Places
  • wacli для WhatsApp

Это примеры, а не полный список. Вы можете установить столько бинарников, сколько нужно, используя тот же шаблон.

Если позже вы добавите новые skills, зависящие от дополнительных бинарников, вы должны:

  1. Обновить Dockerfile
  2. Пересобрать образ
  3. Перезапустить контейнеры

Пример Dockerfile

FROM node:22-bookworm

RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*

# Пример бинарника 1: Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog

# Пример бинарника 2: Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces

# Пример бинарника 3: WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
  | tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli

# Добавьте больше бинарников ниже, используя тот же шаблон

WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts

RUN corepack enable
RUN pnpm install --frozen-lockfile

COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build

ENV NODE_ENV=production

CMD ["node","dist/index.js"]

11) Собрать и запустить

docker compose build
docker compose up -d openclaw-gateway

Проверьте бинарники:

docker compose exec openclaw-gateway which gog
docker compose exec openclaw-gateway which goplaces
docker compose exec openclaw-gateway which wacli

Ожидаемый вывод:

/usr/local/bin/gog
/usr/local/bin/goplaces
/usr/local/bin/wacli

12) Проверить Gateway

docker compose logs -f openclaw-gateway

Успех:

[gateway] listening on ws://0.0.0.0:18789

13) Доступ с вашего ноутбука

Создайте SSH-туннель для пересылки порта Gateway:

gcloud compute ssh openclaw-gateway --zone=us-central1-a -- -L 18789:127.0.0.1:18789

Откройте в браузере:

http://127.0.0.1:18789/

Вставьте токен gateway.


Что и где сохраняется (источник истины)

OpenClaw работает в Docker, но Docker не является источником истины. Все долговременное состояние должно переживать перезапуски, пересборки и перезагрузки.

КомпонентРасположениеМеханизм постоянстваПримечания
Конфигурация Gateway/home/node/.openclaw/Монтирование тома хостаВключает openclaw.json, токены
Профили аутентификации модели/home/node/.openclaw/Монтирование тома хостаOAuth-токены, API-ключи
Конфигурации Skill/home/node/.openclaw/skills/Монтирование тома хостаСостояние уровня skill
Рабочее пространство агента/home/node/.openclaw/workspace/Монтирование тома хостаКод и артефакты агента
Сессия WhatsApp/home/node/.openclaw/Монтирование тома хостаСохраняет QR-логин
Связка ключей Gmail/home/node/.openclaw/Том хоста + парольТребуется GOG_KEYRING_PASSWORD
Внешние бинарники/usr/local/bin/Docker-образДолжны быть встроены во время сборки
Среда выполнения NodeФайловая система контейнераDocker-образПересобирается при каждой сборке образа
OS-пакетыФайловая система контейнераDocker-образНе устанавливайте во время выполнения
Docker-контейнерЭфемерныйПерезапускаемыйБезопасно уничтожать

Обновления

Для обновления OpenClaw на VM:

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

Устранение неполадок

SSH-соединение отклонено

Распространение SSH-ключа может занять 1-2 минуты после создания VM. Подождите и повторите попытку.

Проблемы с OS Login

Проверьте ваш профиль OS Login:

gcloud compute os-login describe-profile

Убедитесь, что ваш аккаунт имеет необходимые разрешения IAM (Compute OS Login или Compute OS Admin Login).

Нехватка памяти (OOM)

Если используете e2-micro и сталкиваетесь с OOM, обновитесь до e2-small или e2-medium:

# Сначала остановите VM
gcloud compute instances stop openclaw-gateway --zone=us-central1-a

# Измените тип машины
gcloud compute instances set-machine-type openclaw-gateway \
  --zone=us-central1-a \
  --machine-type=e2-small

# Запустите VM
gcloud compute instances start openclaw-gateway --zone=us-central1-a

Сервисные аккаунты (лучшая практика безопасности)

Для личного использования ваш аккаунт пользователя по умолчанию работает нормально.

Для автоматизации или CI/CD-конвейеров создайте выделенный сервисный аккаунт с минимальными разрешениями:

  1. Создайте сервисный аккаунт:

    gcloud iam service-accounts create openclaw-deploy \
      --display-name="OpenClaw Deployment"
    
  2. Предоставьте роль Compute Instance Admin (или более узкую пользовательскую роль):

    gcloud projects add-iam-policy-binding my-openclaw-project \
      --member="serviceAccount:[email protected]" \
      --role="roles/compute.instanceAdmin.v1"
    

Избегайте использования роли Owner для автоматизации. Используйте принцип наименьших привилегий.

См. https://cloud.google.com/iam/docs/understanding-roles для деталей о ролях IAM.


Следующие шаги