Ubuntu 24 पर FireCrawl इंस्टॉल करें

Ubuntu 24 पर FireCrawl इंस्टॉल करें

7 min read

इस प्रक्रिया में, हम निम्नलिखित कॉन्फ़िगरेशन को अंतिम लक्ष्य के रूप में सेट करते हैं।

  1. FireCrowl (API सर्वर & वर्कर) को Ubuntu 24 पर इंस्टॉल करें
  2. Node.js को पूरे सिस्टम में इंस्टॉल करें और ग्लोबली pnpm का उपयोग करें
  3. Rust टूलचेन (rustup आदि) को शामिल करें और FireCrawl की Rust-निर्मित HTML रूपांतरण लाइब्रेरी (html-transformer) को बिल्ड करें
  4. Playwright की निर्भरता पैकेजों को इंस्टॉल करें और कस्टम Playwright माइक्रोसर्विस स्क्रिप्ट बनाएं
  5. FireCrowl लॉन्च के लिए 2 systemd सर्विस (सर्वर के लिए & वर्कर के लिए) बनाएं,
    • OS बूट होने पर स्वचालित रूप से स्टार्ट करें
    • मैन्युअल रूप से sudo systemctl restart firecrowl-server / sudo systemctl restart firecrowl-workers आदि संभव हो
                                      (वैकल्पिक)
                                 +-----------------+
                                 |      Dify       |
                                 +-----------------+
                                          |
                                          | HTTP / REST API
                                          v
+------------------------------------------------------------------+
| FireCrawl (Node.js, TypeScript, pnpm)                            |
|  डायरेक्टरी: /home/firecrawl/apps/api                              |
|                                                                  |
|  +----------------------+      (pnpm run start)                 |
|  |   API सर्वर          |-----------------------------------------+
|  | - Express            |                                         |
|  | - BullMQ Dashboard   |                                         |
|  +----------------------+                                         |
|             ^                                                    |
|             | (Queue tasks)                                      |
|  +----------------------+      (pnpm run workers)                |
|  |   Workers            |-----------------------------------------+
|  | - Scraping, parsing, |                                         |
|  |   indexing           |                                         |
|  +----------------------+                                         |
|                                                                  |
|  - .env में कॉन्फ़िगर किए गए विभिन्न विकल्प (API कुंजी, PORT, HOST,|
|    PLAYWRIGHT_MICROSERVICE_URL आदि)                               |
|                                                                  |
|  - Rust HTML Transformer:                                        |
|      -> Cargo के माध्यम से बनाया गया:                             |
|         /home/firecrawl/apps/api/sharedLibs/html-transformer       |
|      -> उत्पन्न करता है: libhtml_transformer.so                    |
|      -> FireCrawl द्वारा तेज़ HTML पार्सिंग के लिए उपयोग किया जाता है  |
|         (या Cheerio पर फ़ॉलबैक करता है)                            |
+------------------------------------------------------------------+
                                          |
                                          | Task Queue / Rate Limit
                                          v
+----------------------------------+
|        Redis (localhost)         |
|  - BullMQ द्वारा जॉब क्यूइंग के लिए उपयोग|
+----------------------------------+


+---------------------------------------------+
| systemd (Ubuntu 24)                        |
|                                             |
|  +--------------------------+               |
|  | firecrowl-server         |               |
|  | - ExecStart=pnpm run start|               |
|  +--------------------------+               |
|  +--------------------------+               |
|  | firecrowl-workers        |               |
|  | - ExecStart=pnpm run     |               |
|  |   workers                |               |
|  +--------------------------+               |
|  +--------------------------+               |
|  | firecrowl-playwright     |               |
|  | - ExecStart=pnpm run     |               |
|  |   playwright-service     |               |
|  +--------------------------+               |
|  (बूट पर स्वचालित प्रारंभ, प्रक्रिया मॉनिटरिंग,|
|   systemd के माध्यम से प्रबंधित लॉग)          |
+---------------------------------------------+

पूर्वापेक्षाएँ:

  • Ubuntu 24 (कोडनेम “noble”) पर Docker का उपयोग किए बिना निष्पादन
  • OS उपयोगकर्ता के पास प्रशासनिक अधिकारों के साथ संचालन की क्षमता है
  • FireCrawl रिपॉजिटरी को /home/firecrawl में क्लोन करने की मान्यता
  • Redis इंस्टॉल है (sudo apt install -y redis-server) और चल रहा है

STEP1. सिस्टम की तैयारी और Node.js / pnpm की इंस्टालेशन #

STEP1.1 सिस्टम अपडेट और डेवलपमेंट टूल्स की इंस्टालेशन #

sudo apt update
sudo apt install -y build-essential pkg-config curl git libssl-dev

STEP1.2 NodeSource से Node.js की इंस्टालेशन #

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

STEP1.3 pnpm की ग्लोबल इंस्टालेशन #

sudo npm install -g pnpm

which pnpm से एक्ज़ीक्यूशन पाथ (उदाहरण: /usr/local/bin/pnpm) की पुष्टि करें।


STEP2. FireCrawl रिपॉज़िटरी का क्लोन और डिपेंडेंसी पैकेजेस की इंस्टालेशन #

STEP2.1 FireCrawl का क्लोन #

cd /home/firecrawl
git clone https://github.com/mendableai/firecrawl.git

STEP2.2 डिपेंडेंसी पैकेजेस की इंस्टालेशन #

cd /home/firecrawl/apps/api
pnpm install

STEP2.3 .env फ़ाइल का सेटअप #

/home/firecrawl/apps/api/.env को बनाएं या संपादित करें, और आवश्यक एनवायरमेंट वेरिएबल्स सेट करें। उदाहरण:

# ===== Required ENVS ======
NUM_WORKERS_PER_QUEUE=8
PORT=3002
HOST=0.0.0.0
REDIS_URL=redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://localhost:6379
PLAYWRIGHT_MICROSERVICE_URL=http://localhost:3000/html
USE_DB_AUTHENTICATION=false

# ===== Optional ENVS ======
TEST_API_KEY=fc-bestnet
BULL_AUTH_KEY=fc-bestnet
...(अन्य ऑप्शन आवश्यकतानुसार)

STEP3. Rust टूलचेन का परिचय और HTML Transformer की बिल्ड #

STEP3.1 Rust टूलचेन की इंस्टालेशन #

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustc --version
cargo --version

STEP3.2 FireCrawl के अंदर Rust लाइब्रेरी डायरेक्टरी की पुष्टि #

रिपॉज़िटरी रूट में निम्नलिखित कमांड चलाएं, और Cargo.toml वाली डायरेक्टरी खोजें।

cd /home/firecrawl
find . -type f -name Cargo.toml | grep -i html-transformer

उदाहरण: ./sharedLibs/html-transformer/Cargo.toml मिलने पर, उस डायरेक्टरी में जाएं।

STEP3.3 Rust लाइब्रेरी की बिल्ड #

cd /home/firecrawl/sharedLibs/html-transformer
cargo build --release

बिल्ड सफल होने पर target/release/libhtml_transformer.so जेनरेट होगी। पुष्टि:

ls target/release/libhtml_transformer.so

STEP3.4 लाइब्रेरी का प्लेसमेंट या एनवायरमेंट वेरिएबल का सेटअप #

  • तरीका A: यदि FireCrawl का Node.js कोड रिलेटिव पाथ से लोड करता है तो विशेष रूप से कोई काम आवश्यक नहीं
  • तरीका B: आवश्यकतानुसार LD_LIBRARY_PATH में जोड़ें
export LD_LIBRARY_PATH=/home/firecrawl/sharedLibs/html-transformer/target/release:$LD_LIBRARY_PATH

systemd से ऑटो सेटअप के लिए, सर्विस फ़ाइल में
Environment=LD_LIBRARY_PATH=... जोड़ें।


STEP4. Playwright का सेटअप और माइक्रोसर्विस स्क्रिप्ट का निर्माण #

STEP4.1 Playwright डिपेंडेंसी पैकेजेस की इंस्टालेशन #

Ubuntu 24.04 के लिए डिपेंडेंसी लाइब्रेरीज़ का उदाहरण:

sudo apt-get install -y libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 
    libdrm2 libxkbcommon0 libgtk-3-0 libpango-1.0-0 libcairo2 libgdk-pixbuf2.0-0 
    libgbm1 libatspi2.0-0 libx11-xcb1 libxcomposite1 libxdamage1 libxfixes3 
    libxrandr2 libxrender1 libxtst6 libxcb1 libxi6 libxcursor1 ca-certificates 
    fonts-liberation xdg-utils

STEP4.2 Playwright के ब्राउज़र की इंस्टालेशन #

pnpm exec playwright install

STEP4.3 Playwright माइक्रोसर्विस के लिए स्क्रिप्ट का निर्माण #

/home/firecrawl/apps/api में playwright-service.js बनाएं और निम्नलिखित कोड उदाहरण पेस्ट करें।

// playwright-service.js
const http = require('http');
const { chromium } = require('playwright');

const PORT = 3000;

const server = http.createServer(async (req, res) => {
  if (req.method === 'GET' && req.url.startsWith('/html')) {
    try {
      const urlParam = new URL(req.url, `http://localhost:${PORT}`).searchParams.get('url');
      if (!urlParam) {
        res.writeHead(400, { 'Content-Type': 'text/plain' });
        return res.end('Missing ?url parameter');
      }
      const browser = await chromium.launch({ headless: true });
      const page = await browser.newPage();
      await page.goto(urlParam, { waitUntil: 'networkidle' });
      const content = await page.content();
      res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
      res.end(content);
      await browser.close();
    } catch (err) {
      console.error('Playwright microservice error:', err);
      res.writeHead(500, { 'Content-Type': 'text/plain' });
      res.end('Playwright error occurred');
    }
  } else {
    res.writeHead(404, { 'Content-Type': 'text/plain' });
    res.end('Not found');
  }
});

server.listen(PORT, '0.0.0.0', () => {
  console.log(`Playwright microservice listening on http://0.0.0.0:${PORT}/html`);
});

STEP4.4 package.json में स्क्रिप्ट जोड़ें #

/home/firecrawl/apps/api/package.json के "scripts" में निम्नलिखित जोड़ें (मौजूदा आइटम के साथ मर्ज करें)।

"playwright-service": "node playwright-service.js"

STEP5. Systemd सेवा का कॉन्फ़िगरेशन #

FireCrawl सर्वर, वर्कर, Playwright माइक्रोसर्विस को ऑटो-स्टार्ट करने के लिए, systemd यूनिट फ़ाइलें बनाएं।

STEP5.1 FireCrowl सर्वर सेवा (/etc/systemd/system/firecrowl-server.service) #

[Unit]
Description=FireCrowl Server
After=network.target

[Service]
User=firecrawl
Group=firecrawl
WorkingDirectory=/home/firecrawl/apps/api
Environment=PATH=/usr/local/bin:/usr/bin:/bin
ExecStart=/bin/bash -c 'pnpm run start'
Restart=always
RestartSec=5
Type=simple

[Install]
WantedBy=multi-user.target

STEP5.2 FireCrawl वर्कर सेवा (/etc/systemd/system/firecrowl-workers.service) #

[Unit]
Description=FireCrowl Workers
After=network.target

[Service]
User=firecrawl
Group=firecrawl
WorkingDirectory=/home/firecrawl/apps/api
Environment=PATH=/usr/local/bin:/usr/bin:/bin
ExecStart=/bin/bash -c 'pnpm run workers'
Restart=always
RestartSec=5
Type=simple

[Install]
WantedBy=multi-user.target

STEP5.3 Playwright माइक्रोसर्विस सेवा (/etc/systemd/system/firecrowl-playwright.service) #

[Unit]
Description=FireCrowl Playwright Microservice
After=network.target

[Service]
User=firecrawl
Group=firecrawl
WorkingDirectory=/home/firecrawl/apps/api
Environment=PATH=/home/firecrawl/.nvm/versions/node/v20.18.3/bin:/usr/local/bin:/usr/bin:/bin
ExecStart=/bin/bash -c 'pnpm run playwright-service'
Restart=always
RestartSec=5
Type=simple

[Install]
WantedBy=multi-user.target

नोट:

  • User=firecrawl का उपयोग करने के लिए, पहले firecrawl यूज़र बनाएं और sudo chown -R firecrawl:firecrawl /home/firecrawl आदि से स्वामित्व सेट करें।
  • Environment=PATH=... में nvm के माध्यम से इंस्टॉल किए गए Node.js पाथ को सेट किया गया है। अपने वातावरण के अनुसार संशोधित करें।
  • यदि Rust लाइब्रेरी को रिलेटिव पाथ से लोड नहीं किया जा रहा है, तो LD_LIBRARY_PATH की सेटिंग भी आवश्यक है।

STEP5.4 Systemd सेवाओं को सक्षम और प्रारंभ करें #

sudo systemctl daemon-reload
sudo systemctl enable firecrowl-server
sudo systemctl enable firecrowl-workers
sudo systemctl enable firecrowl-playwright
sudo systemctl start firecrowl-server
sudo systemctl start firecrowl-workers
sudo systemctl start firecrowl-playwright

sudo systemctl status <service> से प्रत्येक सेवा active (running) में है या नहीं, यह जांचें।


STEP6. FireCrawl का रीस्टार्ट और सत्यापन #

  1. .env की सेटिंग जांच:
    विशेष रूप से PLAYWRIGHT_MICROSERVICE_URL http://localhost:3000/html पर सेट है या नहीं, यह जरूर जांचें
  2. FireCrawl का सर्वर और वर्कर चालू है:
    लॉग में “Scrape via fetch…” आदि दिखाई देने पर HTTP अनुरोध सामान्य रूप से काम कर रहे हैं
  3. Playwright सेवा का संचालन जांच:
    ब्राउज़र में http://<सर्वर IP>:3000/html?url=https://example.com पर पहुंचें, यदि HTML वापस आता है तो ठीक है

STEP7. अंतिम जांच #

  • Rust लाइब्रेरी:
    target/release/libhtml_transformer.so मौजूद है और लॉग में कोई त्रुटि नहीं है, यह जांचें
  • Playwright माइक्रोसर्विस:
    सही तरीके से चालू है और JavaScript रेंडरिंग हो रही है या नहीं, टेस्ट करें
  • संपूर्ण एकीकरण:
    FireCrawl सर्वर, वर्कर और Playwright एकीकृत हैं और Dify आदि से अनुरोधों का सामान्य प्रतिक्रिया दे रहे हैं या नहीं, अंतिम जांच करें
Updated on 2026 वर्ष 6 माह 10 दिन

What are your feelings

  • Happy
  • Normal
  • Sad
目次