इस प्रक्रिया में, हम निम्नलिखित कॉन्फ़िगरेशन को अंतिम लक्ष्य के रूप में सेट करते हैं।
- FireCrowl (API सर्वर & वर्कर) को Ubuntu 24 पर इंस्टॉल करें
- Node.js को पूरे सिस्टम में इंस्टॉल करें और ग्लोबली
pnpmका उपयोग करें - Rust टूलचेन (rustup आदि) को शामिल करें और FireCrawl की Rust-निर्मित HTML रूपांतरण लाइब्रेरी (html-transformer) को बिल्ड करें
- Playwright की निर्भरता पैकेजों को इंस्टॉल करें और कस्टम Playwright माइक्रोसर्विस स्क्रिप्ट बनाएं
- 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 का रीस्टार्ट और सत्यापन #
- .env की सेटिंग जांच:
विशेष रूप सेPLAYWRIGHT_MICROSERVICE_URLhttp://localhost:3000/htmlपर सेट है या नहीं, यह जरूर जांचें - FireCrawl का सर्वर और वर्कर चालू है:
लॉग में “Scrape via fetch…” आदि दिखाई देने पर HTTP अनुरोध सामान्य रूप से काम कर रहे हैं - Playwright सेवा का संचालन जांच:
ब्राउज़र मेंhttp://<सर्वर IP>:3000/html?url=https://example.comपर पहुंचें, यदि HTML वापस आता है तो ठीक है
STEP7. अंतिम जांच #
- Rust लाइब्रेरी:
target/release/libhtml_transformer.soमौजूद है और लॉग में कोई त्रुटि नहीं है, यह जांचें - Playwright माइक्रोसर्विस:
सही तरीके से चालू है और JavaScript रेंडरिंग हो रही है या नहीं, टेस्ट करें - संपूर्ण एकीकरण:
FireCrawl सर्वर, वर्कर और Playwright एकीकृत हैं और Dify आदि से अनुरोधों का सामान्य प्रतिक्रिया दे रहे हैं या नहीं, अंतिम जांच करें