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.
Быстрый путь (для опытных операторов)
- Создать проект GCP + включить Compute Engine API
- Создать виртуальную машину Compute Engine (e2-small, Debian 12, 20GB)
- SSH в VM
- Установить Docker
- Клонировать репозиторий OpenClaw
- Создать постоянные директории хоста
- Настроить .env и docker-compose.yml
- Встроить необходимые бинарники, собрать и запустить
Что вам понадобится
- Аккаунт 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:
- Перейдите в IAM & Admin > Create Project
- Назовите его и создайте
- Включите биллинг для проекта
- Перейдите в APIs & Services > Enable APIs > найдите "Compute Engine API" > Enable
3) Создать VM
Типы машин:
| Тип | Характеристики | Стоимость | Примечания |
|---|---|---|---|
| e2-small | 2 vCPU, 2GB RAM | ~$12/мес | Рекомендуется |
| e2-micro | 2 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:
- Перейдите в Compute Engine > VM instances > Create instance
- Имя: openclaw-gateway
- Регион: us-central1, Зона: us-central1-a
- Тип машины: e2-small
- Загрузочный диск: Debian 12, 20GB
- 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, зависящие от дополнительных бинарников, вы должны:
- Обновить Dockerfile
- Пересобрать образ
- Перезапустить контейнеры
Пример 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-конвейеров создайте выделенный сервисный аккаунт с минимальными разрешениями:
-
Создайте сервисный аккаунт:
gcloud iam service-accounts create openclaw-deploy \ --display-name="OpenClaw Deployment" -
Предоставьте роль 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.
Следующие шаги
- Настроить каналы обмена сообщениями: Каналы
- Сопряжение локальных устройств как нод: Ноды
- Настроить Gateway: Конфигурация Gateway