Cài OpenClaw kết nối Telegram làm trợ lý cá nhân 24/7 trên VPS

Chia sẻ bài viết

Mục lục
Minh hoạ OpenClaw kết nối Telegram làm trợ lý cá nhân 24/7 trên VPS

Bạn muốn có một con bot Telegram cá nhân biết nhớ ngữ cảnh, gọi tool, đọc tin nhắn voice và trả lời như Claude trong app chat? OpenClaw làm được điều đó. Bài này là tutorial step-by-step để bạn dựng được một trợ lý cá nhân chạy 24/7 trên VPS Ubuntu, kết nối qua Telegram, dùng đúng tài khoản Telegram cá nhân của bạn mọi lúc mọi nơi.

Vì sao Telegram là channel "ngon" nhất để bắt đầu với OpenClaw

OpenClaw hỗ trợ hơn 20 channel (WhatsApp, Discord, Slack, Signal, Zalo, iMessage, Matrix...) nhưng Telegram là chỗ dễ nhất để bắt đầu vì 3 lý do:

  • Bot API chính thức, miễn phí, không cần xác minh business như WhatsApp Cloud.
  • Long-polling mode chạy ngay không cần webhook hay public HTTPS - VPS sau NAT vẫn ổn.
  • Telegram client có sẵn voice message, file upload, inline keyboard, cực hợp với OpenClaw Live Canvas.

Nếu bạn chưa đọc bài OpenClaw là gì và cách self-host trên VPS, đọc qua trước để hiểu kiến trúc gateway daemon. Bài này giả định bạn đã chạy được openclaw onboard ít nhất một lần.

Yêu cầu phần cứng thực tế

OpenClaw không "nặng", phần nặng nằm ở LLM provider (chạy ngoài VPS qua API). Tuy nhiên gateway daemon, voice transcoding (ffmpeg), skill runtime Node, và RAG embeddings ăn RAM khá thực.

Use case VPS tối thiểu Ghi chú
Chỉ chat text, 1 channel Telegram VPS 50 (4GB RAM) Chạy được, RAM idle ~1.2GB
+ Voice mode, skills nặng (browser, code-exec) VPS 80 (6GB RAM) Khuyến nghị production
+ Multi-channel (Telegram + Discord + Zalo) VPS 80 trở lên Cần headroom cho concurrent session
⚠️ Lưu ý: Đừng tin các bài viết bảo "chạy OpenClaw trên 1GB RAM". Node 24 + Chromium headless cho browser skill đã ngốn 800MB. Khi LLM trả về tool-call dồn dập, gateway peak 2GB là chuyện thường.

Bước 1: Cài OpenClaw trên VPS Ubuntu 22.04

SSH vào VPS, đảm bảo có Node 24 (khuyến nghị) hoặc tối thiểu Node 22.16. Dùng fnm hoặc nvm để quản lý version, không cài Node của apt vì cũ.

# Cài fnm
curl -fsSL https://fnm.vercel.app/install | bash
source ~/.bashrc
fnm install 24
fnm default 24
node -v   # phải báo v24.x.x

# One-line install OpenClaw
npx openclaw onboard

Wizard onboard sẽ hỏi bạn:

  1. Chọn LLM provider (Anthropic / OpenAI / Google / OpenRouter / local Ollama)
  2. Paste API key
  3. Chọn channel để kết nối (chọn Telegram)
  4. Có cài gateway daemon (systemd user service) không - chọn YES

Sau wizard, gateway tự chạy qua systemctl --user status openclaw-gateway. Config nằm tại ~/.openclaw/openclaw.json.

Bước 2: Tạo Telegram bot qua @BotFather

Trên app Telegram (mobile hoặc desktop):

  1. Search @BotFather, mở chat.
  2. Gửi /newbot.
  3. Nhập tên hiển thị, ví dụ Trợ lý của Nam.
  4. Nhập username (phải end bằng bot), ví dụ nam_assistant_bot.
  5. BotFather trả về một token dạng 7891234567:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Copy ngay, đừng để lộ.

Tiếp theo, vẫn trong chat BotFather, tắt privacy mode nếu bạn định cho bot đọc tin trong group:

/setprivacy
# Chọn bot vừa tạo
# Chọn Disable
💡 Mẹo: Nếu bot chỉ dùng DM riêng với bạn, để Privacy ENABLED cho an toàn. Chỉ tắt khi bạn cần bot phản hồi tin nhắn trong group.

Bước 3: Cấu hình Telegram channel trong OpenClaw

Mở ~/.openclaw/openclaw.json bằng nano hoặc vim. Thêm block channels.telegram:

{
  "version": 1,
  "model": {
    "default": "anthropic/claude-sonnet-4-5"
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "7891234567:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "dmPolicy": "pairing",
      "mode": "longPolling"
    }
  }
}

3 field quan trọng:

  • botToken: token vừa nhận từ BotFather. Tốt hơn nên đẩy ra env var OPENCLAW_TELEGRAM_TOKEN để không commit nhầm.
  • dmPolicy: pairing (mặc định an toàn nhất - user phải gõ mã ghép đôi), allowlist (chỉ user trong danh sách), hoặc open (ai cũng chat được - nguy hiểm nếu username bot bị public).
  • mode: longPolling không cần public HTTPS, hợp VPS sau NAT. Khi production cần concurrency cao mới chuyển webhook.

Reload gateway:

systemctl --user restart openclaw-gateway
journalctl --user -u openclaw-gateway -f

Bạn sẽ thấy log dạng:

[gateway] telegram channel started (longPolling)
[gateway] bot @nam_assistant_bot ready

Bước 4: Pair với bot bằng dmPolicy

Trên Telegram mobile, search username bot vừa tạo, mở chat, gõ /start. Bot trả về một mã pairing dạng 6 ký tự, ví dụ ABC123.

Quay lại VPS, approve mã đó từ CLI:

openclaw pairing approve telegram ABC123

Từ giờ tài khoản Telegram của bạn được whitelist. Test ngay bằng câu prompt:

Bạn: chào, em là ai?
Bot: Em là trợ lý cá nhân của anh, chạy trên OpenClaw qua model Claude Sonnet 4.5...

Bước 5: Bật voice mode trên Telegram

OpenClaw hỗ trợ voice message: bạn gửi voice trên Telegram, gateway sẽ transcribe (Whisper hoặc Gemini Audio tùy provider), feed vào LLM, và có thể reply lại bằng TTS.

Cài ffmpeg trên VPS:

sudo apt update && sudo apt install -y ffmpeg
ffmpeg -version | head -1

Thêm cấu hình voice vào openclaw.json:

{
  "voice": {
    "stt": {
      "provider": "openai",
      "model": "whisper-1"
    },
    "tts": {
      "provider": "openai",
      "model": "tts-1",
      "voice": "nova"
    }
  }
}

Restart gateway lần nữa, giờ bạn giữ nút mic trên Telegram, nói "tóm tắt lịch hôm nay đi", bot transcribe + xử lý + trả lại voice. Đối với người dùng VN, Whisper nhận tiếng Việt khá tốt, hoặc bạn có thể swap sang Gemini.

Bước 6: Skills cơ bản nên bật ngay

OpenClaw có hệ thống skills (mỗi skill là một folder SKILL.md + script). Vài skill nên bật cho trợ lý Telegram:

Skill Use case
web-search Bot tự Google khi câu hỏi cần info mới
web-fetch Tóm tắt URL bạn paste vào chat
calendar Đọc/ghi Google Calendar
reminder "Nhắc tôi 8h sáng mai gọi cho khách"
code-exec Chạy snippet Python/JS trực tiếp trong chat

Install qua CLI:

openclaw skills install web-search web-fetch reminder
openclaw skills list

Skill nào cần auth (calendar, gmail) sẽ chạy OAuth flow qua link in ra terminal.

Gotchas thực tế khi chạy 24/7

Vài thứ tôi gặp khi để bot chạy production cả tháng:

  • Token leak: nhớ chmod 600 ~/.openclaw/openclaw.json. Có lần tôi commit nhầm config lên git, BotFather reset token sau 5 phút vì Telegram tự scan public repo.
  • Long-polling timeout: nếu VPS có firewall đóng outbound 443 sau idle, bot sẽ "im lặng" sau vài giờ. Thêm net.ipv4.tcp_keepalive_time = 60 vào sysctl.
  • OOM kill: với VPS 4GB, lúc browser skill mở Chromium + LLM trả tool-call dồn, kernel có thể OOM-kill gateway. Bật swap 2GB và set vm.swappiness=10.
  • Voice message dài: Telegram cho voice tối đa 60 phút nhưng Whisper API capped 25MB. OpenClaw split tự động, nhưng latency tăng - prompt user gửi voice ngắn hơn 5 phút.
  • Multi-device sync: pairing chỉ approve user ID, không phải device. User cùng tài khoản Telegram mở thêm trên desktop vẫn dùng bot bình thường.

Hardening cho bot chạy public

Nếu bot của bạn dạng public (ai cũng pair được), thêm vài lớp bảo vệ trước khi mở:

  • Allowlist user ID: chuyển dmPolicy sang allowlist và liệt kê allowedUserIds. Pair tự do là cửa cho user lạ ăn token của bạn.
  • Per-user rate limit: channels.telegram.rateLimit.perUser.msgPerMin = 10, vượt thì bot trả emoji ⏳ thay vì gọi LLM.
  • Token budget hằng ngày: rateLimit.perUser.tokensPerDay = 30000. Một user spam thử nghiệm tối đa $0.5/ngày là OK, vượt là dừng.
  • Disable file upload chưa kiểm: nếu skill file-qa bật, user lạ có thể upload PDF malicious. Limit MIME và size <5MB.
  • Audit log: bật logging.audit = true, mọi message + tool-call ghi vào ~/.openclaw/audit.log. Khi có user trolling, bạn có evidence ban chính xác.

Với bot private (chỉ pair số mình + 1-2 bạn thân), pairing policy mặc định đã đủ - không cần phức tạp.

Monitor & alert

Bot chạy 24/7 nhưng bạn không nên ngồi nhìn log. Setup alert qua chính Telegram (meta nhưng tiện):

# Skill self-monitor (tạo trong ~/.openclaw/skills/self-monitor/SKILL.md)
# Mỗi 5 phút check:
# - Gateway còn alive (ping endpoint /health)
# - LLM provider response time <5s
# - Token spend hôm nay < budget
# Nếu fail, gửi alert vào chat owner qua chính bot

Hoặc đơn giản hơn, chạy monit hoặc systemd timer:

cat > ~/.config/systemd/user/openclaw-healthcheck.timer << 'EOF'
[Unit]
Description=OpenClaw gateway healthcheck

[Timer]
OnBootSec=2min
OnUnitActiveSec=5min

[Install]
WantedBy=timers.target
EOF
systemctl --user enable --now openclaw-healthcheck.timer

Backup config trước khi vọc

Trước mỗi lần thay config quan trọng, snapshot lại:

cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak.$(date +%Y%m%d-%H%M)
tar czf ~/openclaw-backup-$(date +%Y%m%d).tar.gz ~/.openclaw

Khi nâng cấp OpenClaw version mới và schema thay đổi, có cái để rollback. Migration thường ổn nhưng tháng trước tôi gặp case memory.db schema bump v2 -> v3 khiến bot quên 2 tuần memory - may có backup nightly nên restore lại được trong 5 phút. Nguyên tắc: backup trước mỗi npx openclaw upgrade, không loop trở thành habit thì sớm muộn cũng đau.

Một thói quen khác đáng cài: pin version OpenClaw trong package. Lock "openclaw": "1.x.y" trong ~/.openclaw/package.json, không auto-update minor. Đọc release note 30 giây trước khi bump, tránh breaking schema im lặng.

Tóm lại

Quy trình cài Telegram bot OpenClaw đầu cuối: npx openclaw onboard -> tạo bot qua BotFather -> dán token vào config -> pairing approve -> bật voice + skills. Mất khoảng 30 phút nếu lần đầu, 5 phút nếu đã quen.

VPS sàn an toàn là gói 4GB RAM (VPS 50 của TND Cloud). Production thật có voice + multi-skill nên dùng gói 6GB RAM trở lên. Self-host kiểu này giữ toàn bộ ngữ cảnh chat của bạn ở VN, không gửi qua middleman, latency tới Telegram backbone Singapore chỉ 30-50ms từ datacenter VN.

Nếu bạn đang build infra cho work-from-anywhere kiểu vibe-coder, đọc thêm bài tổng VPS cho vibe-coder để có cái nhìn rộng hơn về stack toàn cảnh.

Bài viết liên quan

Cần VPS chạy OpenClaw 24/7 latency thấp cho user VN?

TND Cloud VPS Ceph SSD Enterprise NVMe, RAM ECC, khởi tạo 60 giây. Gói 4GB RAM 639k/tháng đủ cho 1-2 channel; gói 6GB RAM 999k/tháng cho production với voice và multi-channel.

Xem bảng giá VPS