AI & AUTOMATIONSELF HOSTING

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

  1. Clone repository từ GitHub:
    Mở terminal và chạy lệnh:
git clone https://github.com/mendableai/firecrawl.git
cd firecrawl
  1. Cài đặt Dependencies:
    Chạy lệnh để cài đặt các gói cần thiết:
npm install

Nếu sử dụng Python SDK, cài thêm:

pip install firecrawl-python
  1. Cấu hình môi trường:
    Tạo file .env dựa trên mẫu .env.example trong 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, file docker-compose.yaml sẽ tự động khởi tạo chúng.
  1. 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.

  1. 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ảngKiến trúcTrạng thái
macOS (Apple Silicon / Intel)arm64 / amd64
Raspberry Pi 4/5arm64
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.sh

Script setup.sh sẽ tự động lo mọi thứ:

  1. Nhận diện OS và kiến trúc CPU của bạn.
  2. 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).
  3. 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.
  4. Tải mã nguồn (source code) FireCrawl mới nhất trực tiếp từ GitHub.
  5. Tự động sinh file cấu hình .env vớ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!
  6. 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).
  7. Khắc phục lỗi chờ khởi động (Postgres Healthcheck) để API không bị crash lúc chạy mồi.
  8. 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 actions như click hoặc scroll:
  {
    "url": "https://dynamic-site.com",
    "actions": ["click", "wait 2000"]
  }
  • Crawl toàn bộ site: Sử dụng endpoint /crawl vớ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íFireCrawlCrawl4AIAnyCrawlScrapling
Tập trung chínhWeb Data API cho LLM, markdown/JSONLLM-friendly scraper, markdown outputĐa năng, SERP & web scraping cho AIAdaptive scraping, bypass anti-bot
Ngôn ngữTypeScript/Python/RustPythonNode.js/TypeScriptPython
Self-hostedCó, miễn phí qua DockerCó, open-sourceCó, nhưng tập trung APICó, lightweight framework
Tốc độCao, batch processingRất nhanh, asyncCao, multi-threadingLightning-fast, adaptive
Tích hợp AIXuất sắc, schema JSON cho LLMTốt, extraction strategiesTốt, LLM-ready dataTrung bình, tập trung parsing
Dễ sử dụngTrung bình, cần cấu hìnhDễ, quick start PythonDễ, API đơn giảnDễ, học từ thay đổi site
Chi phíMiễn phí self-hostedMiễn phíMiễn phí self-hostedMiễn phí
Xử lý JSXuất sắc, actions như click/scrollTốt, headless browserTốt, dynamic contentTốt, bypass Cloudflare
Hiệu suấtCao cho crawl lớnTốt cho AI pipelinesCao cho SERPNhẹ, phù hợp crawl nhỏ
Điểm mạnhLinh hoạt, độ tin cậy caoTốc độ, cộng đồng lớnĐa năng, batchAdaptive, undetectable
Điểm yếuĐang phát triểnÍt tùy chỉnh sâuPhụ 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!

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