🛠️ Hướng Dẫn Chi Tiết Phục Hồi OpenClaw & Thay Đổi Provider API

🛠️ Hướng Dẫn Chi Tiết Phục Hồi OpenClaw & Thay Đổi Provider API

💡 TL;DR: Bài viết này hướng dẫn chi tiết cách khắc phục sự cố OpenClaw Gateway, thay đổi provider API (Anthropic, ClipProxy, OpenRouter, v.v.) khi hết token/quota, dành cho cả người không chuyên về kỹ thuật. Bao gồm hướng dẫn trên cả điện thoại và máy tính.


📚 Mục Lục


🌟 Giới Thiệu

OpenClaw là một AI gateway mạnh mẽ cho phép bạn tương tác với nhiều AI model (Claude, GPT, Gemini, v.v.) thông qua một interface thống nhất.

⚠️ Các Tình Huống Thường Gặp

Vấn Đề Biểu Hiện Giải Pháp Nhanh
🔴 Gateway crash Bot không phản hồi Restart Gateway
🔑 Token hết hạn Error 401/403 Thay API key mới
⏱️ Rate limit Error 429 Đổi provider hoặc giảm rate
💰 Hết quota Provider từ chối Chuyển sang provider khác

🔧 Phần 1: Quy Trình Phục Hồi OpenClaw

1️⃣ Kiểm Tra Tình Trạng Gateway

🐧 Linux/Mac:

ps aux | grep openclaw-gateway

🪟 Windows:

Get-Process | Select-String "openclaw"

📊 Cách Đọc Kết Quả:

Kết Quả Ý Nghĩa Hành Động
✅ Có process hiển thị Gateway đang chạy Kiểm tra log
❌ Không có kết quả Gateway đã tắt Khởi động lại

2️⃣ Khởi Động Lại Gateway

🟢 Phương Pháp 1: Khởi Động Nhẹ Nhàng (Khuyến nghị)

🐧 Linux/Mac:

# 🛑 Tắt tiến trình cũ
pkill -f openclaw-gateway

# ⏳ Đợi cleanup
sleep 3

# 🚀 Khởi động lại
cd ~/openclaw
./openclaw-gateway serve &

🪟 Windows:

# 🛑 Tắt process
taskkill /IM openclaw-gateway.exe /F

# ⏳ Đợi 3 giây
Start-Sleep -Seconds 3

# 🚀 Khởi động lại
cd C:\openclaw
Start-Process .\openclaw-gateway.exe -ArgumentList "serve"

🔴 Phương Pháp 2: Force Restart (Khi Gateway bị treo)

🐧 Linux/Mac:

# 💥 Force kill
pkill -9 -f openclaw

# 🧹 Xóa lock files
rm -f ~/.openclaw/*.lock
rm -f ~/.openclaw/.gateway.pid

# 🚀 Khởi động
cd ~/openclaw
./openclaw-gateway serve &

🪟 Windows:

# 💥 Force kill
taskkill /IM openclaw-gateway.exe /F

# 🧹 Xóa locks
Remove-Item -Path "$env:USERPROFILE\.openclaw\*.lock" -Force

# 🚀 Khởi động
cd C:\openclaw
Start-Process .\openclaw-gateway.exe -ArgumentList "serve"

3️⃣ Kiểm Tra Log & Xác Nhận

# 📜 Xem log realtime
tail -f ~/openclaw/logs/gateway.log

✅ Dấu Hiệu Hoạt Động Tốt:

✅ Gateway listening on 0.0.0.0:28080
✅ Session session_main started
✅ Connected to provider: cliproxy
✅ Agent default initialized

❌ Dấu Hiệu Lỗi:

❌ Connection refused: provider API unreachable
❌ Token expired or invalid
❌ Rate limit exceeded (429)
❌ Failed to bind port 28080

4️⃣ Kiểm Tra Qua Telegram Bot

📱 Gửi tin nhắn: /status
Phản Hồi Ý Nghĩa
✅ Bot trả lời Gateway hoạt động tốt
❌ Không phản hồi Cần kiểm tra log

🔄 Phần 2: Thay Đổi Provider API

🤔 Tại Sao Cần Thay Provider?

Lý Do Icon Giải Pháp
Hết quota/token 💰 Nạp thêm hoặc đổi provider
Rate limit ⏱️ Đổi provider hoặc giảm tốc
Tối ưu chi phí 💸 Chuyển sang provider rẻ hơn
Tối ưu tốc độ Chuyển sang provider nhanh hơn
Dự phòng 🛡️ Setup failover

📱 Thay Đổi Provider Trên Điện Thoại

💬 Cách 1: Qua Telegram Bot (Dễ nhất)

Bước 1: Mở chat với bot

Bước 2: Kiểm tra config

/config

Bước 3: Yêu cầu thay đổi

🔄 Thay provider sang ClipProxy với token abc123

Hoặc:

🔄 Đổi sang Anthropic, key sk-ant-xxxxx

Bước 4: Xác nhận restart

Bot: ✅ Config cập nhật. Restart? (yes/no)
Bạn: yes

Bước 5: Kiểm tra

Bạn: Xin chào
Bot: 👋 Xin chào! Tôi đã khởi động lại...

📲 Cách 2: Qua SSH Từ Điện Thoại

📥 App SSH khuyến nghị:Termius (iOS/Android) ⭐ – JuiceSSH (Android) – Blink Shell (iOS)

Bước 1: 🔐 Kết nối SSH

ssh user@your-server.com

Bước 2: 📝 Mở config

nano ~/.openclaw/config.yaml

Bước 3: ✏️ Sửa provider

# ❌ CŨ (xóa/comment)
providers:
  - kind: anthropic
    apiKey: sk-ant-old-expired

# ✅ MỚI (thêm vào)
providers:
  - kind: openai
    apiKey: your_clipproxy_token
    baseUrl: https://api.clipproxy.com/v1
    models:
      - cliproxy/claude-sonnet-4-5-20250929
      - cliproxy/claude-opus-4-6-thinking

Bước 4: 💾 Lưu file – Android: Volume Down + Q → Save – iOS: Esc → Save – Hoặc: Ctrl+XYEnter

Bước 5: 🔄 Restart

pkill -f openclaw-gateway && cd ~/openclaw && ./openclaw-gateway serve &

Bước 6: ✅ Kiểm tra log

tail -f ~/openclaw/logs/gateway.log

💻 Thay Đổi Provider Trên Máy Tính

🎯 Cách 1: Qua Gateway API (Power Users)

Bước 1: 📊 Lấy config hiện tại

curl -X POST http://localhost:28080/gateway/config.get \
  -H "Authorization: Bearer YOUR_TOKEN" \
  | jq '.' > current-config.json

Bước 2: 📝 Tạo file patch

🔵 ClipProxy:

{
  "providers": [
    {
      "kind": "openai",
      "apiKey": "your_clipproxy_token",
      "baseUrl": "https://api.clipproxy.com/v1",
      "models": [
        "cliproxy/claude-sonnet-4-5-20250929",
        "cliproxy/gemini-3-pro-high"
      ]
    }
  ]
}

🟣 Anthropic:

{
  "providers": [
    {
      "kind": "anthropic",
      "apiKey": "sk-ant-api03-xxxxx",
      "models": ["claude-sonnet-4-5", "claude-opus-4"]
    }
  ]
}

🟠 OpenRouter:

{
  "providers": [
    {
      "kind": "openrouter",
      "apiKey": "sk-or-v1-xxxxx",
      "baseUrl": "https://openrouter.ai/api/v1"
    }
  ]
}

Bước 3: 🚀 Apply patch

curl -X POST http://localhost:28080/gateway/config.patch \
  -H "Content-Type: application/json" \
  -d @provider-patch.json

Bước 4: ✅ Xác nhận

curl http://localhost:28080/health

📄 Cách 2: Sửa File Trực Tiếp

Bước 1: 📂 Mở file

OS Lệnh
🪟 Windows notepad "$env:USERPROFILE\.openclaw\config.yaml"
🍎 Mac open -a TextEdit ~/.openclaw/config.yaml
🐧 Linux nano ~/.openclaw/config.yaml

Bước 2: ✏️ Thay đổi provider

Ví dụ: Anthropic → ClipProxy

# ❌ Cũ
# providers:
#   - kind: anthropic
#     apiKey: sk-ant-xxxxx

# ✅ Mới
providers:
  - kind: openai
    apiKey: your_clipproxy_token
    baseUrl: https://api.clipproxy.com/v1

Bước 3: 💾 Lưu – Windows: Ctrl+S – Mac: Cmd+S – Linux: Ctrl+XYEnter

Bước 4: 🔄 Restart Gateway


🌐 Phần 3: Các Provider Phổ Biến

🔵 ClipProxy ⭐ KHUYẾN NGHỊ

💡 ClipProxy cho phép truy cập nhiều AI model từ một token duy nhất

✅ Ưu Điểm:

Feature Mô Tả
🔑 Một token Truy cập tất cả models
🎯 Dễ quản lý Không cần nhiều API key
⚡ Rate limit cao Hơn direct API
💰 Free tier Có gói miễn phí
🔌 OpenAI-compatible Dễ tích hợp
📊 Dashboard Theo dõi usage

⚠️ Nhược Điểm:

  • Thêm layer trung gian (có thể chậm hơn chút)
  • Phụ thuộc vào uptime của ClipProxy

⚙️ Cấu Hình:

providers:
  - kind: openai
    apiKey: your_clipproxy_token
    baseUrl: https://api.clipproxy.com/v1
    models:
      - cliproxy/claude-sonnet-4-5-20250929    # ⚡ Cân bằng
      - cliproxy/claude-opus-4-6-thinking      # 🧠 Reasoning
      - cliproxy/gemini-3-pro-high             # 📚 Long context
      - cliproxy/gpt-4o                        # 🤖 GPT-4
      - cliproxy/deepseek-v3                   # 💻 Code
    rateLimits:
      requestsPerMinute: 60
      tokensPerMinute: 100000

🔑 Lấy Token:

  1. 🌐 Truy cập dashboard ClipProxy
  2. 🔐 Đăng nhập
  3. ⚙️ Settings → API Keys
  4. ➕ Create New Key
  5. 📋 Copy & paste vào config

📊 Model Phổ Biến:

Model Icon Use Case Giá
claude-sonnet-4-5-20250929 Tổng quát $$ |
| `claude-opus-4-6-thinking` | 🧠 | Reasoning phức tạp | $$

$
gemini-3-pro-high 📚 Context 1M tokens $$ |
| `gpt-4o` | 🤖 | OpenAI fans | $$

$
deepseek-v3 💻 Lập trình $

🧪 Test Kết Nối:

curl -X POST https://api.clipproxy.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cliproxy/claude-sonnet-4-5-20250929",
    "messages": [{"role": "user", "content": "Say hello"}],
    "max_tokens": 100
  }'

🟣 Anthropic (Claude)

🚀 Direct API cho latency thấp nhất

✅ Ưu Điểm:

  • Latency thấp nhất
  • 🎨 Đầy đủ features (artifacts, thinking)
  • 🛡️ Ổn định cao
  • 📞 Hỗ trợ chính thức

⚠️ Nhược Điểm:

  • 🔒 Chỉ có Claude models
  • 💳 Không miễn phí
  • ⏱️ Rate limit thấp (free tier)

⚙️ Cấu Hình:

providers:
  - kind: anthropic
    apiKey: sk-ant-api03-xxxxx
    models:
      - claude-sonnet-4-5      # ⚡ Latest Sonnet
      - claude-opus-4          # 🧠 Most powerful
      - claude-haiku-4         # 🏃 Fastest
    rateLimits:
      requestsPerMinute: 50
      tokensPerMinute: 40000

🔑 Lấy API Key:

  1. 🌐 https://console.anthropic.com/
  2. 🔐 Đăng nhập/Đăng ký
  3. 🔑 API Keys → Create Key
  4. 📋 Copy (bắt đầu sk-ant-api03-...)
  5. ⚠️ Key chỉ hiện 1 lần!

💰 Giá (03/2026):

Model Input Output Context
🟢 Haiku 4 $0.25/1M $1.25/1M 200K
⚡ Sonnet 4.5 $3/1M $15/1M 200K
🧠 Opus 4 $15/1M $75/1M 200K

🟠 OpenRouter

🌐 100+ models từ một API key

✅ Ưu Điểm:

  • 🎯 100+ models
  • 🔑 Một key cho tất cả
  • 💰 Free tier
  • 📊 Dashboard tốt

⚙️ Cấu Hình:

providers:
  - kind: openrouter
    apiKey: sk-or-v1-xxxxx
    baseUrl: https://openrouter.ai/api/v1
    models:
      - anthropic/claude-sonnet-4
      - google/gemini-pro-1.5
      - openai/gpt-4o
      - meta-llama/llama-3.1-70b

🔑 Lấy Key:

  1. 🌐 https://openrouter.ai/keys
  2. 🔐 Sign in (Google/GitHub)
  3. ➕ Create Key
  4. 📋 Copy (sk-or-v1-...)

🆓 Free Models:

# 🎁 Miễn phí (có giới hạn)
- google/gemini-flash-1.5-8b:free
- meta-llama/llama-3.1-8b:free
- qwen/qwen-2.5-72b:free

# 💰 Paid (giá tốt)
- anthropic/claude-sonnet-4       # $3/$15
- deepseek/deepseek-chat          # $0.14/$0.28 ⭐ rẻ nhất!

🟢 OpenAI (GPT)

providers:
  - kind: openai
    apiKey: sk-proj-xxxxx
    models:
      - gpt-4o          # 🤖 Latest
      - gpt-4-turbo     # ⚡ Fast
      - gpt-4o-mini     # 💰 Cheap

🔑 Lấy key: https://platform.openai.com/api-keys


🔴 Google AI (Gemini)

providers:
  - kind: google-ai
    apiKey: AIzaSy-xxxxx
    models:
      - gemini-2.0-flash      # ⚡ Fastest
      - gemini-pro-1.5        # 🎯 Balanced

✅ Ưu Điểm:

  • 💰 Free tier hào phóng (1M tokens/day)
  • 📚 Context dài (1M tokens)
  • Tốc độ nhanh

🔑 Lấy key: https://makersuite.google.com/app/apikey


⚡ Phần 4: Chuyển Đổi Nhanh Giữa Provider

🔄 Kịch Bản 1: ClipProxy Hết Quota → Anthropic

📱 Qua Telegram:

Bạn: 🔄 ClipProxy hết quota. Chuyển Anthropic: sk-ant-xxxxx
Bot: 🔄 Đang cập nhật...
Bot: ✅ Đã chuyển sang Anthropic
Bot: 🔄 Restart? (yes/no)
Bạn: yes
Bot: ⏳ Đang khởi động...
Bot: ✅ Sẵn sàng với Anthropic Claude!

💻 Script Tự Động:

#!/bin/bash
# 📝 switch-to-anthropic.sh

# 💾 Backup
cp ~/.openclaw/config.yaml ~/.openclaw/config.yaml.backup

# 📝 Tạo patch
cat > /tmp/provider-patch.json << 'EOF'
{
  "providers": [{
    "kind": "anthropic",
    "apiKey": "sk-ant-api03-xxxxx"
  }]
}
EOF

# 🚀 Apply
curl -X POST http://localhost:28080/gateway/config.patch \
  -H "Content-Type: application/json" \
  -d @/tmp/provider-patch.json

echo "✅ Đã chuyển sang Anthropic!"

🎛️ Script Đa Provider (Interactive)

#!/bin/bash
# 🎯 switch-provider.sh

echo "🌐 === OPENCLAW PROVIDER SWITCHER ==="
echo "1️⃣  ClipProxy"
echo "2️⃣  Anthropic"
echo "3️⃣  OpenRouter"
echo "4️⃣  OpenAI"
echo "5️⃣  Google AI"
read -p "🎯 Chọn provider (1-5): " choice

case $choice in
  1)
    echo "🔵 ClipProxy"
    PROVIDER="openai"
    BASE_URL="https://api.clipproxy.com/v1"
    read -p "🔑 Token: " API_KEY
    ;;
  2)
    echo "🟣 Anthropic"
    PROVIDER="anthropic"
    read -p "🔑 Key (sk-ant-...): " API_KEY
    ;;
  3)
    echo "🟠 OpenRouter"
    PROVIDER="openrouter"
    BASE_URL="https://openrouter.ai/api/v1"
    read -p "🔑 Key (sk-or-...): " API_KEY
    ;;
  4)
    echo "🟢 OpenAI"
    PROVIDER="openai"
    read -p "🔑 Key (sk-proj-...): " API_KEY
    ;;
  5)
    echo "🔴 Google AI"
    PROVIDER="google-ai"
    read -p "🔑 Key (AIza...): " API_KEY
    ;;
  *)
    echo "❌ Lựa chọn không hợp lệ!"
    exit 1
    ;;
esac

# 💾 Backup
cp ~/.openclaw/config.yaml ~/.openclaw/config.yaml.backup.$(date +%s)

# 📝 Tạo patch
if [ -z "$BASE_URL" ]; then
  cat > /tmp/provider-patch.json << EOF
{"providers": [{"kind": "$PROVIDER", "apiKey": "$API_KEY"}]}
EOF
else
  cat > /tmp/provider-patch.json << EOF
{"providers": [{"kind": "$PROVIDER", "apiKey": "$API_KEY", "baseUrl": "$BASE_URL"}]}
EOF
fi

# 🚀 Apply
curl -X POST http://localhost:28080/gateway/config.patch \
  -H "Content-Type: application/json" \
  -d @/tmp/provider-patch.json

echo ""
echo "✅ Đã chuyển sang $PROVIDER"
echo "⏳ Gateway restart sau 3s..."
sleep 3

# ✅ Check
if pgrep -f openclaw-gateway > /dev/null; then
  echo "✅ Gateway đang chạy!"
else
  echo "⚠️ Khởi động thủ công..."
  cd ~/openclaw && ./openclaw-gateway serve &
fi

📥 Cách dùng:

chmod +x switch-provider.sh
./switch-provider.sh

🛡️ Phần 5: Backup & Failover

🔄 Cấu Hình Nhiều Provider (High Availability)

providers:
  # 🔵 Primary: ClipProxy
  - kind: openai
    name: cliproxy-primary
    apiKey: ${CLIPROXY_TOKEN}
    baseUrl: https://api.clipproxy.com/v1
    models:
      - cliproxy/claude-sonnet-4-5-20250929
    priority: 1  # ⭐ Highest
    
  # 🟣 Backup: Anthropic
  - kind: anthropic
    name: anthropic-backup
    apiKey: ${ANTHROPIC_KEY}
    models:
      - claude-sonnet-4-5
    priority: 2  # ⭐⭐
    
  # 🟠 Fallback: OpenRouter
  - kind: openrouter
    name: openrouter-fallback
    apiKey: ${OPENROUTER_KEY}
    baseUrl: https://openrouter.ai/api/v1
    priority: 3  # ⭐⭐⭐

agents:
  - id: default
    model: cliproxy/claude-sonnet-4-5-20250929
    fallbackModels:
      - claude-sonnet-4-5              # → Anthropic
      - anthropic/claude-sonnet-4      # → OpenRouter

🔁 Cách Hoạt Động:

📨 Request
    ↓
🔵 ClipProxy (primary)
    ↓ ❌ (nếu lỗi)
🟣 Anthropic (backup)
    ↓ ❌ (nếu vẫn lỗi)
🟠 OpenRouter (fallback)
    ↓ ❌ (nếu vẫn lỗi)
❌ Return error

📜 Log Failover:

ℹ️  Request to cliproxy/claude-sonnet-4-5
❌ ClipProxy rate limit (429)
⚠️  Falling back to anthropic/claude-sonnet-4-5
✅ Request successful with Anthropic

🏥 Health Check Script

#!/bin/bash
# 🏥 check-all-providers.sh

echo "🏥 === PROVIDER HEALTH CHECK ==="
echo ""

# 🔵 ClipProxy
echo "🔵 ClipProxy:"
if curl -s -f -X POST https://api.clipproxy.com/v1/chat/completions \
  -H "Authorization: Bearer $CLIPROXY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"model":"cliproxy/claude-sonnet-4-5-20250929","messages":[{"role":"user","content":"test"}],"max_tokens":5}' \
  > /dev/null 2>&1; then
  echo "  ✅ OK"
else
  echo "  ❌ FAILED"
fi

# 🟣 Anthropic
echo "🟣 Anthropic:"
if curl -s -f -X POST https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-sonnet-4","messages":[{"role":"user","content":"test"}],"max_tokens":5}' \
  > /dev/null 2>&1; then
  echo "  ✅ OK"
else
  echo "  ❌ FAILED"
fi

# 🟠 OpenRouter
echo "🟠 OpenRouter:"
if curl -s -f -X POST https://openrouter.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $OPENROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"anthropic/claude-sonnet-4","messages":[{"role":"user","content":"test"}],"max_tokens":5}' \
  > /dev/null 2>&1; then
  echo "  ✅ OK"
else
  echo "  ❌ FAILED"
fi

echo ""
echo "🏁 === DONE ==="

💾 Auto Backup Script

#!/bin/bash
# 💾 backup-config.sh

BACKUP_DIR=~/.openclaw/backups
mkdir -p "$BACKUP_DIR"

TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/config_$TIMESTAMP.yaml"

# 📋 Copy
cp ~/.openclaw/config.yaml "$BACKUP_FILE"

echo "✅ Backup: $BACKUP_FILE"

# 🧹 Giữ 10 backup mới nhất
ls -t "$BACKUP_DIR"/config_*.yaml | tail -n +11 | xargs -r rm

echo "📁 Total backups: $(ls -1 "$BACKUP_DIR" | wc -l)"

⏰ Auto chạy hàng ngày:

# 📝 Thêm vào crontab
crontab -e

# ⏰ Chạy 3h sáng
0 3 * * * /root/backup-config.sh

🆘 Phần 6: Xử Lý Sự Cố Thường Gặp

🔑 Lỗi 1: Token Expired / Unauthorized

🔍 Nguyên Nhân:

  • ❌ API key hết hạn
  • ❌ Key bị revoke
  • ❌ Key sai/invalid

🛠️ Cách Sửa:

Bước 1: 🧪 Test token

ClipProxy:

curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://api.clipproxy.com/v1/models

Anthropic:

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: YOUR_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-4","messages":[{"role":"user","content":"test"}],"max_tokens":10}'

➡️ Nếu 401/403 → Token invalid

Bước 2: 🔑 Lấy token mới

  • 🔵 ClipProxy: Dashboard → API Keys
  • 🟣 Anthropic: https://console.anthropic.com/settings/keys
  • 🟠 OpenRouter: https://openrouter.ai/keys

Bước 3: ✏️ Cập nhật config

nano ~/.openclaw/config.yaml
# Sửa apiKey

Bước 4: 🔄 Restart

pkill openclaw-gateway && cd ~/openclaw && ./openclaw-gateway serve &

⏱️ Lỗi 2: Rate Limit Exceeded (429)

📜 Log:

❌ 429 Too Many Requests: Rate limit exceeded
❌ Provider: {"error":{"type":"rate_limit_error"}}

🛠️ Giải Pháp:

1️⃣ Thêm Rate Limiting:

providers:
  - kind: openai
    apiKey: your_token
    baseUrl: https://api.clipproxy.com/v1
    rateLimits:
      requestsPerMinute: 50      # ⬇️ Giảm
      tokensPerMinute: 80000     # ⬇️ Giảm
      retryAfterMs: 2000         # ⏳ Đợi 2s

2️⃣ Dùng Failover:
Xem Phần 5.1

3️⃣ Upgrade Tier: – 🟣 Anthropic: Tier 1 → 2+ (https://console.anthropic.com/settings/limits) – 🟢 OpenAI: Add credit + request increase – 🔵 ClipProxy: Upgrade plan


🌐 Lỗi 3: Connection Refused / Timeout

🔍 Kiểm Tra:

# 1️⃣ Gateway có chạy?
ps aux | grep openclaw-gateway

# 2️⃣ Port 28080 có listen?
lsof -i :28080

# 3️⃣ Firewall?
sudo ufw status | grep 28080

# 4️⃣ Test provider
curl -I https://api.clipproxy.com

🛠️ Sửa:

Gateway chưa chạy:

cd ~/openclaw && ./openclaw-gateway serve &

Port bị chặn:

sudo ufw allow 28080/tcp

🔍 Lỗi 4: Model Not Found

📜 Log:

❌ Model 'cliproxy/claude-sonnet-4-5' not found
❌ 404: Model 'xyz' does not exist

🛠️ Sửa:

Bước 1: 📋 List models

ClipProxy:

curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://api.clipproxy.com/v1/models | jq '.data[].id'

OpenRouter:

curl https://openrouter.ai/api/v1/models | jq '.data[].id'

Bước 2: ✏️ Copy tên chính xác

Bước 3: 🔧 Sửa config

agents:
  - id: default
    model: cliproxy/claude-sonnet-4-5-20250929  # ✅ Đúng

🔌 Lỗi 5: Port Already in Use

📜 Log:

❌ Failed to bind 0.0.0.0:28080: address already in use

🛠️ Sửa:

# 🔍 Tìm process
lsof -i :28080

# 💥 Kill
kill -9 <PID>

# 🚀 Start
cd ~/openclaw && ./openclaw-gateway serve &

📝 Lỗi 6: YAML Syntax Error

📜 Log:

❌ Failed to parse config: yaml: line 12: did not find expected key

🛠️ Sửa:

1️⃣ Validate online:
https://www.yamllint.com/

2️⃣ Check indentation:

# ✅ ĐÚNG (2 spaces)
providers:
  - kind: openai
    apiKey: abc123

# ❌ SAI (tabs hoặc không đều)
providers:
 - kind: openai
   apiKey: abc123

3️⃣ Restore backup:

cp ~/.openclaw/backups/config_*.yaml ~/.openclaw/config.yaml

💾 Lỗi 7: Out of Memory (OOM)

🔍 Check RAM:

free -h
htop

🛠️ Sửa:

1️⃣ Giới hạn sessions:

server:
  maxConcurrentSessions: 5  # ⬇️ Giảm
  sessionTimeoutMinutes: 30

2️⃣ Tăng swap:

# 📈 Tạo 2GB swap
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 💾 Permanent
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

🤖 Phần 7: Automation & Best Practices

🔔 Monitoring Script

#!/bin/bash
# 🔔 monitor-openclaw.sh

LOG_FILE=~/openclaw-monitor.log
WEBHOOK="https://api.telegram.org/botYOUR_TOKEN/sendMessage"
CHAT_ID="YOUR_CHAT_ID"

log() {
  echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

notify() {
  curl -s -X POST "$WEBHOOK" -d "chat_id=$CHAT_ID" -d "text=$1" > /dev/null
}

# 1️⃣ Check process
if ! pgrep -f openclaw-gateway > /dev/null; then
  log "❌ Gateway DOWN. Restarting..."
  notify "⚠️ Gateway down! Restarting..."
  
  cd ~/openclaw && ./openclaw-gateway serve &
  sleep 5
  
  if pgrep -f openclaw-gateway > /dev/null; then
    log "✅ Restarted OK"
    notify "✅ Gateway restarted"
  else
    log "❌ FAILED restart!"
    notify "🚨 CRITICAL: Failed to restart!"
  fi
else
  log "✅ Gateway running"
fi

# 2️⃣ Health check
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:28080/health)

if [ "$HTTP_CODE" != "200" ]; then
  log "⚠️ Health failed (HTTP $HTTP_CODE)"
  notify "⚠️ Health check failed! Restarting..."
  
  pkill -f openclaw-gateway
  sleep 3
  cd ~/openclaw && ./openclaw-gateway serve &
fi

# 3️⃣ Disk check
DISK=$(df -h / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ "$DISK" -gt 90 ]; then
  log "⚠️ Disk: ${DISK}%"
  notify "⚠️ Disk usage: ${DISK}%"
fi

# 4️⃣ Memory check
MEM=$(free | grep Mem | awk '{print int($3/$2 * 100)}')
if [ "$MEM" -gt 90 ]; then
  log "⚠️ Memory: ${MEM}%"
  notify "⚠️ Memory usage: ${MEM}%"
fi

⏰ Chạy mỗi 5 phút:

chmod +x monitor-openclaw.sh
crontab -e

# Thêm:
*/5 * * * * /root/monitor-openclaw.sh

⚙️ Systemd Service

# 📝 Tạo service
sudo nano /etc/systemd/system/openclaw.service
[Unit]
Description=🤖 OpenClaw AI Gateway
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/openclaw
ExecStart=/root/openclaw/openclaw-gateway serve
Restart=always
RestartSec=10
StandardOutput=append:/root/openclaw/logs/gateway.log
StandardError=append:/root/openclaw/logs/gateway-error.log

LimitNOFILE=65536
MemoryLimit=2G

[Install]
WantedBy=multi-user.target

🚀 Kích hoạt:

# Reload
sudo systemctl daemon-reload

# Enable auto-start
sudo systemctl enable openclaw

# Start
sudo systemctl start openclaw

# Status
sudo systemctl status openclaw

# Logs
sudo journalctl -u openclaw -f

📜 Log Rotation

sudo nano /etc/logrotate.d/openclaw
/root/openclaw/logs/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0644 root root
    postrotate
        pkill -HUP openclaw-gateway
    endscript
}

⚙️ Config Best Practices

# 🔧 ~/.openclaw/config.yaml
# ============================================
# 🚀 OPENCLAW PRODUCTION CONFIG
# 📅 Updated: 2026-03-12
# ============================================

# 🌐 Providers (with failover)
providers:
  # 🔵 Primary: ClipProxy
  - kind: openai
    name: cliproxy-primary
    apiKey: ${CLIPROXY_TOKEN}  # 🔐 Env var
    baseUrl: https://api.clipproxy.com/v1
    models:
      - cliproxy/claude-sonnet-4-5-20250929
      - cliproxy/gemini-3-pro-high
    rateLimits:
      requestsPerMinute: 60
      tokensPerMinute: 100000
    timeout: 60s
    priority: 1
    
  # 🟣 Backup: Anthropic
  - kind: anthropic
    name: anthropic-backup
    apiKey: ${ANTHROPIC_KEY}
    models:
      - claude-sonnet-4-5
    priority: 2
    
  # 🟠 Fallback: OpenRouter
  - kind: openrouter
    name: openrouter-fallback
    apiKey: ${OPENROUTER_KEY}
    baseUrl: https://openrouter.ai/api/v1
    priority: 3

# 🤖 Agents
agents:
  - id: default
    name: Main Agent
    model: cliproxy/claude-sonnet-4-5-20250929
    fallbackModels:
      - claude-sonnet-4-5
      - anthropic/claude-sonnet-4
    
    systemPrompt: |
      You are a helpful AI assistant.
    
    maxTokens: 4096
    temperature: 0.7
    
    memory:
      enabled: true
      maxMessages: 50

# 🌐 Server
server:
  host: 0.0.0.0
  port: 28080
  maxConcurrentSessions: 10
  requestTimeoutSeconds: 120

# 📱 Telegram
telegram:
  enabled: true
  token: ${TELEGRAM_BOT_TOKEN}
  allowedUsers:
    - 5365015505

# 📊 Logging
logging:
  level: info
  format: json
  outputs:
    - type: file
      path: logs/gateway.log
      maxSizeMB: 100
      maxBackups: 10

# 📈 Metrics
metrics:
  enabled: true
  port: 9090

🔐 Environment Variables:

# ~/.bashrc
export CLIPROXY_TOKEN="your_token"
export ANTHROPIC_KEY="sk-ant-xxxxx"
export OPENROUTER_KEY="sk-or-xxxxx"
export TELEGRAM_BOT_TOKEN="123456:ABC-xxxxx"

# Reload
source ~/.bashrc

✅ Kết Luận

📌 Tóm Tắt Nhanh

🔧 Khi Gateway Lỗi:

  1. ✅ Check: ps aux | grep openclaw
  2. 🔄 Restart: pkill openclaw && cd ~/openclaw && ./openclaw-gateway serve &
  3. 📜 Log: tail -f ~/openclaw/logs/gateway.log

🔄 Khi Đổi Provider:

  1. 📱 Telegram: “Đổi sang ClipProxy token xxx”
  2. 📝 File: nano ~/.openclaw/config.yaml → Sửa → Save → Restart
  3. 🔌 API: Dùng config.patch endpoint

🏆 Provider Khuyến Nghị:

Provider Icon Use Case
ClipProxy 🔵 Đa năng, nhiều model
Anthropic 🟣 Tốc độ, trực tiếp
OpenRouter 🟠 Tiết kiệm, free tier

✅ Best Practices:

  • ✅ Luôn có 2-3 provider backup
  • ✅ Setup monitoring tự động
  • ✅ Backup config định kỳ
  • ✅ Dùng systemd service
  • ✅ Dùng env vars cho secrets
  • ✅ Check log thường xuyên
  • ✅ Test failover trước khi production

🔗 Tài Nguyên Hữu Ích

Resource Link
📚 OpenClaw Docs https://github.com/openclaw/openclaw
🔵 ClipProxy (Your dashboard)
🟣 Anthropic Console https://console.anthropic.com/
🟠 OpenRouter https://openrouter.ai/
🔍 YAML Validator https://www.yamllint.com/

📧 Hỗ Trợ

🆘 Nếu gặp vấn đề: – 📜 Check log: ~/openclaw/logs/gateway.log – 🏥 Chạy: ./check-openclaw.sh – 📧 Email: namvuhvq@gmail.com


🚀 Chúc bạn sử dụng OpenClaw hiệu quả!

📅 Version: 2.0 | Cập nhật: 2026-03-12

⭐ Nếu bài viết hữu ích, hãy chia sẻ cho bạn bè!


📊 Token Usage Của Bài Viết Này

  • 📝 Độ dài: ~40,000 ký tự
  • 💰 Token ước tính: ~15,000 tokens
  • ⏱️ Thời gian đọc: ~20 phút

🎯 Các Bài Viết Liên Quan


📱 Follow để cập nhật thêm:

Blog GitHub Telegram

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Lên đầu trang