Việc chạy OpenClaw (trước đây là Clawdbot / Moltbot) trên Raspberry Pi tại nhà giúp bạn tiết kiệm chi phí thuê VPS (khoảng 5$/tháng) trong khi chi phí điện năng tiêu thụ chỉ rơi vào khoảng 20.000 VNĐ/tháng.
Yêu cầu hệ thống
Hardware
- Thiết bị: Raspberry Pi 4 (4GB+ RAM) hoặc Raspberry Pi 5 (khuyến nghị 8GB)
- Storage: MicroSD Card 64GB+ (hoặc NVMe SSD cho production)
- Power Supply: Adapter chất lượng tối thiểu 3A (5V) – Rất quan trọng cho ổn định 24/7
- Cooling: Fan hoặc heatsink nếu chạy 24/7
Software & Network
- Hệ điều hành: Raspberry Pi OS (Bullseye/Bookworm 64-bit) hoặc Ubuntu ARM64 (22.04 LTS)
-
User:
pi(hoặc user cósudoprivileges) - Node.js: Phiên bản 22 trở lên (bắt buộc)
- npm: v9+
- Internet: Kết nối WiFi hoặc Ethernet ổn định
⚠️ IMPORTANT: Đừng dùng Bun thay Node.js. Thư viện WhatsApp (Baileys) không tương thích tốt với Bun runtime và sẽ gây crash / reconnect loop.
Bước 0: Kiểm tra & chuẩn bị môi trường
0.1 Kiểm tra Architecture & OS
# Đảm bảo là ARM64 (không phải armv7)
uname -m
# Kết quả mong muốn: aarch64
# Kiểm tra phiên bản OS
cat /etc/os-release | grep -E "PRETTY_NAME|VERSION"
# Kiểm tra RAM & storage
free -h
df -h
0.2 Cập nhật hệ thống
sudo apt update
sudo apt upgrade -y
sudo apt install -y git curl wget build-essential python3
0.3 Kiểm tra & cài Node.js 22
# Kiểm tra phiên bản hiện tại
node --version
npm --version
# Nếu Node < 22, cài Node 22 từ NodeSource
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Xác nhận
node --version # phải >= v22.0.0
npm --version
0.4 Kiểm tra Port & Connectivity
# Kiểm tra port 18789 có free không
ss -ltnp | grep 18789
# Nếu không có output = port free (tốt)
# Test kết nối mạng
ping 8.8.8.8
# Phải có response
Bước 1: Cài đặt OpenClaw
1.1 Cài package toàn cục
npm install -g openclaw@latest
# Xác nhận cài đặt
openclaw --version
Nếu lỗi "permission denied", thêm
sudo:
sudo npm install -g openclaw@latest
1.2 Kiểm tra cài đặt
which openclaw
# Kết quả: /usr/local/bin/openclaw (hoặc tương tự)
openclaw --help
# Phải liệt kê tất cả commands
Bước 2: Chuẩn bị thư mục & quyền truy cập
2.1 Tạo Config Directory
# Tạo thư mục riêng cho OpenClaw
mkdir -p ~/.openclaw
mkdir -p ~/.openclaw/skills
mkdir -p ~/.openclaw/memory
# Set permissions (chỉ user sở hữu có quyền)
chmod 700 ~/.openclaw
chmod 700 ~/.openclaw/skills
chmod 700 ~/.openclaw/memory
2.2 Tạo Log Directory (tùy chọn)
mkdir -p ~/.openclaw/logs
chmod 700 ~/.openclaw/logs
Bước 3: Cấu hình gateway chạy local
3.1 Đặt gateway mode
# Ép OpenClaw chạy local-first gateway
openclaw config set gateway.mode local
# Xác nhận
openclaw config get gateway.mode
3.2 Cấu hình port & binding
# Set port (18789 là default)
openclaw config set gateway.port 18789
# Bind chỉ local (an toàn cho Raspberry Pi ở nhà)
openclaw config set gateway.bind 127.0.0.1
# Xác nhận
openclaw config get gateway
Bước 4: Khởi tạo gateway service
4.1 Chạy Doctor (tự động setup)
openclaw doctor
Wizard sẽ hỏi các câu hỏi. Chọn YES cho tất cả:
? Generate and configure a gateway token now? → YES
? Install gateway service now? → YES
? Gateway runtime (Node/Bun) → Node
⚠️ Chọn Node, KHÔNG phải Bun (lý do đã nêu ở trên).
4.2 Manual Setup (Nếu Doctor thất bại)
Nếu openclaw doctor gặp lỗi, setup thủ công:
# Tạo token (32 ký tự random)
TOKEN=$(openssl rand -hex 16)
echo "Your token: $TOKEN"
# Lưu token vào config
openclaw config set gateway.auth.token "$TOKEN"
openclaw config set gateway.auth.mode token
# Cấu hình thủ công
openclaw config set gateway.bind 127.0.0.1
openclaw config set gateway.port 18789
openclaw config set gateway.autostart true
Bước 5: Kích hoạt Systemd Service
5.1 Khởi tạo & Enable Service
# Reload systemd daemon
systemctl --user daemon-reload
# Enable service (tự khởi động khi login)
systemctl --user enable --now openclaw-gateway
# Kiểm tra status
systemctl --user status openclaw-gateway --no-pager
Status mong muốn:
● openclaw-gateway.service - OpenClaw Gateway
Loaded: loaded (/home/pi/.config/systemd/user/openclaw-gateway.service; enabled; vendor preset: enabled)
Active: active (running) since ...
5.2 Enable Linger (Boot khi RPI khởi động)
Để service chạy cả khi bạn logout, enable "linger":
# Enable linger cho user
loginctl enable-linger pi
# hoặc tên user khác của bạn
# Xác nhận
loginctl show-user pi | grep Linger
# Kết quả: Linger=yes
Bước 6: Kiểm tra kết nối local
6.1 Test Gateway từ RPI
# Kiểm tra port listening
netstat -tlnp | grep 18789
# Hoặc:
ss -tlnp | grep 18789
# Kết quả: LISTEN 127.0.0.1:18789
# HTTP test
curl -I http://127.0.0.1:18789
# Kết quả mong muốn: HTTP/1.1 200 OK
# Hoặc test với auth token (nếu đã set)
TOKEN=$(openclaw config get gateway.auth.token)
curl -I -H "Authorization: Bearer $TOKEN" http://127.0.0.1:18789
6.2 Xem logs ngay lập tức
# Follow logs (real-time)
journalctl --user -u openclaw-gateway -f
# Xem 50 dòng log gần nhất
journalctl --user -u openclaw-gateway -n 50 --no-pager
Bước 7: Truy cập UI từ laptop
7.1 Setup SSH Tunnel (Từ laptop)
Trên Laptop (macOS/Linux):
# Thay IP_RASPBERRY bằng IP thực của RPI
# (ví dụ: 192.168.1.100)
ssh -L 18789:127.0.0.1:18789 pi@IP_RASPBERRY
# ví dụ: ssh -L 18789:127.0.0.1:18789 [email protected]
# Tunnel chạy, giữ terminal mở
Trên Windows (PowerShell):
ssh -L 18789:127.0.0.1:18789 pi@192.168.1.100
7.2 Truy cập web UI
Từ laptop, mở browser:
http://localhost:18789
Nếu yêu cầu token, paste token từ RPI:
# Trên RPI, lấy token:
openclaw config get gateway.auth.token
# Copy output và paste vào web UI
Bước 8: Lấy token đăng nhập UI
8.1 Xem Token Hiện Tại
openclaw config get gateway.auth.token
8.2 Nếu Quên Hoặc Reset Token
# Generate token mới
NEW_TOKEN=$(openssl rand -hex 16)
openclaw config set gateway.auth.token "$NEW_TOKEN"
# Restart service
systemctl --user restart openclaw-gateway
echo "Token mới: $NEW_TOKEN"
Bước 9: Xử lý lỗi Token Mismatch
Nếu web UI không chấp nhận token:
# Đồng bộ token
TOKEN="$(openclaw config get gateway.auth.token)"
openclaw config set gateway.remote.token "$TOKEN"
# Restart service
systemctl --user restart openclaw-gateway
# Wait 3 giây
sleep 3
# Test lại
curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:18789
Bước 10: Cấu hình AI Model Provider
10.1 Dùng Anthropic Claude (nếu ae có sẵn, còn không thì cứ CLI Proxy API mà dùng nhé ae)
# Login OAuth
openclaw auth login anthropic
# Làm theo hướng dẫn:
# - Mở link Google/Anthropic login
# - Đăng nhập bằng browser
# - Copy URL sau redirect
# - Paste lại vào terminal
# - Chờ auth hoàn tất
# Set làm default
openclaw auth set-default anthropic
10.2 Dùng OpenAI GPT-4o
# Paste API key trực tiếp
openclaw auth login openai
# Nhập API key khi được hỏi
# API Key: sk-...
# Set làm default
openclaw auth set-default openai
10.3 Kiểm tra Provider hiện tại
openclaw config get auth
openclaw models list
Bước 11: Cấu hình Telegram Bot
11.1 Tạo bot trên BotFather
Trên Telegram:
- Tìm @BotFather
- Gõ
/start - Gõ
/newbot - Đặt tên bot (ví dụ: "MyHomeAI")
- Đặt username (ví dụ: "my_home_ai_bot")
-
Copy token (dạng:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)
11.2 Cấu hình OpenClaw
# Enable Telegram channel
openclaw config set channels.telegram.enabled true
# Paste token
openclaw config set channels.telegram.botToken "YOUR_TOKEN_HERE"
# Set pairing mode (yêu cầu phê duyệt)
openclaw config set channels.telegram.dmPolicy pairing
# Lấy Telegram ID của bạn
# - Gửi /start cho @userinfobot
# - Copy ID (ví dụ: 123456789)
openclaw config set channels.telegram.allowFrom '[YOUR_TELEGRAM_ID]'
# Cho phép group (tùy chọn)
openclaw config set channels.telegram.groupPolicy allowlist
openclaw config set channels.telegram.groupAllowFrom '[YOUR_TELEGRAM_ID]'
openclaw config set channels.telegram.groups '{"*":{"requireMention":true}}'
11.3 Restart Service
systemctl --user restart openclaw-gateway
sleep 2
# Test: Gửi "hi" cho bot trên Telegram
Bước 12: Approve Telegram Pairing
Khi người gửi tin nhắn cho bot lần đầu:
Trên RPI:
# Xem danh sách pairing code chưa phê duyệt
openclaw pairing list telegram
# Phê duyệt
openclaw pairing approve telegram <MÃ_PAIR_CODE>
# ví dụ: openclaw pairing approve telegram XyZ123
# Xác nhận
openclaw pairing approved telegram
Bước 13: Xử lý sự cố Service
13.1 Service không chạy
# Kiểm tra status
systemctl --user status openclaw-gateway
# Nếu inactive, check lỗi:
journalctl --user -u openclaw-gateway -n 20 --no-pager
# Force reinstall service
openclaw doctor --force
# hoặc:
openclaw gateway install --force
# Restart
systemctl --user daemon-reload
systemctl --user restart openclaw-gateway
13.2 Port bị chiếm
# Tìm process dùng port 18789
ss -tlnp | grep 18789
# hoặc:
lsof -i :18789
# Dừng process
kill -9 <PID>
# Hoặc đổi port trong config
openclaw config set gateway.port 18790
systemctl --user restart openclaw-gateway
13.3 Lỗi Permission Denied
# Fix ownership
chown -R $USER:$USER ~/.openclaw
chmod 700 ~/.openclaw
# Fix systemd service
systemctl --user daemon-reload
systemctl --user restart openclaw-gateway
13.4 Node Version Mismatch
# Kiểm tra Node version
node --version # phải >= 22
# Nếu < 22, update
nvm install 22
nvm use 22
npm install -g openclaw@latest
# Restart service
systemctl --user restart openclaw-gateway
Bước 14: Kiểm tra trạng thái cuối cùng
# Tất cả service
openclaw status
# Chi tiết đầy đủ
openclaw status --all
# Health check
openclaw health
# Xem channels
openclaw channels status
openclaw channels list
# Xem agents
openclaw agents list
Kết quả mong muốn:
Gateway: ✅ Running (127.0.0.1:18789)
Model: ✅ Ready (claude-3-5-sonnet)
Telegram: ✅ Connected
Storage: ✅ ~/.openclaw (readable)
Bước 15: Tối ưu hóa performance (Tùy Chọn)
15.1 Tăng Swap Space (Nếu RAM < 4GB)
# Kiểm tra swap hiện tại
free -h | grep Swap
# Nếu < 2GB, tăng lên
sudo dphys-swapfile swapoff
sudo nano /etc/dphys-swapfile
# Sửa CONF_SWAPSIZE=100 thành CONF_SWAPSIZE=2048
# Ctrl+O, Enter, Ctrl+X
sudo dphys-swapfile setup
sudo dphys-swapfile swapon
# Xác nhận
free -h
15.2 Enable Performance Mode (Pi 4)
# Edit boot config
sudo nano /boot/firmware/config.txt
# hoặc: sudo nano /boot/config.txt (Pi OS cũ)
# Thêm vào cuối:
# arm_freq=1800
# over_voltage=6
# gpu_mem=16
# Ctrl+O, Enter, Ctrl+X
# Reboot: sudo reboot
Pi 5: Performance mode bật mặc định, không cần chỉnh.
15.3 Cài NVMe SSD (Pi 5)
Nếu dùng Raspberry Pi 5, có thể boot từ NVMe thay MicroSD:
# Kiểm tra PCIe
ls /dev/nvme* 2>/dev/null && echo "NVMe detected" || echo "NVMe not detected"
# Flash Raspberry Pi OS sang NVMe bằng Raspberry Pi Imager
# (download từ: https://www.raspberrypi.com/software/)
# - Select: Pi 5, NVMe, Raspberry Pi OS (64-bit)
# - Write
# - Boot từ NVMe (default)
Bước 16: Quản lý lâu dài
16.1 Monitor logs hàng ngày
# Export logs weekly
0 9 * * 0 journalctl --user -u openclaw-gateway > /home/pi/openclaw-weekly.log
# (Thêm vào crontab: crontab -e)
16.2 Cập nhật OpenClaw
# Kiểm tra version mới
npm outdated -g openclaw
# Update
sudo npm install -g openclaw@latest
# Restart
systemctl --user restart openclaw-gateway
16.3 Backup Config
# Backup hàng tuần
cp -r ~/.openclaw ~/.openclaw.backup.$(date +%Y%m%d)
# Hoặc dùng cron:
0 2 * * 0 cp -r ~/.openclaw ~/.openclaw.backup.$(date +\%Y\%m\%d)
16.4 Gỡ cài đặt (Nếu cần)
# Dừng service
systemctl --user stop openclaw-gateway
systemctl --user disable openclaw-gateway
# Xóa service
rm -rf ~/.config/systemd/user/openclaw-gateway.service
systemctl --user daemon-reload
# Xóa package
npm uninstall -g openclaw
# Xóa data
rm -rf ~/.openclaw
Bước 17: Kiến thức nâng cao
17.1 SSH từ ngoài network (cần static IP)
Nếu muốn SSH vào RPI từ bên ngoài nhà:
# Trên router, forward port 22 → RPI IP:22
# ví dụ: 0.0.0.0:2222 → 192.168.1.100:22
# Từ laptop, connect với: ssh -p 2222 [email protected]
⚠️ Yêu cầu IP tĩnh hoặc DynDNS.
17.2 Dùng Tailscale để truy cập an toàn (Khuyến nghị)
# Cài Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
# Bật Tailscale
sudo tailscale up
# Kiểm tra IP Tailscale
tailscale ip
# Từ laptop (cũng dùng Tailscale):
ssh pi@<tailscale-ip>
Lợi ích: VPN tự động, không cần cấu hình port forwarding, an toàn hơn.
17.3 Chạy Browser Automation (Advanced)
Nếu muốn OpenClaw điều khiển trình duyệt:
# Cài Chrome/Chromium
sudo apt install -y chromium-browser
# hoặc: sudo apt install -y google-chrome-stable
# OpenClaw sẽ auto-detect
openclaw config get tools.browser
# Test
# (Nhắn "visit https://example.com and take a screenshot")
Cấu hình JSON tham khảo (Full Config)
Lưu vào ~/.openclaw/config.json:
{
"gateway": {
"bind": "127.0.0.1",
"port": 18789,
"auth": {
"mode": "token",
"token": "YOUR_TOKEN_HERE"
},
"autostart": true
},
"agents": {
"defaults": {
"model": "claude-3-5-sonnet-20241022",
"thinking": "low",
"sandbox": {
"mode": "non-main",
"scope": "session"
},
"sessionPruning": {
"enabled": true,
"maxContextTokens": 50000
}
}
},
"channels": {
"telegram": {
"enabled": true,
"botToken": "YOUR_BOT_TOKEN",
"dmPolicy": "pairing",
"allowFrom": [YOUR_TELEGRAM_ID]
}
},
"logging": {
"level": "info",
"retention": {
"maxFiles": 30,
"maxSize": "100MB",
"compress": true
}
}
}
Lưu ý khi sử dụng
Hiệu năng
- Pi 4 (4GB): Đủ cho chat + telegram, browser automation có thể chậm.
- Pi 5 (8GB): Tốt cho tất cả workload, khuyến nghị cho production.
- NVMe SSD: Giúp I/O nhanh hơn 3-5x so với MicroSD.
Chi phí token
- OpenClaw khởi tạo ~14,000 tokens/session.
- Trên Pi (không chạy local LLM), tất cả inference gửi sang cloud.
- Tối ưu: Dùng Claude Sonnet thay Opus, compact history, /think low.
Bảo mật
- Luôn dùng SSH tunnel hoặc Tailscale, không expose 0.0.0.0:18789 công khai.
- File token trong
~/.openclaw/config.json– giữ bí mật, chmod 600. - Dùng
dmPolicy: pairingcho Telegram / WhatsApp.
Troubleshooting
Nếu gặp sự cố, thứ tự debug:
-
openclaw status– overview tổng quát -
openclaw health– detailed health check -
journalctl --user -u openclaw-gateway -f– xem logs real-time -
openclaw doctor– auto-fix hầu hết sự cố - Xóa
~/.openclaw& reinstall (last resort)
Top comments (0)