Hướng dẫn self-hosted FireCrawl: Web Data API cho AI
Hiện nay, việc thu thập dữ liệu từ web đang trở nên quan trọng hơn bao giờ hết, đặc biệt đối với các ứng dụng AI và Large Language Models (LLM). Bạn đã bao giờ gặp khó khăn khi cố gắng trích xuất dữ liệu từ các trang web phức tạp, đầy JavaScript, hoặc cần chuyển đổi nội dung thành định dạng dễ sử dụng cho mô hình AI chưa? Đó chính là lúc FireCrawl xuất hiện như một giải pháp rất cần thiết.
FireCrawl là một Web Data API mã nguồn mở, được thiết kế đặc biệt để chuyển đổi toàn bộ website thành dữ liệu markdown sạch sẽ hoặc dữ liệu có cấu trúc sẵn sàng cho LLM. Dự án này được phát triển bởi đội ngũ Mendable AI và có sẵn trên GitHub tại https://github.com/mendableai/firecrawl. Với FireCrawl, bạn có thể dễ dàng crawl (thu thập) dữ liệu từ web, xử lý các trang động, và xuất ra định dạng lý tưởng cho các mô hình AI như GPT hoặc các hệ thống RAG (Retrieval-Augmented Generation).
Lợi ích chính của FireCrawl bao gồm:
- Dữ liệu sẵn sàng cho LLM: Chuyển đổi HTML lộn xộn thành markdown sạch, JSON cấu trúc, hoặc thậm chí ảnh chụp màn hình và HTML thô.
- Độ tin cậy cao: Hỗ trợ hơn 80% các trường hợp benchmark, vượt trội hơn nhiều công cụ khác nhờ khả năng xử lý proxy, render JavaScript, và nội dung động.
- Tùy chỉnh linh hoạt: Cho phép loại trừ thẻ HTML, crawl sau tường đăng nhập, giới hạn độ sâu, và nhiều tùy chọn khác.
- Hỗ trợ self-hosted: Hoàn toàn miễn phí khi tự lưu trữ, giúp tránh phụ thuộc vào dịch vụ đám mây đắt đỏ và đảm bảo quyền kiểm soát dữ liệu.
- Tích hợp dễ dàng: Có SDK cho Python, JavaScript, Rust, và Go, phù hợp cho lập trình viên phát triển AI.
Nếu bạn là một lập trình viên hoặc nhà phát triển AI đang tìm kiếm công cụ web scraping tự lưu trữ, FireCrawl sẽ giúp bạn tiết kiệm thời gian và chi phí. Hãy xem cách cài đặt và sử dụng nó trong bài viết này.
Hướng dẫn self-hosted FireCrawl
Self-hosting FireCrawl là một lựa chọn tuyệt vời cho những ai muốn kiểm soát hoàn toàn hệ thống mà không phụ thuộc vào dịch vụ cloud. Dự án vẫn đang phát triển, nhưng bạn có thể chạy nó ở local hoặc triển khai qua Docker. Dưới đây là hướng dẫn chi tiết từng bước.
Yêu cầu hệ thống
Trước khi bắt đầu, hãy đảm bảo hệ thống của bạn đáp ứng các yêu cầu sau:
- Node.js: Phiên bản 18 trở lên (vì FireCrawl được viết chủ yếu bằng TypeScript).
- Docker: Khuyến nghị sử dụng để triển khai dễ dàng, bao gồm PostgreSQL và RabbitMQ cho hàng đợi.
- Python (tùy chọn): Nếu sử dụng SDK Python.
- RAM và CPU: Ít nhất 4GB RAM và CPU đa lõi để xử lý crawl lớn.
- Hệ điều hành: Linux hoặc macOS khuyến nghị; Windows có thể cần điều chỉnh.
Nếu bạn gặp vấn đề về port hoặc health check, hãy kiểm tra cấu hình Docker.
Các bước cài đặt
- Clone repository từ GitHub:
Mở terminal và chạy lệnh:
git clone https://github.com/mendableai/firecrawl.git
cd firecrawl- Cài đặt Dependencies:
Chạy lệnh để cài đặt các gói cần thiết:
npm installNếu sử dụng Python SDK, cài thêm:
pip install firecrawl-python- Cấu hình môi trường:
Tạo file.envdựa trên mẫu.env.exampletrong repository. Các biến quan trọng bao gồm:
API_KEY: Khóa API tùy chỉnh cho server của bạn.DATABASE_URL: Kết nối PostgreSQL (ví dụ:postgresql://user:pass@localhost:5432/firecrawl).RABBITMQ_URL: Kết nối RabbitMQ cho hàng đợi (ví dụ:amqp://guest:guest@localhost:5672).
Đảm bảo PostgreSQL và RabbitMQ đang chạy. Nếu dùng Docker, filedocker-compose.yamlsẽ tự động khởi tạo chúng.
- Chạy server với Docker:
Sử dụng Docker Compose để triển khai:
docker-compose up -dĐiều này sẽ khởi động server tại http://localhost:3000. Kiểm tra logs để xác nhận không có lỗi.
- Kiểm tra và troubleshooting:
- Truy cập
http://localhost:3000/healthđể kiểm tra server. - Nếu gặp lỗi port PostgreSQL, chỉnh sửa
docker-compose.yamlđể expose port khác. - Lỗi RabbitMQ health check: Tăng thời gian chờ hoặc kiểm tra kết nối.
- Nếu crawl chậm, thêm proxy trong cấu hình để tránh block IP.
Với self-hosting, bạn có thể mở rộng bằng cách thêm worker cho crawl song song. Tham khảo hướng dẫn chi tiết tại docs.firecrawl.dev/contributing/self-host để tùy chỉnh nâng cao.
Script cài đặt tự động cực nhanh
Nếu bạn không muốn tự tay cấu hình Dockerfile và docker-compose phức tạp, mình đã viết sẵn một script cài đặt tự động cho FireCrawl, hỗ trợ mượt mà trên cả 3 nền tảng phổ biến:
| Nền tảng | Kiến trúc | Trạng thái |
|---|---|---|
| macOS (Apple Silicon / Intel) | arm64 / amd64 | ✅ |
| Raspberry Pi 4/5 | arm64 | ✅ |
| Linux VPS (Ubuntu, Debian, …) | amd64 / arm64 | ✅ |
Cài đặt chỉ với 3 lệnh
Bạn chỉ cần chạy 3 lệnh sau trong Terminal (trên Mac) hoặc SSH (trên VPS/Pi):
mkdir -p ~/self-hosted && cd ~/self-hosted
git clone https://github.com/duynghien/auto.git && cd auto/firecrawl
chmod +x setup.sh fc.sh && ./setup.shScript setup.sh sẽ tự động lo mọi thứ:
- Nhận diện OS và kiến trúc CPU của bạn.
- Cài đặt Docker & Docker Compose nếu máy chưa có (chỉ áp dụng trên Linux VPS/Pi. macOS yêu cầu cài trước Docker Desktop/OrbStack).
- Tự động cấu hình RAM ảo (Swap) 4GB nếu bạn chạy trên Raspberry Pi hoặc VPS RAM thấp (< 3GB), giúp quá trình lấy mã nguồn và build không bị đứng máy.
- Tải mã nguồn (source code) FireCrawl mới nhất trực tiếp từ GitHub.
- Tự động sinh file cấu hình
.envvới mật khẩu bảo mật ngẫu nhiên cho Queue (Bull MQ) và PostgreSQL. Bạn không phải sợ lộ thông tin! - Tự động tạo
docker-compose.ymlđịnh dạng chuẩn: kết nối đủ 5 container (hệ thống API, Redis, RabbitMQ, PostgreSQL, và trình cào dữ liệu Playwright-service). - Khắc phục lỗi chờ khởi động (Postgres Healthcheck) để API không bị crash lúc chạy mồi.
- Build và Start container cho đến khi lên xanh, kèm một test chạy cào 1 đoạn Markdown mẫu để khẳng định thành công.
Lưu ý: Vì FireCrawl tự động biên dịch (build) một số thư viện Node.js bên trong quá trình setup (Playwright), nên lần cài đầu tiên sẽ mất từ 5 đến 15 phút tuỳ CPU/RAM của máy trạm. Quá trình download Chromium mất khoảng ~106MB. Từ lần start sau chỉ tốn vài giây.
Tiến trình cài đặt trông như thế này:
FireCrawl Setup — macOS Apple Silicon
================================================================
[1/5] System Check
✓ Docker: OK
✓ Docker Compose: OK
✓ Platform: macOS Apple Silicon
[2/5] Setting up directory
⚠ Cloning FireCrawl source code...
[3/5] Environment configuration
✓ .env created with secure passwords
[4/5] Building and starting containers
⚠ Building FireCrawl from source (first build takes 5-15 min)...
[5/5] Verification
✓ Redis: OK
✓ FireCrawl API: OK
🎉 INSTALLATION COMPLETE!Cách quản lý nhanh bằng script fc.sh
Bên cạnh script setup, thư mục chạy có sẵn công cụ fc.sh giúp bạn quản lý FireCrawl chỉ với câu lệnh nhàn hạ:
# Quản lý 5 containers của FireCrawl
./fc.sh start # Bật lại hệ thống
./fc.sh stop # Tắt toàn bộ
./fc.sh restart # Khởi động lại
./fc.sh status # Xem tình trạng sống/chết của các node và healthcheck API
./fc.sh logs # Cuộn theo dõi file log của API
./fc.sh test # Gửi thử 1 request cào file markdown từ web test
./fc.sh update # Tự kéo bản cập nhật Git mới nhất của FireCrawl và build đèThông tin truy cập sau cài đặt
Khi script báo [INSTALLATION COMPLETE], bạn có thể duyệt web tới:
- Giao diện quản lý Queue của dữ liệu cào:
http://localhost:3002/admin/queues - Cấu hình (Credential/Pass): Được chứa trong file
~/self-hosted/auto/firecrawl/.env– hãy đi tới đó nếu bạn muốn tích hợp API KEY của OpenAI / Ollama để bật tính năng bóc tách lấy cục JSON tự động theo Schema (AI Extraction).
Toàn bộ source code script và tài liệu tại repo GitHub này: github.com/duynghien/auto/tree/main/firecrawl.
Hướng dẫn sử dụng FireCrawl
Sau khi self-hosted thành công, bạn có thể sử dụng FireCrawl qua API hoặc SDK. Công cụ hỗ trợ crawl đơn lẻ, crawl toàn bộ site, search web, và thậm chí agent tự động.
Tích hợp API cơ bản
FireCrawl cung cấp các endpoint như /scrape, /crawl, /search, và /agent. Để gọi API, sử dụng curl hoặc thư viện HTTP.
Ví dụ crawl một URL đơn lẻ và xuất markdown (JavaScript/Node.js):
const fetch = require('node-fetch');
async function scrapeUrl() {
const response = await fetch('http://localhost:3002/v2/scrape', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://example.com',
formats: ['markdown']
})
});
const data = await response.json();
console.log(data.markdown);
}
scrapeUrl();Ví dụ tương tự bằng Python:
import requests
def scrape_url():
url = 'http://localhost:3002/v2/scrape'
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
payload = {
'url': 'https://example.com',
'formats': ['markdown']
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
print(data['markdown'])
scrape_url()Tính năng nâng cao
- Xử lý Site JavaScript-Heavy: FireCrawl tự động render JS bằng headless browser. Thêm tùy chọn
actionsnhư click hoặc scroll:
{
"url": "https://dynamic-site.com",
"actions": ["click", "wait 2000"]
}- Crawl toàn bộ site: Sử dụng endpoint
/crawlvới giới hạn trang:
curl -X POST 'http://localhost:3002/v2/crawl' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://docs.firecrawl.dev",
"limit": 50,
"scrapeOptions": {"formats": ["markdown", "json"]}
}'- Trích xuất dữ liệu cấu trúc: Sử dụng schema JSON cho output:
from firecrawl import Firecrawl
from pydantic import BaseModel
class Product(BaseModel):
name: str
price: float
app = Firecrawl(api_url='http://localhost:3002')
result = app.scrape('https://ecommerce.com/product', formats=[{"type": "json", "schema": Product.model_json_schema()}])
print(result['json'])FireCrawl còn hỗ trợ batch processing cho hàng nghìn URL và theo dõi thay đổi nội dung, lý tưởng cho dữ liệu AI thời gian thực.
So sánh FireCrawl với các công cụ tương tự
Khi chọn công cụ web scraping, việc so sánh là cần thiết. Dưới đây là bảng so sánh FireCrawl với Crawl4AI (tập trung AI), AnyCrawl (đa năng), và Scrapling (nhẹ nhàng). FireCrawl nổi bật nhờ self-hosted miễn phí và linh hoạt cho AI.
| Tiêu Chí | FireCrawl | Crawl4AI | AnyCrawl | Scrapling |
|---|---|---|---|---|
| Tập trung chính | Web Data API cho LLM, markdown/JSON | LLM-friendly scraper, markdown output | Đa năng, SERP & web scraping cho AI | Adaptive scraping, bypass anti-bot |
| Ngôn ngữ | TypeScript/Python/Rust | Python | Node.js/TypeScript | Python |
| Self-hosted | Có, miễn phí qua Docker | Có, open-source | Có, nhưng tập trung API | Có, lightweight framework |
| Tốc độ | Cao, batch processing | Rất nhanh, async | Cao, multi-threading | Lightning-fast, adaptive |
| Tích hợp AI | Xuất sắc, schema JSON cho LLM | Tốt, extraction strategies | Tốt, LLM-ready data | Trung bình, tập trung parsing |
| Dễ sử dụng | Trung bình, cần cấu hình | Dễ, quick start Python | Dễ, API đơn giản | Dễ, học từ thay đổi site |
| Chi phí | Miễn phí self-hosted | Miễn phí | Miễn phí self-hosted | Miễn phí |
| Xử lý JS | Xuất sắc, actions như click/scroll | Tốt, headless browser | Tốt, dynamic content | Tốt, bypass Cloudflare |
| Hiệu suất | Cao cho crawl lớn | Tốt cho AI pipelines | Cao cho SERP | Nhẹ, phù hợp crawl nhỏ |
| Điểm mạnh | Linh hoạt, độ tin cậy cao | Tốc độ, cộng đồng lớn | Đa năng, batch | Adaptive, undetectable |
| Điểm yếu | Đang phát triển | Ít tùy chỉnh sâu | Phụ thuộc API | Ít tính năng AI |
Lý do chọn FireCrawl: Nó miễn phí hoàn toàn khi self-hosted, linh hoạt cho AI với output LLM-ready, và vượt trội trong xử lý site phức tạp so với các đối thủ.
FireCrawl là công cụ mạnh mẽ giúp lập trình viên và nhà phát triển AI dễ dàng chuyển đổi web thành dữ liệu hữu ích, mà không lo chi phí cloud. Với khả năng self-hosted, tích hợp API đơn giản, và tính năng nâng cao, nó lý tưởng cho các dự án web scraping. Hãy thử nghiệm ngay hôm nay bằng cách clone repo và chạy local – bạn sẽ thấy sự khác biệt!








