AI & Automation (vnROM)

Cover image for Hướng dẫn cài đặt OpenClaw (Clawdbot) trên Raspberry Pi (ARM64)
Duy Nghiện
Duy Nghiện

Posted on • Edited on • Originally published at facebook.com

Hướng dẫn cài đặt OpenClaw (Clawdbot) trên Raspberry Pi (ARM64)

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ó sudo privileges)
  • 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

2.2 Tạo Log Directory (tùy chọn)

mkdir -p ~/.openclaw/logs
chmod 700 ~/.openclaw/logs
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen 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
Enter fullscreen mode Exit fullscreen mode

Bước 4: Khởi tạo gateway service

4.1 Chạy Doctor (tự động setup)

openclaw doctor
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

⚠️ 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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 ...
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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ở
Enter fullscreen mode Exit fullscreen mode

Trên Windows (PowerShell):

ssh -L 18789:127.0.0.1:18789 pi@192.168.1.100
Enter fullscreen mode Exit fullscreen mode

7.2 Truy cập web UI

Từ laptop, mở browser:

http://localhost:18789
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Bước 8: Lấy token đăng nhập UI

8.1 Xem Token Hiện Tại

openclaw config get gateway.auth.token
Enter fullscreen mode Exit fullscreen mode

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"
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

10.3 Kiểm tra Provider hiện tại

openclaw config get auth
openclaw models list
Enter fullscreen mode Exit fullscreen mode

Bước 11: Cấu hình Telegram Bot

11.1 Tạo bot trên BotFather

Trên Telegram:

  1. Tìm @BotFather
  2. /start
  3. /newbot
  4. Đặt tên bot (ví dụ: "MyHomeAI")
  5. Đặt username (ví dụ: "my_home_ai_bot")
  6. 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}}'
Enter fullscreen mode Exit fullscreen mode

11.3 Restart Service

systemctl --user restart openclaw-gateway
sleep 2

# Test: Gửi "hi" cho bot trên Telegram
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Kết quả mong muốn:

Gateway:   ✅ Running (127.0.0.1:18789)
Model:     ✅ Ready (claude-3-5-sonnet)
Telegram:  ✅ Connected
Storage:   ✅ ~/.openclaw (readable)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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)
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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]
Enter fullscreen mode Exit fullscreen mode

⚠️ 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>
Enter fullscreen mode Exit fullscreen mode

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")
Enter fullscreen mode Exit fullscreen mode

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
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

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: pairing cho Telegram / WhatsApp.

Troubleshooting

Nếu gặp sự cố, thứ tự debug:

  1. openclaw status – overview tổng quát
  2. openclaw health – detailed health check
  3. journalctl --user -u openclaw-gateway -f – xem logs real-time
  4. openclaw doctor – auto-fix hầu hết sự cố
  5. Xóa ~/.openclaw & reinstall (last resort)

Top comments (0)