AI & AUTOMATIONSELF HOSTING

Hướng dẫn self-hosted AnyCrawl với “max option”: PostgreSQL, MinIO, MCP Server & Auto-Setup

Chào ae, nối tiếp bài viết hướng dẫn self-hosted về AnyCrawl trên macOS, hôm nay mình chia sẻ phiên bản “All-in-One” tối ưu hóa toàn diện. Phiên bản này không chỉ khắc phục các nhược điểm của bản gốc mà còn bổ sung thêm các thành phần “enterprise” như MinIO (S3 Storage)Custom MCP Server để AnyCrawl có thể kết nối trực tiếp với các Agent AI như LobeHub, OpenClaw hay Claude Desktop.

Tại sao nên dùng bản “max option” này?

Bản gốc của AnyCrawl rất tốt, nhưng khi chạy production hoặc scale lớn trên macOS/Pi sẽ gặp vài vấn đề:

  1. SQLite: Hay bị lock khi chạy nhiều worker. -> Đã thay bằng PostgreSQL 17.
  2. Lưu trữ: File crawl lưu trên disk khó quản lý/backup. -> Đã tích hợp MinIO (S3 Compatible).
  3. Kết nối Agent: Chưa có giao thức chuẩn để Agent sai khiến nó. -> Đã code thêm MCP Server.
  4. Cài đặt: Thủ công nhiều bước. -> Automation Script 1 click.

Kiến trúc hệ thống (Architecture)

Chúng ta sẽ dựng một stack Docker gồm các service sau:

ServiceVai tròTại sao cần?
AnyCrawl (Core)Crawler EngineTrái tim của hệ thống, xử lý crawl/scrape.
PostgreSQL 17DatabaseThay thế SQLite, chịu tải cao, không lo database locked.
RedisQueue/CacheQuản lý hàng đợi job crawl nhanh chóng.
MinIOS3 StorageLưu trữ HTML/PDF/Screenshot crawl được. Chuẩn S3 dễ tích hợp.
SearXNGSearch EngineTìm kiếm Google/Bing miễn phí, không cần mua Proxy đắt tiền.
MCP ServerAgent InterfaceCổng giao tiếp chuẩn MCP để AI Agent điều khiển AnyCrawl.

Hướng dẫn cài đặt trên macOS (macOS & Raspberry Pi)

Bước 1: Chuẩn bị

Ae nên dùng OrbStack trên Mac để đạt hiệu năng tốt nhất.

brew install orbstack

Bước 2: Tải & cài đặt

Mở Terminal và chạy:

# Tải bộ công cụ
mkdir -p ~/self-hosted
cd ~/self-hosted
git clone https://github.com/duynghien/auto.git anycrawl-stack
cd anycrawl-stack/anycrawl

# Chạy script cài đặt tự động
chmod +x setup.sh
./setup.sh

Script sẽ tự động:

  • Sinh .env với cấu hình AI (Models, API Keys, Credits).
  • Thiết lập PostgreSQL và khởi tạo bucket MinIO anycrawl-data tự động.
  • Build lại MCP Server phiên bản mới nhất.

Kết nối với AI Agent (MCP Integration)

Đây là tính năng “ăn tiền” nhất. Ae có thể add AnyCrawl vào Claude Desktop hoặc LobeHub thông qua giao thức MCP.

SSE URL: http://localhost:8889/sse

Cấu hình cho Claude Desktop / LobeHub

Sử dụng cấu hình SSE hoặc Stdio (nếu chạy local).
Vì MCP Server chạy trong Docker, ae cần expose nó ra hoặc dùng docker exec.

Ví dụ cấu hình cho Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "anycrawl": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "anycrawl_mcp",
        "node",
        "index.js"
      ]
    }
  }
}

LƯU Ý:

Cách trên dùng docker exec để gọi trực tiếp vào container.

Các tools hỗ trợ:

Danh sách 8 công cụ AI có thể sử dụng:

  1. scrape_url (Mạnh nhất): Cào 1 trang ngay lập tức. Hỗ trợ json_options để AI trích xuất dữ liệu có cấu trúc và screenshot để xem ảnh thực tế của trang web.
  2. crawl_url: Bắt đầu cào hàng loạt URL (chạy ngầm).
  3. crawl_results: AI lấy dữ liệu Markdown/JSON chi tiết sau khi cào xong.
  4. crawl_status: Kiểm tra tiến độ (%).
  5. crawl_cancel: AI tự dừng các job cào sai mục tiêu.
  6. search: Tìm kiếm kiến thức mới từ Internet qua SearXNG.
  7. list_scheduled_tasks: Quản lý các lịch trình cào định kỳ.
  8. list_webhooks: Theo dõi các thông báo đẩy.

Cấu hình nâng cao

MiniO & S3

Mặc định script đã cấu hình AnyCrawl dùng MinIO làm S3 Storage.

  • Bucket: anycrawl-data
  • Access Key / Secret: Tự sinh trong .env.

Nếu ae muốn đổi sang AWS S3 thật hoặc Cloudflare R2:

  1. Mở file .env
  2. Sửa ANYCRAWL_S3_ENDPOINT thành endpoint của provider (VD: https://<account>.r2.cloudflarestorage.com).
  3. Cập nhật Key/Secret.
  4. Restart lại: docker compose up -d

Cấu hình AI & Credits

Trong file .env, ae có thể tùy chỉnh các thông số để tối ưu cho AI:

  • CUSTOM_BASE_URL: Endpoint nếu ae dùng AI proxy.
  • ANYCRAWL_EXTRACT_JSON_CREDITS: Số credit trừ khi dùng AI trích xuất.
  • DEFAULT_LLM_MODEL: Model AI dùng để trích xuất (VD: gpt-4o, claude-3-5-sonnet).

FAQ – Các lỗi thường gặp

Q: Lỗi “DATABASE IS LOCKED”?
A: Đã fix triệt để bằng cách dùng PostgreSQL thay vì SQLite.

Q: SearXNG không trả về JSON?
A: Script setup đã tự động copy file searxng/settings.yml chuẩn vào. Nếu ae cài tay, nhớ set formats: - json.

Q: Máy M1 chạy bị nóng?
A: Do build image. Sau khi build xong (lần đầu), các lần sau chạy sẽ rất nhẹ. Ae nên dùng OrbStack thay Docker Desktop để mát máy hơn.

Q: Tại sao tôi nạp LobeHub báo lỗi “Missing sessionId”?
A: Bản v2.1 đã xử lý vấn đề này bằng Stateless Transport. Hãy đảm bảo ae đang dùng phiên bản MCP Server mới nhất trong thư mục mcp-server.

Q: Làm sao để AI Agent tự chụp ảnh màn hình?
A: AI chỉ cần gọi tool scrape_url với tham số screenshot: true. AnyCrawl sẽ lưu ảnh vào MinIO và trả về link cho AI xem.

Q: Tôi có thể dùng trên Raspberry Pi không?
A: Có! Dùng script install-pi.sh. Nó đã được cấu hình để tối ưu RAM và Swap cho chip ARM.

Chúc ae có một hệ thống Crawler “xịn sò” phục vụ cho các AI Agent của mình!

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận