Полная инструкция по установке OpenClaw на GCP VM с Telegram интеграцией.
Disclaimer: Данная инструкция предоставляется "как есть" без каких-либо гарантий. Используйте на свой страх и риск. Автор инструкции не несёт ответственности за возможные потери данных, утечки credentials или другие последствия.
OpenClaw — это messaging gateway, который соединяет AI-агентов с популярными чат-платформами: WhatsApp, Telegram, Discord, iMessage и Mattermost. Позволяет взаимодействовать с AI-агентами через привычные мессенджеры.
Ключевые возможности:
- Мульти-платформенная поддержка (WhatsApp, Telegram, Discord, iMessage)
- Групповые чаты с mention-активацией
- Поддержка медиа (изображения, аудио, документы)
- WebChat и macOS/мобильные приложения
- MIT лицензия — полностью open source
Прочитайте перед установкой!
- Credentials в файлах — API ключи хранятся в файловой системе
- Доступ к системе — AI агент может выполнять команды в рамках своих прав
- Prompt injection — модели уязвимы к манипуляциям через входящие сообщения
- Gateway только на loopback — никогда не открывайте порт 18789 в интернет
- Используйте изолированную VM — не ставьте на основной рабочий компьютер
- Pairing mode по умолчанию — новые пользователи требуют одобрения
- Регулярно запускайте
openclaw security audit - Права доступа 600/700 на конфиги и credentials
- Используйте современные модели (Opus 4.5) для агентов с инструментами
Перед началом убедитесь, что у вас есть:
- GCP аккаунт с активным billing (или free trial credits)
- Tailscale аккаунт (бесплатный на tailscale.com)
- Telegram аккаунт для создания бота
- gcloud CLI установлен локально
- Базовые знания Linux (терминал, SSH, редактирование файлов)
- API ключ AI провайдера (Anthropic, OpenAI, или другой)
- Node.js 22 или выше
- 2+ vCPU, 4GB+ RAM
- Ubuntu 22.04/24.04
Эта инструкция написана для GCP, но OpenClaw можно запустить на любом Linux-сервере.
- GCP Setup
- VM Creation
- Tailscale Setup
- OpenClaw Installation
- Telegram Configuration
- Management Commands
- Troubleshooting
# Создать проект (без организации)
gcloud projects create <PROJECT_ID> --name="<PROJECT_NAME>"
# ИЛИ с организацией (если есть)
gcloud projects create <PROJECT_ID> --name="<PROJECT_NAME>" --organization=<ORGANIZATION_ID>
# Привязать billing
gcloud billing projects link <PROJECT_ID> --billing-account=<BILLING_ACCOUNT_ID>
# Включить Billing Budgets API
gcloud services enable billingbudgets.googleapis.com --project=<PROJECT_ID>
# Создать бюджет с алертами (опционально, но рекомендуется)
gcloud billing budgets create \
--billing-account=<BILLING_ACCOUNT_ID> \
--display-name="<PROJECT_ID>-budget" \
--budget-amount=100USD \
--filter-projects="projects/<PROJECT_ID>" \
--threshold-rule=percent=50 \
--threshold-rule=percent=90 \
--threshold-rule=percent=100gcloud services enable compute.googleapis.com --project=<PROJECT_ID>| Параметр | Значение | Примечание |
|---|---|---|
| Имя | openclaw | Можно любое |
| Тип | e2-standard-2 (2 vCPU, 8GB RAM) | Минимум для комфортной работы |
| Диск | 100GB SSD | Можно меньше (20-50GB) |
| OS | Ubuntu 24.04 LTS | Или 22.04 LTS |
| Регион | us-central1-a | Ближе к AI API серверам |
| Публичный IP | Временный | Удаляется после настройки Tailscale |
gcloud compute instances create openclaw \
--project=<PROJECT_ID> \
--zone=us-central1-a \
--machine-type=e2-standard-2 \
--image-family=ubuntu-2404-lts-amd64 \
--image-project=ubuntu-os-cloud \
--boot-disk-size=100GB \
--boot-disk-type=pd-ssd \
--tags=allow-ssh \
--metadata=enable-oslogin=TRUEgcloud compute firewall-rules create allow-ssh \
--project=<PROJECT_ID> \
--direction=INGRESS \
--priority=1000 \
--network=default \
--action=ALLOW \
--rules=tcp:22 \
--source-ranges=0.0.0.0/0 \
--target-tags=allow-sshTailscale создаёт защищённую сеть между вашими устройствами. Это позволяет:
- Убрать публичный IP с сервера (безопаснее)
- Подключаться к серверу из любой точки мира
- Не открывать порты в firewall
# SSH на VM (с временным публичным IP)
gcloud compute ssh openclaw --zone=us-central1-a --project=<PROJECT_ID>
# Установить Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# Запустить и получить ссылку авторизации
sudo tailscale up
# Откройте ссылку в браузере и авторизуйте устройство
# Включить Tailscale SSH (важно!)
sudo tailscale up --sshУстановите Tailscale на вашем компьютере (tailscale.com/download) и авторизуйтесь в том же аккаунте.
После настройки Tailscale нужен Cloud NAT для исходящего трафика:
# Создать Cloud Router
gcloud compute routers create nat-router \
--project=<PROJECT_ID> \
--network=default \
--region=us-central1
# Создать Cloud NAT
gcloud compute routers nats create nat-config \
--project=<PROJECT_ID> \
--router=nat-router \
--region=us-central1 \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ipsgcloud compute instances delete-access-config openclaw \
--zone=us-central1-a \
--project=<PROJECT_ID> \
--access-config-name="external-nat"# С локальной машины (Tailscale должен быть запущен)
tailscale status # Должен показать openclaw
tailscale ping openclaw # Должен отвечать
ssh root@openclaw # Подключение через Tailscalessh root@openclaw
useradd -m -s /bin/bash openclawcurl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt-get install -y nodejs
node --version # Должно быть v22.x.xРекомендуемый способ (официальный инсталлятор):
su - openclaw
curl -fsSL https://openclaw.bot/install.sh | bashАльтернатива через npm:
npm install -g openclaw@latest# Добавить в ~/.bashrc
echo 'export PATH="$HOME/.openclaw/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# Проверить установку
openclaw --versionopenclaw onboard --install-daemonWizard настроит:
- Аутентификацию — API ключ Anthropic (рекомендуется) или другой провайдер
- Gateway — фоновый сервис
- Каналы — Telegram, WhatsApp, Discord и др.
- Security defaults — базовые настройки безопасности
chmod 700 ~/.openclaw- Откройте @BotFather в Telegram
- Отправьте
/newbot - Введите имя бота (например: "My Assistant")
- Введите username (должен заканчиваться на "bot")
- Скопируйте полученный токен
Опциональные настройки в BotFather:
/setjoingroups— разрешить/запретить добавление в группы/setprivacy— управление видимостью сообщений в группах
Через переменную окружения:
export TELEGRAM_BOT_TOKEN="your_token_here"Или в конфиге ~/.openclaw/openclaw.json:
{
channels: {
telegram: {
enabled: true,
botToken: "your_token_here"
}
}
}При первом сообщении боту:
- Бот выдаст pairing code (действует 1 час)
- На сервере выполните:
openclaw pairing approve telegram <CODE>Альтернатива — allowlist:
{
channels: {
telegram: {
dmPolicy: "allowlist",
allowFrom: [YOUR_TELEGRAM_USER_ID]
}
}
}Узнать свой user ID: отправьте сообщение боту и посмотрите в логах openclaw logs --follow.
{
channels: {
telegram: {
groups: { "*": { requireMention: true } }
}
}
}Отключите Privacy Mode в BotFather (/setprivacy) чтобы бот видел все сообщения в группе.
# Статус Gateway
openclaw gateway status
# Запустить Gateway (если не daemon)
openclaw gateway --port 18789 --verbose
# Принудительно перезапустить (если порт занят)
openclaw gateway --force
# Управление daemon (systemd)
openclaw gateway install # Установить как systemd сервис
openclaw gateway stop # Остановить
openclaw gateway restart # Перезапустить
# Открыть Dashboard в браузере
openclaw dashboard
# Или вручную: http://127.0.0.1:18789/# Статус всех каналов
openclaw channels status
# WhatsApp QR-код для авторизации
openclaw channels login
# Логи (live)
openclaw logs --follow# Базовый аудит
openclaw security audit
# Глубокий аудит (проверяет Gateway)
openclaw security audit --deep
# Автоисправление проблем
openclaw security audit --fix# Список ожидающих подтверждения
openclaw pairing list telegram
# Одобрить пользователя
openclaw pairing approve telegram <CODE>openclaw doctor
openclaw status
openclaw health # Альтернатива statusopenclaw cron list # Список cron jobs
openclaw cron run <id> # Запустить вручную
openclaw memory search "query" # Поиск по памяти# Проверить, не запущен ли уже
ps aux | grep openclaw
# Вариант 1: Принудительно перезапустить (закроет старый процесс)
openclaw gateway --force --verbose
# Вариант 2: Убить вручную и запустить
pkill -f openclaw
openclaw gateway --port 18789 --verbose# Проверить статус
openclaw channels status
# Посмотреть логи
openclaw logs --follow
# Проверить токен
echo $TELEGRAM_BOT_TOKEN# На VM
sudo systemctl restart tailscaled
sudo tailscale up --ssh
# Проверить
tailscale status# Интернет работает?
curl -I https://api.anthropic.com
# Cloud NAT работает?
curl -I https://google.comУбедитесь, что Cloud NAT настроен (см. раздел 3).
ssh root@openclaw # Через Tailscale
su - openclaw # Переключиться на пользователя
export PATH="$HOME/.openclaw/bin:$PATH"Вариант 1: SSH туннель
# На локальной машине
ssh -N -L 18789:127.0.0.1:18789 root@openclaw
# Открыть в браузере
http://localhost:18789/Вариант 2: Tailscale Serve (рекомендуется)
Добавить в ~/.openclaw/openclaw.json:
{
gateway: {
bind: "loopback",
tailscale: { mode: "serve" }
}
}Доступ: https://openclaw.<tailnet-name>.ts.net/
| Путь | Описание |
|---|---|
~/.openclaw/ |
Конфигурация и состояние |
~/.openclaw/openclaw.json |
Основной конфиг (permissions 600) |
~/.openclaw/credentials/ |
OAuth и credentials |
~/.openclaw/agents/<agentId>/ |
Данные агентов |
~/.openclaw/workspace/ |
Workspace агента (SOUL.md, MEMORY.md и др.) |
~/.openclaw/workspace/skills/ |
Per-agent skills |
~/.openclaw/skills/ |
Shared skills (все агенты) |
/tmp/openclaw/ |
Логи |
- Нет публичного IP — сервер недоступен из интернета
- Tailscale — шифрованное соединение между устройствами
- Cloud NAT — только исходящий трафик, входящий заблокирован
- Dedicated user —
openclawс ограниченными правами - Права доступа — 700 на директорию, 600 на конфиги
- Pairing mode — новые пользователи требуют одобрения
- Gateway на loopback — Dashboard недоступен извне
| Путь | Права |
|---|---|
~/.openclaw/ |
700 |
~/.openclaw/openclaw.json |
600 |
~/.openclaw/credentials/* |
600 |
~/.openclaw/agents/*/agent/auth-profiles.json |
600 |
- Используйте современные модели (Claude Opus) для агентов с инструментами
- Требуйте mention в публичных группах (
requireMention: true) - Отключайте
exec/browser/web_fetchдля агентов с недоверенным вводом - Рассмотрите sandbox mode:
agents.defaults.sandbox.mode: "all" - Используйте Tailscale Serve вместо публичного доступа
| Компонент | Стоимость/мес |
|---|---|
| e2-standard-2 | ~$49 |
| 100GB SSD | ~$17 |
| Cloud NAT | ~$1 |
| Итого | ~$67 |
Можно сэкономить:
- e2-small (2 vCPU, 2GB RAM) — ~$12/мес
- 30GB SSD — ~$5/мес
- Минимум: ~$18/мес
Рекомендуется настроить budget alert.
Замените в командах:
| Placeholder | Описание | Где взять |
|---|---|---|
<PROJECT_ID> |
ID проекта GCP | Придумайте уникальный (латиница, цифры, дефисы) |
<PROJECT_NAME> |
Название проекта | Любое понятное вам |
<ORGANIZATION_ID> |
ID организации | gcloud organizations list (опционально) |
<BILLING_ACCOUNT_ID> |
ID billing account | gcloud billing accounts list |
<CODE> |
Pairing code | Выдаёт бот при первом сообщении |