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

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

7 min read

इस प्रक्रिया में, हम निम्नलिखित संरचना को अंतिम लक्ष्य के रूप में रखेंगे।

  1. FireCrowl (API सर्वर और वर्कर) को Ubuntu 24 पर install करें
  2. Node.js को पूरे सिस्टम में install करें, और globally pnpm का उपयोग करें
  3. Rust टूलचेन (rustup आदि) install करें, और FireCrawl की Rust में बनी HTML conversion library (html-transformer) को build करें
  4. Playwright के dependency packages install करना, और खुद की Playwright microservice script बनाना
  5. FireCrowl को शुरू करने के लिए systemd service के 2 (सर्वर के लिए और वर्कर के लिए) बनाएं, जिससे
    • OS स्टार्ट होते ही अपने आप start हो जाए
    • manually sudo systemctl restart firecrowl-server / sudo systemctl restart firecrowl-workers जैसे commands भी चलाए जा सकें
                                          (Optional)
                                     +-----------------+
                                     |      Dify       |
                                     +-----------------+
                                              |
                                              | HTTP / REST API
                                              v
    +------------------------------------------------------------------+
    | FireCrawl (Node.js, TypeScript, pnpm)                            |
    |  Directory: /home/firecrawl/apps/api                              |
    |                                                                  |
    |  +----------------------+      (pnpm run start)                 |
    |  |   API Server         |-----------------------------------------+
    |  | - Express            |                                         |
    |  | - BullMQ Dashboard   |                                         |
    |  +----------------------+                                         |
    |             ^                                                    |
    |             | (Queue tasks)                                      |
    |  +----------------------+      (pnpm run workers)                |
    |  |   Workers            |-----------------------------------------+
    |  | - Scraping, parsing, |                                         |
    |  |   indexing           |                                         |
    |  +----------------------+                                         |
    |                                                                  |
    |  - .env में सेट किए गए विकल्प (API key, PORT, HOST,             |
    |    PLAYWRIGHT_MICROSERVICE_URL आदि)                                 |
    |                                                                  |
    |  - Rust HTML Transformer:                                        |
    |      -> Built via Cargo in:                                      |
    |         /home/firecrawl/apps/api/sharedLibs/html-transformer       |
    |      -> Generates: libhtml_transformer.so                         |
    |      -> Used by FireCrawl for fast HTML parsing (or falls back to   |
    |         Cheerio)                                                 |
    +------------------------------------------------------------------+
                                              |
                                              | Task Queue / Rate Limit
                                              v
    +----------------------------------+
    |        Redis (localhost)         |
    |  - Used by BullMQ for job queuing|
    +----------------------------------+
    
    
    +---------------------------------------------+
    | systemd (Ubuntu 24)                        |
    |                                             |
    |  +--------------------------+               |
    |  | firecrowl-server         |               |
    |  | - ExecStart=pnpm run start|               |
    |  +--------------------------+               |
    |  +--------------------------+               |
    |  | firecrowl-workers        |               |
    |  | - ExecStart=pnpm run     |               |
    |  |   workers                |               |
    |  +--------------------------+               |
    |  +--------------------------+               |
    |  | firecrowl-playwright     |               |
    |  | - ExecStart=pnpm run     |               |
    |  |   playwright-service     |               |
    |  +--------------------------+               |
    |  (Automatic start at boot, process monitoring,|
    |   logs managed via systemd)                  |
    +---------------------------------------------+
    

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

    • Ubuntu 24 (कोडनेम “noble”) पर बिना Docker के चलाएं
    • OS user के पास administrator अधिकार से operate करने की सुविधा हो
    • FireCrowl repository को /home/firecrawl में clone करने की योजना है
    • Redis install हो चुका है (sudo apt install -y redis-server) और चालू (running) है

    STEP1. सिस्टम की तैयारी और Node.js / pnpm की installation #

    STEP1.1 सिस्टम update और development tools की installation #

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

    STEP1.2 NodeSource से Node.js की installation #

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

    STEP1.3 pnpm की global installation #

    sudo npm install -g pnpm
    

    ※ which pnpm से execution path (उदाहरण: /usr/local/bin/pnpm) confirm करें।


    STEP2. FireCrawl repository का clone और dependency packages की installation #

    STEP2.1 FireCrawl का clone #

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

    STEP2.2 dependency packages की installation #

    cd /home/firecrawl/apps/api
    pnpm install
    

    STEP2.3 .env file की setting #

    /home/firecrawl/apps/api/.env को create या edit करें, और आवश्यक environment variables set करें। उदाहरण:

    # ===== 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 टूलचेन का install और HTML Transformer का build #

    STEP3.1 Rust टूलचेन की installation #

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

    STEP3.2 FireCrawl के अंदर Rust library directory confirm करें #

    repository root में नीचे दिया गया command चलाकर, Cargo.toml वाली directory खोजें।

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

    उदाहरण: ./sharedLibs/html-transformer/Cargo.toml मिल जाए, तो उस directory में जाएं।

    STEP3.3 Rust library का build #

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

    build सफल होने पर target/release/libhtml_transformer.so generate होती है। confirm करें:

    ls target/release/libhtml_transformer.so
    

    STEP3.4 library की placement या environment variable की setting #

    • तरीका A: अगर FireCrawl का Node.js code relative path से load होता है तो अलग से कोई काम करने की जरूरत नहीं है
    • तरीका B: आवश्यकता अनुसार LD_LIBRARY_PATH में add करें
    export LD_LIBRARY_PATH=/home/firecrawl/sharedLibs/html-transformer/target/release:$LD_LIBRARY_PATH
    

    systemd में automatically set करने के लिए, service file में
    Environment=LD_LIBRARY_PATH=... add करें।


    STEP4. Playwright का setup और microservice script बनाना #

    STEP4.1 Playwright dependency packages की installation #

    Ubuntu 24.04 के लिए dependency library का उदाहरण:

    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 की browser installation #

    pnpm exec playwright install
    

    STEP4.3 Playwright microservice के लिए script बनाना #

    /home/firecrawl/apps/api में playwright-service.js create करें, और नीचे दिया गया code example paste करें।

    // 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 में script जोड़ें #

    /home/firecrawl/apps/api/package.json के "scripts" में नीचे दिया गया add करें (मौजूदा items के साथ merge करें)।

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

    STEP5. Systemd service की setting #

    FireCrawl server, worker, और Playwright microservice को automatically start कराने के लिए, systemd unit file बनाएंगे।

    STEP5.1 FireCrawl server service (/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 worker service (/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 microservice service (/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 use करने पर, पहले से firecrawl user बना लें, और sudo chown -R firecrawl:firecrawl /home/firecrawl जैसे command से ownership पहले से set कर लें।
    • Environment=PATH=... में nvm के जरिए install किए गए Node.js का path pass किया गया है। अपने environment के अनुसार इसे modify करें।
    • अगर Rust library relative path से load नहीं हो रही है, तो LD_LIBRARY_PATH की setting भी जरूरी है।

    STEP5.4 Systemd service को enable करना और start करना #

    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> से check करें कि हर service active (running) हो गई है या नहीं।


    STEP6. FireCrawl का restart और verification #

    1. .env की setting की जांच:
      खासकर PLAYWRIGHT_MICROSERVICE_URL http://localhost:3000/html होना चाहिए या नहीं, इसकी जांच जरूरी है
    2. FireCrawl के server और worker का start होना:
      log में “Scrape via fetch…” जैसा कुछ दिखे तो HTTP request सही तरीके से काम कर रहा है
    3. Playwright service के काम करने की जांच:
      browser में http://<सर्वर-IP>:3000/html?url=https://example.com पर access करें, और अगर HTML वापस आ जाए तो ठीक है

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

    • Rust library:
      target/release/libhtml_transformer.so मौजूद है, और log में कोई error नहीं आ रहा, यह confirm करें
    • Playwright microservice:
      सही तरीके से start होकर JavaScript rendering हो रही है या नहीं, इसकी जांच करें
    • पूरा integration:
      FireCrawl server, worker और Playwright आपस में जुड़कर, Dify आदि से आने वाले request का सही जवाब देते हैं या नहीं, इसकी अंतिम जांच करें
Updated on 2026 वर्ष 10 माह 19 दिन

What are your feelings

  • Happy
  • Normal
  • Sad
विषय-सूची