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) và 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 đề:
- SQLite: Hay bị lock khi chạy nhiều worker. -> Đã thay bằng PostgreSQL 17.
- Lưu trữ: File crawl lưu trên disk khó quản lý/backup. -> Đã tích hợp MinIO (S3 Compatible).
- Kết nối Agent: Chưa có giao thức chuẩn để Agent sai khiến nó. -> Đã code thêm MCP Server.
- 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:
| Service | Vai trò | Tại sao cần? |
|---|---|---|
| AnyCrawl (Core) | Crawler Engine | Trái tim của hệ thống, xử lý crawl/scrape. |
| PostgreSQL 17 | Database | Thay thế SQLite, chịu tải cao, không lo database locked. |
| Redis | Queue/Cache | Quản lý hàng đợi job crawl nhanh chóng. |
| MinIO | S3 Storage | Lưu trữ HTML/PDF/Screenshot crawl được. Chuẩn S3 dễ tích hợp. |
| SearXNG | Search Engine | Tìm kiếm Google/Bing miễn phí, không cần mua Proxy đắt tiền. |
| MCP Server | Agent Interface | Cổ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 orbstackBướ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.shScript sẽ tự động:
- Sinh
.envvới cấu hình AI (Models, API Keys, Credits). - Thiết lập PostgreSQL và khởi tạo bucket MinIO
anycrawl-datatự độ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:
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.crawl_url: Bắt đầu cào hàng loạt URL (chạy ngầm).crawl_results: AI lấy dữ liệu Markdown/JSON chi tiết sau khi cào xong.crawl_status: Kiểm tra tiến độ (%).crawl_cancel: AI tự dừng các job cào sai mục tiêu.search: Tìm kiếm kiến thức mới từ Internet qua SearXNG.list_scheduled_tasks: Quản lý các lịch trình cào định kỳ.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:
- Mở file
.env - Sửa
ANYCRAWL_S3_ENDPOINTthành endpoint của provider (VD:https://<account>.r2.cloudflarestorage.com). - Cập nhật Key/Secret.
- 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!








