От OpenClaw к Claude Code — 24/7 AI-агент в Telegram на VPS
Установка персонального AI-агента в Telegram, отвечающего круглосуточно, без подтверждений на каждое действие. Прямая замена OpenClaw на официальное решение Anthropic.
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 делает это лучше.
| Критерий | OpenClaw | Claude 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 skills | Allowlisted плагины, surface area меньше в десятки раз |
| Multi-agent | Встроено | Не из коробки (можно сделать вручную) |
| Голос и Canvas | Voice Wake, Talk Mode, Live Canvas | Нет |
| Цена | Бесплатный + цена API/подписки | Подписка Claude Max ($100–200/мес) или API |
Три ключевых причины переключиться
- Безопасность. Главный maintainer OpenClaw публично предупреждал: «Если ты не понимаешь как запустить command line — это слишком опасный проект для безопасного использования». Claude Code Channels изначально замкнут на проверенный плагин, surface area меньше в десятки раз.
- Простота обслуживания. OpenClaw ставит свой Node.js daemon, требует Node 22+, имеет сотни конфиг-ключей. Здесь — один бинарь и один плагин, обновляется через claude /plugin update.
- Официальная гарантия. Плагин telegram входит в claude-plugins-official, разработка и обновления идут от Anthropic. Не будет внезапной смены имени проекта (как Clawdbot → Moltbot → OpenClaw за 2 месяца) или ребрендинга.
04Что понадобится
| # | Что нужно | Как проверить |
|---|---|---|
| 1 | VPS на Ubuntu 24.04 (или Debian 12+), 1+ GB RAM, root-доступ | cat /etc/os-release | grep VERSION — должно быть Ubuntu 22+ или Debian 12+ |
| 2 | SSH-доступ к VPS (терминал или Termius на телефоне) | ssh root@<your-vps-ip> должен пускать |
| 3 | Подписка Claude Max или Pro | Если есть платная подписка на claude.ai — есть |
| 4 | Telegram-аккаунт | У вас уже есть |
| 5 | 30 минут (или 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, без терминала:
- Откройте Telegram, найдите @BotFather
- Отправьте /newbot
- Придумайте имя бота (отображаемое, любое)
- Придумайте username — обязательно заканчивается на bot (например, myassistant_bot)
- Сохраните токен который пришлёт BotFather (формат: 123456789:ABC-DEF...)
Также узнайте свой Telegram ID:
- Найдите в Telegram @userinfobot
- Отправьте любое сообщение
- Бот вернёт ваш числовой ID (например, 123456789) — сохраните
Шаг 6Установите Telegram-плагин
claudeВнутри Claude Code:
/plugin marketplace add claude-plugins-official/plugin install telegram@claude-plugins-officialДождитесь подтверждения установки. Выйдите из Claude:
/exitls ~/.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:
- Найдите своего бота по username, который вы дали ему в шаге 5 (@<your-bot-username>)
- Отправьте боту любое сообщение — например, hi
- Бот ответит 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": []
}
}
EOFcat ~/.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.servicesleep 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.log07Если упало
| Симптом | Причина | Решение |
|---|---|---|
| claude: command not found | ~/.local/bin не в PATH | export 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 enableC. fail2ban — защита от брутфорса SSH
# уже стоит?
systemctl is-active fail2ban
# если active — пропустите разделЕсли нет:
apt update && apt install -y fail2ban
systemctl enable --now fail2banD. Sync рабочей папки бота через GitHub
Если хотите редактировать заметки бота с компьютера через Obsidian/VS Code и видеть синхронизацию с сервером:
# уже есть?
test -d ~/agent-workspace/.git && echo "уже есть"Если нет:
- Создайте приватный GitHub-репозиторий (например, <your-username>/<your-vault>)
- Сгенерируйте deploy-key на VPS и добавьте его в GitHub: Settings → Deploy keys → Add (отметьте «Allow write access»)
- Клонируйте на VPS через GIT_SSH_COMMAND
- Настройте 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. Для бизнес-критичной автоматизации — диверсифицируйте поставщиков.