
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 |
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:
- Chọn LLM provider (Anthropic / OpenAI / Google / OpenRouter / local Ollama)
- Paste API key
- Chọn channel để kết nối (chọn Telegram)
- 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):
- Search
@BotFather, mở chat. - Gửi
/newbot. - Nhập tên hiển thị, ví dụ
Trợ lý của Nam. - Nhập username (phải end bằng
bot), ví dụnam_assistant_bot. - 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
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ặcopen(ai cũng chat được - nguy hiểm nếu username bot bị public). - mode:
longPollingkhông cần public HTTPS, hợp VPS sau NAT. Khi production cần concurrency cao mới chuyểnwebhook.
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 = 60và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
dmPolicysangallowlistvà 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-qabậ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.


