Перейти к основному содержимому

Хостинг и развертывание

GCP

Цель​

Запустить постоянный OpenClaw Gateway на виртуальной машине GCP Compute Engine с использованием Docker, с устойчивым состоянием, встроенными бинарными файлами и безопасным поведением при перезапуске. Если вам нужно «OpenClaw 24/7 за ~$5-12/мес», это надежная настройка в Google Cloud. Цены зависят от типа машины и региона; выберите наименьшую ВМ, подходящую для вашей нагрузки, и масштабируйтесь при нехватке памяти.

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

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

Доступ к шлюзу возможен через:

  • SSH port forwarding с вашего ноутбука
  • Прямое открытие портов, если вы самостоятельно управляете фаерволом и токенами

В этом руководстве используется Debian на GCP Compute Engine. Ubuntu также подходит; сопоставьте пакеты соответствующим образом. Общий процесс работы с Docker см. в Docker.


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

  1. Создайте проект GCP + включите Compute Engine API
  2. Создайте виртуальную машину Compute Engine (e2-small, Debian 12, 20GB)
  3. Подключитесь к ВМ по SSH
  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)​

Вариант А: gcloud CLI (рекомендуется для автоматизации) Установите с https://cloud.google.com/sdk/docs/install Инициализируйте и аутентифицируйтесь:

gcloud init
gcloud auth login

Вариант Б: 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) Создайте виртуальную машину​

Типы машин:

ТипХарактеристикиСтоимостьПримечания
e2-medium2 vCPU, 4GB RAM~$25/месНаиболее надежно для локальных сборок Docker
e2-small2 vCPU, 2GB RAM~$12/месМинимальная рекомендация для сборки Docker
e2-micro2 vCPU (shared), 1GB RAMПодходит для бесплатного тарифаЧасто падает с ошибкой OOM при сборке Docker (exit 137)

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. Создать

4) Подключитесь к ВМ по SSH​

CLI:

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

Console: Нажмите кнопку “SSH” рядом с вашей ВМ в панели управления Compute Engine. Примечание: Распространение SSH-ключа может занять 1-2 минуты после создания ВМ. Если соединение отклонено, подождите и повторите попытку.


5) Установите Docker (на ВМ)​

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:
# Рекомендуется: оставить шлюз доступным только на loopback-интерфейсе ВМ; доступ через SSH-туннель.
# Чтобы открыть его публично, удалите префикс `127.0.0.1:` и настройте фаервол соответствующим образом.
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
]

10) Встройте необходимые бинарные файлы в образ (критически важно)​

Установка бинарных файлов внутри запущенного контейнера — это ловушка. Все, что установлено во время выполнения, будет потеряно при перезапуске. Все внешние бинарные файлы, требуемые навыками, должны быть установлены во время сборки образа. В примерах ниже показаны только три распространенных бинарных файла:

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

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

  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

Если сборка завершается с ошибкой Killed / exit code 137 во время pnpm install --frozen-lockfile, на ВМ не хватает памяти. Используйте минимум e2-small или e2-medium для более надежной первой сборки. При привязке к локальной сети (OPENCLAW_GATEWAY_BIND=lan) настройте доверенный источник браузера перед продолжением:

docker compose run --rm openclaw-cli config set gateway.controlUi.allowedOrigins '["http://127.0.0.1:18789"]' --strict-json

Если вы изменили порт шлюза, замените 18789 на ваш настроенный порт. Проверьте бинарные файлы:

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) Проверка шлюза​

docker compose logs -f openclaw-gateway

Успех:

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

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

Создайте SSH-туннель для проброса порта шлюза:

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

Откройте в браузере: http://127.0.0.1:18789/ Получите свежую ссылку на дашборд с токеном:

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

Вставьте токен из этого URL. Если UI управления показывает unauthorized или disconnected (1008): pairing required, подтвердите устройство браузера:

docker compose run --rm openclaw-cli devices list
docker compose run --rm openclaw-cli devices approve <requestId>

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

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

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

Обновления​

Чтобы обновить OpenClaw на ВМ:

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

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

SSH-соединение отклонено Распространение SSH-ключа может занять 1-2 минуты после создания ВМ. Подождите и повторите попытку. Проблемы с OS Login Проверьте ваш профиль OS Login:

gcloud compute os-login describe-profile

Убедитесь, что ваш аккаунт имеет необходимые разрешения IAM (Compute OS Login или Compute OS Admin Login). Нехватка памяти (OOM) Если сборка Docker завершается с ошибкой Killed и exit code 137, ВМ была завершена из-за нехватки памяти. Перейдите на e2-small (минимум) или e2-medium (рекомендуется для надежных локальных сборок):

# Сначала остановите ВМ
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

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

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

Для личного использования ваш аккаунт пользователя по умолчанию подходит. Для автоматизации или CI/CD пайплайнов создайте выделенный сервисный аккаунт с минимальными правами:

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

    Copy

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

    Copy

    gcloud projects add-iam-policy-binding my-openclaw-project \
    --member="serviceAccount:openclaw-deploy@my-openclaw-project.iam.gserviceaccount.com" \
    --role="roles/compute.instanceAdmin.v1"

Избегайте использования роли Owner для автоматизации. Используйте принцип наименьших привилегий. Подробности о ролях IAM см. на https://cloud.google.com/iam/docs/understanding-roles.


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

HetznerВМ macOS