Гайд · 3 мая 2026 г. · ~30 мин

От OpenClaw к Claude Code — 24/7 AI-агент в Telegram на VPS

Установка персонального AI-агента в Telegram, отвечающего круглосуточно, без подтверждений на каждое действие. Прямая замена OpenClaw на официальное решение Anthropic.

· Аудитория: уже пробовали OpenClaw· Уровень: копипаста в SSH

01Для кого этот гайд

  • У вас был OpenClaw (или Clawdbot/Moltbot) — нравилось управлять AI из Telegram, но раздражали сложность, постоянные обновления и инциденты безопасности.
  • Вы не программист, но копипастить команды в SSH умеете.
  • Хотите простой, надёжный и официальный AI-агент в Telegram, доступный 24/7 на вашем VPS.

Гайд пройден на чистой Ubuntu 24.04, занимает ~30 минут руками или ~5 минут если делегировать Claude Code.

02Что получите

  • Telegram-бот 24/7 — отвечает даже когда ноут закрыт, сервер ребутается, дома вырубили интернет.
  • Claude Opus 4.7 / Sonnet — одна из самых сильных моделей в мире со всеми возможностями Claude Code.
  • Без подтверждений — бот выполняет команды сразу, без ручного «Allow Yes/No» на каждое действие.
  • На вашем VPS — никаких сторонних серверов, полный контроль данных.
  • Файлы и команды — читает и правит файлы, выполняет shell, ходит в MCP-серверы, использует skills.
  • Официально и проверенно — через плагин claude-plugins-official от Anthropic, нет рисков от сторонних skills.

03Чем это лучше OpenClaw

OpenClaw — отличный проект, и он остаётся открытым выбором с самой широкой поддержкой каналов (WhatsApp, Slack, Discord, Signal и ещё 20+). Но если вам нужен именно Telegram-бот с минимумом surface area и официальной поддержкой Anthropic — Claude Code Channels делает это лучше.

КритерийOpenClawClaude Code Channels
Лицензия и поддержкаOpen-source MIT, community-drivenОфициальный плагин Anthropic
Размер кодовой базы~300 000 строк кодаОдин бинарь Claude + один плагин
Установкаopenclaw onboard wizard, ~10–30 минут10 шагов из этого гайда, ~30 минут
Каналы23+ платформы (WhatsApp, Slack, Discord, iMessage, Signal и т.д.)Telegram, Discord (iMessage только macOS)
МоделиClaude, GPT, Gemini, Ollama (любая)Только Claude (через Max/Pro или API)
Подтверждения через TelegramНет, всё через CLIДа — через settings.json (шаг 10)
24/7 на VPSДа, через systemd user serviceДа, через systemd (шаг 11)
Безопасность из коробкиSandbox опционально, нужно настраивать3 встроенных слоя: allowlist + opt-in --channels + only Anthropic-approved плагины
Аудит и инцидентыCisco AI security нашёл уязвимости в third-party skillsAllowlisted плагины, surface area меньше в десятки раз
Multi-agentВстроеноНе из коробки (можно сделать вручную)
Голос и CanvasVoice Wake, Talk Mode, Live CanvasНет
ЦенаБесплатный + цена API/подпискиПодписка Claude Max ($100–200/мес) или API

Три ключевых причины переключиться

  1. Безопасность. Главный maintainer OpenClaw публично предупреждал: «Если ты не понимаешь как запустить command line — это слишком опасный проект для безопасного использования». Claude Code Channels изначально замкнут на проверенный плагин, surface area меньше в десятки раз.
  2. Простота обслуживания. OpenClaw ставит свой Node.js daemon, требует Node 22+, имеет сотни конфиг-ключей. Здесь — один бинарь и один плагин, обновляется через claude /plugin update.
  3. Официальная гарантия. Плагин telegram входит в claude-plugins-official, разработка и обновления идут от Anthropic. Не будет внезапной смены имени проекта (как Clawdbot → Moltbot → OpenClaw за 2 месяца) или ребрендинга.

04Что понадобится

#Что нужноКак проверить
1VPS на Ubuntu 24.04 (или Debian 12+), 1+ GB RAM, root-доступcat /etc/os-release | grep VERSION — должно быть Ubuntu 22+ или Debian 12+
2SSH-доступ к VPS (терминал или Termius на телефоне)ssh root@<your-vps-ip> должен пускать
3Подписка Claude Max или ProЕсли есть платная подписка на claude.ai — есть
4Telegram-аккаунтУ вас уже есть
530 минут (или 5 если делегируете Claude Code)

05Установка по шагам

На каждом шаге есть verify-команда — после выполнения проверьте что вывод соответствует ожидаемому. Если нет — переходите в раздел «Если упало».

Шаг 1Подключитесь к VPS

ssh root@<your-vps-ip>
whoami

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

Шаг 2Установите Claude Code

Используем нативный установщик от Anthropic (не npm — он создаёт проблемы под root):

curl -fsSL https://claude.ai/install.sh | bash

После установки добавьте ~/.local/bin в PATH:

export PATH="$HOME/.local/bin:$PATH"
claude --version

ожидаемый вывод: 2.1.80 или новее

Шаг 3Авторизуйтесь в Claude Max

claude /login

В терминале появится URL — откройте его в браузере (с того же IP, с которого регистрировали Claude-аккаунт), авторизуйтесь, скопируйте код, вставьте в терминал.

claude /status 2>&1 | head -5

должна быть строка про вашу подписку (Max или Pro)

Шаг 4Установите Bun

Telegram-плагин требует Bun (не Node.js — иначе плагин запускается без ошибок, но не работает):

curl -fsSL https://bun.sh/install | bash
source ~/.bashrc
~/.bun/bin/bun --version

ожидаемый вывод: 1.x.x

Шаг 5Создайте Telegram-бота через @BotFather

Это делается в самом Telegram, без терминала:

  1. Откройте Telegram, найдите @BotFather
  2. Отправьте /newbot
  3. Придумайте имя бота (отображаемое, любое)
  4. Придумайте username — обязательно заканчивается на bot (например, myassistant_bot)
  5. Сохраните токен который пришлёт BotFather (формат: 123456789:ABC-DEF...)

Также узнайте свой Telegram ID:

  1. Найдите в Telegram @userinfobot
  2. Отправьте любое сообщение
  3. Бот вернёт ваш числовой ID (например, 123456789) — сохраните

Шаг 6Установите Telegram-плагин

claude

Внутри Claude Code:

/plugin marketplace add claude-plugins-official
/plugin install telegram@claude-plugins-official

Дождитесь подтверждения установки. Выйдите из Claude:

/exit
ls ~/.claude/plugins/claude-plugins-official/telegram

должна быть папка с файлами плагина

Шаг 7Запишите токен бота в .env плагина

mkdir -p ~/.claude/channels/telegram
cat > ~/.claude/channels/telegram/.env << 'EOF'
TELEGRAM_BOT_TOKEN=<your-bot-token>
EOF
chmod 600 ~/.claude/channels/telegram/.env

Замените <your-bot-token> на токен, который дал BotFather (шаг 5).

test -f ~/.claude/channels/telegram/.env && echo "OK"

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

Шаг 8Тестовый запуск + спаривание

Запустите Claude с Telegram-каналом:

claude --channels plugin:telegram@claude-plugins-official

Терминал войдёт в режим Claude Code и будет ждать сообщений из Telegram.

В Telegram:

  1. Найдите своего бота по username, который вы дали ему в шаге 5 (@<your-bot-username>)
  2. Отправьте боту любое сообщение — например, hi
  3. Бот ответит 6-значным кодом сопряжения (например, 80194b)

Вернитесь в терминал с Claude и введите:

/telegram:access pair 80194b

подставьте свой код

Проверка: отправьте боту «привет, представься» — должен ответить как Claude.

Шаг 9Закройте бота только себе

Если предыдущий запуск ещё работает — нажмите Ctrl+C и запустите заново:

claude --channels plugin:telegram@claude-plugins-official

Внутри Claude:

/telegram:access policy allowlist

Это критично — иначе любой кто узнает username бота сможет писать ему. Allowlist = только ваш Telegram ID.

Проверьте:

/telegram:access list

Должен показать ваш Telegram ID в allowlist. Выйдите из Claude (/exit).

Шаг 10Настройте разрешения без подтверждений

Это главное отличие от обычного гайда. По умолчанию Claude спрашивает разрешение на каждое действие — в терминале это нормально, но через Telegram эти запросы не пропускаются и бот молча зависает.

Создайте ~/.claude/settings.json:

cat > ~/.claude/settings.json << 'EOF'
{
  "defaultMode": "bypassPermissions",
  "effortLevel": "high",
  "enabledPlugins": {
    "telegram@claude-plugins-official": true
  },
  "permissions": {
    "allow": [
      "Bash",
      "Read",
      "Write",
      "Edit",
      "MultiEdit",
      "mcp__plugin_telegram_telegram__reply",
      "mcp__plugin_telegram_telegram__react",
      "mcp__plugin_telegram_telegram__edit_message"
    ],
    "deny": []
  }
}
EOF
cat ~/.claude/settings.json | python3 -m json.tool > /dev/null && echo "OK"

ожидаемый вывод: OK (значит JSON валидный)

Шаг 11Включите автозапуск через systemd

Создайте сервис:

cat > /etc/systemd/system/claude-telegram.service << 'EOF'
[Unit]
Description=Claude Code Telegram Channel
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=root
WorkingDirectory=/root
EnvironmentFile=-/etc/environment
Environment="PATH=/root/.local/bin:/root/.bun/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="HOME=/root"
Environment="TERM=xterm-256color"
Environment="BUN_INSTALL=/root/.bun"
ExecStart=/usr/bin/script -qfc "/root/.local/bin/claude --channels plugin:telegram@claude-plugins-official" /var/log/claude-telegram.log
StandardInput=null
StandardOutput=null
StandardError=null
Restart=always
RestartSec=10
KillMode=mixed

[Install]
WantedBy=multi-user.target
EOF

Если в /etc/environment есть переменная PATH — её надо убрать:

# проверка
grep -E '^PATH=' /etc/environment

# если нашло — закомментируйте строку
sed -i.bak 's/^PATH=/#PATH=/' /etc/environment

Включите автозапуск:

systemctl daemon-reload
systemctl enable claude-telegram.service
systemctl start claude-telegram.service
sleep 5 && systemctl status claude-telegram.service --no-pager | head -10

ожидаемый вывод: Active: active (running)

Шаг 12Тест перезагрузки (24/7)

Главная проверка — переживёт ли бот ребут.

reboot

Через ~30 секунд переподключитесь к VPS:

ssh root@<your-vps-ip>
systemctl status claude-telegram.service --no-pager | head -5

ожидаемый вывод: Active: active (running) — бот сам поднялся

Отправьте боту в Telegram сообщение «Жив? Покажи аптайм». Бот должен ответить.

Если ответил — поздравляю, у вас 24/7 AI-агент в Telegram.

06Health check

Команды для регулярной проверки что всё живо:

# 1. Сервис запущен?
systemctl status claude-telegram.service --no-pager | head -5

# 2. Процесс claude работает?
ps -ef | grep claude | grep -v grep

# 3. Свежие логи (последние 30 строк)
journalctl -u claude-telegram.service -n 30 --no-pager

Бонус — посмотреть «глазами бота» что он видит в Telegram:

tail -50 /var/log/claude-telegram.log

07Если упало

СимптомПричинаРешение
claude: command not found~/.local/bin не в PATHexport PATH="$HOME/.local/bin:$PATH" и добавьте в ~/.bashrc
Плагин установился, но при запуске «cannot find bun»Bun не в PATH или вообще не установленШаг 4 заново. Проверьте ~/.bun/bin/bun --version
Бот не отвечает после pair, в логе тишинаНе закрыли доступ allowlist-ом — Telegram отбрасывает сообщенияШаг 9
Бот зависает на любом запросе требующем действияНе настроен settings.json с bypassPermissionsШаг 10
systemctl status показывает Active: failedЧаще всего: PATH перетирается из /etc/environment или нет TTYШаг 11 — проверьте /etc/environment и что script -qfc есть в ExecStart
После reboot бот не поднимаетсяsystemctl enable не выполненsystemctl enable claude-telegram.service
Логи говорят Permission Request: ...settings.json не в ~/.claude/ или JSON невалидныйcat ~/.claude/settings.json | python3 -m json.tool

Если ни одно не подходит — выполните journalctl -u claude-telegram.service -n 100 --no-pager и отправьте вывод своему Claude Code на десктопе, скажите: «Подними мой VPS-агент, вот логи». Он диагностирует.

08Опциональные улучшения

Эти шаги не обязательны, но повысят безопасность и удобство. Каждый раздел начинается с проверки «у тебя уже есть?» — если есть, пропустите.

A. Не-root пользователь для Claude

# уже есть отдельный юзер для Claude?
id claude-agent 2>/dev/null && echo "уже есть, пропустите раздел"

Если нет — создайте:

useradd -m -s /bin/bash claude-agent
usermod -aG sudo claude-agent
mkdir -p /home/claude-agent/.ssh
cp /root/.ssh/authorized_keys /home/claude-agent/.ssh/
chown -R claude-agent:claude-agent /home/claude-agent/.ssh
chmod 700 /home/claude-agent/.ssh
chmod 600 /home/claude-agent/.ssh/authorized_keys

После этого пройдите гайд заново под этим юзером (без --dangerously-skip-permissions он работает без проблем — этот флаг запрещён только для root).

B. ufw firewall

# уже включён?
ufw status | head -1
# если Status: active — пропустите раздел

Если Status: inactive — включите минимум для SSH:

ufw allow 22/tcp
ufw --force enable

C. fail2ban — защита от брутфорса SSH

# уже стоит?
systemctl is-active fail2ban
# если active — пропустите раздел

Если нет:

apt update && apt install -y fail2ban
systemctl enable --now fail2ban

D. Sync рабочей папки бота через GitHub

Если хотите редактировать заметки бота с компьютера через Obsidian/VS Code и видеть синхронизацию с сервером:

# уже есть?
test -d ~/agent-workspace/.git && echo "уже есть"

Если нет:

  1. Создайте приватный GitHub-репозиторий (например, <your-username>/<your-vault>)
  2. Сгенерируйте deploy-key на VPS и добавьте его в GitHub: Settings → Deploy keys → Add (отметьте «Allow write access»)
  3. Клонируйте на VPS через GIT_SSH_COMMAND
  4. Настройте cron для авто-sync каждые 30 минут
# 1. Сгенерировать deploy-key
ssh-keygen -t ed25519 -f ~/.ssh/github-deploy -N ""
cat ~/.ssh/github-deploy.pub
# Скопировать вывод в GitHub Settings → Deploy keys

# 2. Клонировать
GIT_SSH_COMMAND='ssh -i ~/.ssh/github-deploy' \
  git clone git@github.com:<your-username>/<your-vault>.git ~/agent-workspace

# 3. Скрипт sync
cat > ~/agent-workspace/sync.sh << 'EOF'
#!/bin/bash
cd ~/agent-workspace
GIT_SSH_COMMAND='ssh -i ~/.ssh/github-deploy' git pull --rebase --autostash
git add -A
git -c user.email='agent@<your-domain>' -c user.name='claude-agent' \
  commit -m "auto-commit: $(date -u +%Y-%m-%dT%H:%M:%SZ)" 2>/dev/null
GIT_SSH_COMMAND='ssh -i ~/.ssh/github-deploy' git push
EOF
chmod +x ~/agent-workspace/sync.sh

# 4. Cron каждые 30 минут
(crontab -l 2>/dev/null; echo "*/30 * * * * /root/agent-workspace/sync.sh >> /var/log/vault-sync.log 2>&1") | crontab -

Теперь правки на компьютере (через Obsidian/VS Code + git push) приедут к боту через 30 минут. Правки бота приедут к вам.

09Что дальше

Используйте бота как универсальный AI-интерфейс. Несколько идей:

  • CEO-помощник: «Что у меня в календаре на завтра?», «Напомни ключевые задачи за неделю»
  • DevOps без терминала: «Покажи нагрузку сервера», «Перезапусти сервис», «Что упало в логах?»
  • Письма и тексты: «Напиши черновик ответа партнёру», «Переведи это на английский в деловом тоне»
  • Аналитика по файлам: положите CSV/PDF в рабочую папку бота, попросите выжать инсайты
  • Скиллы: установите superpowers или другие — Claude Code Channels работает с любыми Claude Code skills

Документация

  • Claude Code: docs.claude.com/en/docs/claude-code/overview
  • Telegram плагин: github.com/anthropics/claude-plugins-official
  • MCP-серверы: docs.claude.com/en/docs/agents-and-tools/mcp

FAQ

Сколько стоит вся история?
VPS $5–10/мес у любого провайдера + подписка Claude Max ($100–200/мес) или платный API Anthropic с pay-as-you-go. На API тариф один вечер интенсивного использования = $1–3.
Можно ли запустить на macOS вместо VPS?
Можно — но потеряете 24/7. Когда ноут спит или закрыт, бот не отвечает. Если нужен персональный AI-чат и ноут всегда открыт — macOS вариант проще. Для CEO-помощника круглосуточного — берите VPS.
Чем это отличается от обычного Telegram-бота с GPT?
Обычный бот = wrapper над API. Здесь — Claude Code с доступом к файловой системе, shell, MCP-серверам и skills. То есть бот может править файлы, выполнять команды, читать ваши заметки, выполнять цепочки действий. Намного больше чем «отвечать текстом».
Безопасно ли давать боту root?
С allowlist (только ваш Telegram ID) и regular чтением логов — да, для личного использования это нормально. Для production-инфраструктуры с прод-данными — настраивайте отдельного non-root юзера (раздел 8A) и ограничивайте права.
Что если Anthropic забанит мой аккаунт?
Бот мгновенно перестанет отвечать. Поэтому делайте бэкап настроек (особенно ~/.claude/) и держите план B — например, fallback на DeepSeek через OpenClaw. Для бизнес-критичной автоматизации — диверсифицируйте поставщиков.