AI Automation

Kinh nghiệm sử dụng Claude và top skill nên cài trên VPS

Ngồi chat với Claude trên web được vài tháng, tôi quyết định đưa nó lên VPS để phục vụ công việc hàng ngày: kiểm tra server tự động, phân tích log, sinh lệnh Linux phức tạp. Sau một thời gian mày mò, tôi đúc kết lại vài kinh nghiệm sử dụng Claude và top skill nên cài dành cho ai muốn biến AI thành trợ lý sysadmin thực thụ. Nếu bạn có VPS Ubuntu 24.04 chạy Docker, bài này là dành cho bạn.

Tóm tắt nhanh

  • Dùng Claude API key + Docker compose để chạy tool agent chỉ với vài dòng lệnh.
  • Tối ưu chi phí bằng cách giới hạn context window và nén prompt đầu vào.
  • Ba skill quan trọng nên cài: check server status (tự động ping, check disk), phân tích log (grep + Claude), sinh lệnh Linux (từ mô tả tiếng Việt).
  • MCP (Model Context Protocol) giúp Claude đọc file thật trên server, cần config đúng để tránh lộ dữ liệu.

Yêu cầu trước khi bắt đầu

  • Một VPS chạy Ubuntu 24.04 LTS (hoặc Debian 12) với Docker và Docker Compose v2 đã cài sẵn.
  • Claude API key từ Anthropic (cấp free credit cho account mới, sau đó trả theo token).
  • Kiến thức cơ bản về Docker, terminal, và biết grep/awk là lợi thế.

Vì sao nên đưa Claude lên VPS?

Chat Claude trên web rất hay, nhưng khi cần tích hợp vào quy trình vận hành server, bạn cần thứ gì đó tự động và có thể gọi lệnh. Claude trên VPS cho phép bạn viết script gửi prompt qua API, nhận kết quả rồi thực thi hành động (ví dụ: đọc log, gửi cảnh báo, sinh câu lệnh rồi chạy luôn). Không cần mở trình duyệt, không copy-paste thủ công. Bạn cứ tưởng tượng: một lệnh cron chạy mỗi giờ, dùng Claude phân tích vài MB access log, tóm tắt lỗi 5xx, rồi gửi report vào Telegram. Tất cả tự động.

Bước 1, Thiết lập môi trường Claude Agent bằng Docker

Cách nhanh nhất để chạy Claude tool agent trên VPS là dùng thư viện claude-code hoặc image Docker có sẵn Anthropic SDK + tool use. Tôi chọn image ghcr.io/anthropics/claude-code vì nhẹ, có sẵn Python và SDK.

Tạo file cấu hình docker-compose:

version: '3.8'
services:
  claude-agent:
    image: ghcr.io/anthropics/claude-code:latest
    container_name: claude-agent
    environment:
      - ANTHROPIC_API_KEY=sk-ant-...    # API key của bạn
      - CLAUDE_MODEL=claude-sonnet-4-20250514
    volumes:
      - ./workdir:/workspace
      - /var/log:/var/log:ro
    working_dir: /workspace
    restart: unless-stopped
    stdin_open: true
    tty: true

Giải thích: volume mount /var/log:/var/log:ro cho phép Claude đọc log thật của server (read-only). Bạn có thể mount thêm thư mục khác nếu muốn agent đọc file config. Chạy lệnh sau để khởi động:

docker compose up -d
docker exec -it claude-agent claude "Hãy kiểm tra dung lượng đĩa của server này"

Verify: lệnh trên sẽ trả về output giống như df -h nhưng được Claude diễn giải bằng tiếng Việt. Nếu thấy thông báo "File read denied" nghĩa là permission chưa đúng, kiểm tra lại quyền truy cập vào thư mục đã mount.

Bước 2, Tối ưu prompt để tiết kiệm token

Sai lầm phổ biến khi mới dùng Claude API là gửi prompt quá dài, kèm toàn bộ file log không cần thiết. Kinh nghiệm sử dụng Claude của tôi: nén prompt đầu vào bằng cách tóm tắt trước khi gửi. Ví dụ, thay vì gửi cả file 10MB access.log, hãy dùng lệnh tail -100 /var/log/nginx/access.log rồi grep lấy 5xx, rồi mới gửi cho Claude.

Viết script helper /usr/local/bin/claude-prompt.sh:

#!/bin/bash
# Tóm tắt log trước khi gửi cho Claude
LOG_FILE="$1"
TAIL_LINES="${2:-100}"
TEMP_FILE=$(mktemp)
# Lọc lỗi 5xx trước
grep -E 'HTTP/[12]\.[01]" 5[0-9]{2}' /var/log/nginx/access.log | tail -$TAIL_LINES > "$TEMP_FILE"
if [ ! -s "$TEMP_FILE" ]; then
    echo "Không có lỗi 5xx nào gần đây."
    exit 0
fi
# Gửi cho Claude
docker exec -i claude-agent claude <

Chạy thử: bash /usr/local/bin/claude-prompt.sh /var/log/nginx/access.log 200. Kết quả sẽ là bản phân tích gọn gàng, không ngốn token vô ích.

Bước 3, Top 3 skill nên cài cho sysadmin

Sau nhiều lần thử nghiệm, tôi thấy 3 skill sau đây mang lại giá trị thực tế nhất, giúp tự động hoá các tác vụ hàng ngày trên VPS Linux.

Skill 1: Kiểm tra tổng quan server (server-status)

Skill này dùng Claude để đọc output của các lệnh df -h, free -m, uptime, ss -tlnp và trả về một báo cáo bằng tiếng Việt kèm khuyến nghị. Cài đặt bằng cách tạo tool function trong Python:

import subprocess, json
def server_status():
    result = {}
    for cmd in [["df", "-h"], ["free", "-m"], ["uptime"], ["ss", "-tlnp"]]:
        r = subprocess.run(cmd, capture_output=True, text=True)
        result[cmd[0]] = r.stdout.strip()
    return json.dumps(result, ensure_ascii=False)

Gắn tool này vào config của Claude Agent, sau đó gọi: "Hãy kiểm tra server status và cho tôi biết nếu có port nào đáng ngờ đang mở". Kết quả: Claude liệt kê các port đang listen, so sánh với danh sách dịch vụ thường dùng (SSH 22, HTTP 80, HTTPS 443) và cảnh báo nếu có port lạ.

Skill 2: Phân tích log thành hành động

Thay vì grep và google từng dòng log, skill này cho Claude đọc trực tiếp các file log (qua mount /var/log), phân tích lỗi, và gợi ý lệnh khắc phục. Ví dụ, khi thấy log MariaDB báo "table is full", Claude sẽ gợi ý OPTIMIZE TABLE hoặc tăng innodb_buffer_pool_size. Tôi thường dùng:

docker exec claude-agent claude "Đọc 50 dòng cuối của /var/log/mysql/error.log và giải thích lỗi có ý nghĩa gì, đề xuất cách sửa."

Lưu ý: mount read-only tránh việc Claude vô tình ghi đè file log. Nếu cần cho phép ghi vào thư mục khác (ví dụ output report), mount riêng một thư mục ./output với quyền rw.

Skill 3: Sinh lệnh Linux phức tạp từ mô tả tiếng Việt

Skill này tiện lợi vô cùng: bạn mô tả tác vụ bằng tiếng Việt, Claude sinh lệnh và giải thích từng flag. Ví dụ: "Tìm tất cả file .log trong /var/log đã được sửa trong 7 ngày qua, nén lại thành archive, đặt tên theo ngày tháng". Claude trả về:

find /var/log -name "*.log" -mtime -7 -print0 | tar czf /tmp/logs-$(date +%Y%m%d).tar.gz --null -T -

Giải thích: -mtime -7 là sửa trong 7 ngày, print0--null xử lý tên file có khoảng trắng, $(date +%Y%m%d) tự động đặt tên. Bạn copy-paste chạy luôn, không phải nhớ cú pháp find.

MCP, Model Context Protocol cho phép Claude đọc file thật

MCP là tính năng mới của Anthropic cho phép Claude truy cập các "context" từ bên ngoài, file, database, API. Trên VPS, bạn cấu hình MCP server để Claude đọc được file config như /etc/nginx/nginx.conf mà không cần mount toàn bộ thư mục. Cài đặt nhanh bằng Python:

pip install mcp
# Tạo file config MCP
cat > ~/mcp_config.yaml <<EOF
filesystem:
  allowed_paths:
    - /etc/nginx
    - /etc/ssh
EOF
mcp serve --config ~/mcp_config.yaml &

Sau đó chỉ cần điều chỉnh Claude Agent trỏ tới MCP server. Lưu ý bảo mật: chỉ allow đúng thư mục cần truy cập, không allow / vì Claude có thể đọc luôn shadow file.

Bảng thông số tham khảo khi dùng Claude API trên VPS

Tham sốGiá trị khuyến nghịGhi chú
max_tokens4096Đủ cho hầu hết tác vụ sysadmin, không nên cao hơn vì tốn tiền
temperature0.3Thấp hơn cho tác vụ sinh lệnh chính xác; cao hơn (0.7) cho brainstorming
Modelclaude-sonnet-4-20250514Cân bằng giữa chất lượng và chi phí; opus dùng khi cần độ chính xác rất cao
Context windowGiới hạn ở 8K token đầu vào nếu không thực sự cần18K token có sẵn nhưng mỗi lần gửi nhiều hơn nghĩa là trả nhiều hơn

Xử lý lỗi thường gặp

Lỗi "Claude không truy cập được file"

Kiểm tra permission: ls -la /var/log/nginx/access.log. Mount volume trong Docker phải chính xác, và user trong container (thường là node hoặc 1000:1000) phải có quyền đọc file host. Giải pháp: mount file cụ thể thay vì thư mục, hoặc dùng id -uchown cho đúng UID.

Lỗi tốn kém token bất thường

Dùng docker logs claude-agent để xem số token mỗi request. Nếu thấy prompt_out luôn lớn hơn 4000 token, bạn đang gửi quá nhiều context. Giải pháp: giới hạn nội dung gửi đi, dùng tail -n 50 thay vì cả file.

Lỗi timeout request

API Claude đôi khi latency cao (2-10 giây tuỳ model). Tăng timeout trong script: docker exec -t -e CLAUDE_TIMEOUT=60 claude-agent claude "prompt...". Nếu hay gặp rate limit, cần đăng ký tier cao hơn hoặc thêm backoff trong code.

Câu hỏi thường gặp

Tôi có cần VPS mạnh để chạy Claude Agent không?

Không. Claude xử lý trên cloud của Anthropic, VPS chỉ cần Docker và kết nối internet ổn định. Cấu hình tối thiểu: 1 vCPU, 1GB RAM, 10GB SSD là đủ. Nếu bạn muốn host thêm MCP server và lưu trữ nhiều dữ liệu log, thuê VPS 2GB RAM là thoải mái.

Dùng Claude API có đắt không? Làm sao kiểm soát chi phí?

Claude Sonnet 4 có giá khoảng $3/triệu token đầu vào và $15/triệu token đầu ra. Với các tác vụ sysadmin cơ bản (kiểm tra server, phân tích 200 dòng log), mỗi lần gọi tốn khoảng $0.002-$0.01. Để kiểm soát, bạn nên giới hạn context window ở 8K token và đặt spending limit trong Anthropic Console.

Làm sao để Claude hiểu được tiếng Việt khi phân tích log?

Chỉ cần viết prompt bằng tiếng Việt. Claude đọc được log bằng tiếng Anh (vì hầu hết log server viết bằng English), nhưng yêu cầu nó trả lời bằng tiếng Việt. Ví dụ: "Hãy đọc log này và giải thích lỗi bằng tiếng Việt". Kết quả rất chính xác, kể cả với log chứa thuật ngữ kỹ thuật.

Có rủi ro bảo mật gì khi cho Claude đọc log server?

Có. Log có thể chứa IP nội bộ, token, password (nếu ứng dụng log sai). Luôn mount thư mục với quyền read-only (thêm :ro trong volume). Nếu log chứa dữ liệu nhạy cảm, hãy dùng script lọc trước khi gửi cho Claude, hoặc dùng MCP với danh sách allowed path hẹp. hiếm khi cho Claude quyền ghi vào thư mục hệ thống.

Skill nào hữu ích nhất cho người mới bắt đầu?

Skill sinh lệnh Linux từ mô tả tiếng Việt. Nó giúp bạn tiết kiệm hàng giờ tra man page và google. Chỉ cần mô tả việc cần làm, Claude trả lệnh sẵn sàng để copy-paste. Dần dần, bạn sẽ học được cú pháp từ chính các lệnh Claude sinh ra.

Bài viết liên quan

Lưu ý: Bài viết mang tính tham khảo, tổng hợp kiến thức chung. Mỗi hệ thống, hạ tầng và nhu cầu có đặc thù riêng, nên kiểm thử trong môi trường an toàn và tham vấn kỹ sư trước khi triển khai thực tế.