একদম ভাই! আমি নিচে আপনাকে Step-by-Step 💻 Google Chrome-setup for Ubuntu VPS শিখিয়ে দিচ্ছি — ইনস্টল থেকে চেক, লোকেশন পর্যন্ত — যেন আপনি Puppeteer-এ ঠিকভাবে কাজ করাতে পারেন।
✅ Full Chrome Installation & Configuration Guide (Ubuntu VPS)
🔹 STEP 1: Check if Chrome is already installed
which google-chrome
✅ যদি Chrome ইনস্টল থাকে, আপনি দেখবেন কিছু এরকম:
/usr/bin/google-chrome
আর যদি কিছু না আসে → Chrome নেই ➡️ Install করতে হবে।
🔹 STEP 2: Download Chrome .deb package from Google
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
🔹 STEP 3: Install Chrome using APT
sudo apt install ./google-chrome-stable_current_amd64.deb -y
🟡 যদি error দেয় _apt permission নিয়ে, তাহলে এইভাবে চালান:
sudo apt install ./google-chrome-stable_current_amd64.deb -y --allow-downgrades
✅ এটা Chrome ও তার dependencies ইনস্টল করে দেবে।
🔹 STEP 4: Confirm Chrome is working
google-chrome --version
Output হবে এরকম:
Google Chrome 123.0.xxxxx.x (official build) stable
🔹 STEP 5: Check where Chrome is installed (path)
which google-chrome
আউটপুট হবে:
/usr/bin/google-chrome
🔁 এই path টা আপনি Puppeteer script এ executablePath হিসেবে দিবেন।
🔹 STEP 6: Run Chrome in VNC (if GUI is needed)
export DISPLAY=:1
google-chrome --no-sandbox
❗Always use --no-sandbox when running as root!
✅ Summary Cheat Sheet
| Task | Command |
|---|---|
| Check Chrome | which google-chrome |
| Download Chrome | wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb |
| Install Chrome | sudo apt install ./google-chrome-stable_current_amd64.deb -y |
| Confirm Version | google-chrome --version |
| Chrome Path for Puppeteer | /usr/bin/google-chrome |
| Run in VNC UI | export DISPLAY=:1 && google-chrome --no-sandbox |
🟢 Puppeteer Config (Bonus)
process.env.DISPLAY = ":1"; // for VNC
const browser = await puppeteer.launch({
headless: false,
executablePath: '/usr/bin/google-chrome',
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--window-size=1920,1080'
]
});
ধন্যবাদ ভাই, আপনি অনেক গুরুত্বপূর্ণ লগ শেয়ার করেছেন।
এখানে Chrome এর একাধিক GLX (OpenGL/Graphics) এরর আসছে:
GLX is not present.
eglInitialize OpenGL failed with error EGL_NOT_INITIALIZED
Initialization of all EGL display types failed.
⚠️ সমস্যার কারণ:
VPS এ
GLX(Graphics Library Extension) নেই — যেটা GPU rendering, Chrome UI রেন্ডার করতে দরকার হয়, এমনকি--no-sandboxদিয়েও।
এই সমস্যা প্রায় সব headless VPS এ হয় যেগুলোতে hardware rendering বা virtual GPU configured না থাকে।
✅ ৩টি সমাধান আছে:
✅ SOLUTION 1: Chrome run করার সময় GPU-disable করুন
google-chrome --no-sandbox --disable-gpu --disable-software-rasterizer
➡️ এতে Chrome চেষ্টা করবে GPU ছাড়া রান হতে।
✅ SOLUTION 2: Puppeteer config-এ GPU পুরোপুরি অফ করে দিন
process.env.DISPLAY = ":1";
const browser = await puppeteer.launch({
headless: false,
executablePath: '/usr/bin/google-chrome',
args: [
'--no-sandbox',
'--disable-gpu',
'--disable-software-rasterizer',
'--window-size=1920,1080'
]
});
✅ SOLUTION 3: xserver-xorg-video-dummy দিয়ে Dummy Display Driver ইনস্টল
sudo apt install xserver-xorg-video-dummy -y
⚠️ অনেক VPS-এ GLX ইনস্টল করাও লাগতে পারে, যেমন:
sudo apt install libgl1-mesa-glx libnss3 -y
🧪 টেস্ট করুন:
export DISPLAY=:1
google-chrome --no-sandbox --disable-gpu --disable-software-rasterizer
➡️ এবার যদি Chrome ওপেন হয়, তাহলে আপনি সফল ✅
ভাই, 🎉 অভিনন্দন! আপনি সফলভাবে VPS-এ Google Chrome UI সহ ওপেন করতে পেরেছেন!
এখন Chrome খুলে গেছে, এবং আপনি নিচে এই মেসেজ পাচ্ছেন:
Created TensorFlow Lite XNNPACK delegate for CPU.
Attempting to use a delegate that only supports static-sized tensors...
🔍 এই মেসেজটা আসলে কোনো সমস্যা না ✅
এটা মূলত Google Chrome-এর ভিতরের AI/ML related component থেকে আসছে, যেমন:
- Autofill predictions
- Smart replies
- Translate suggestions
Chrome এ একটা internal lightweight TensorFlow model থাকে। এটা warning-level log, কোনো script crash বা rendering issue না।
✅ এখন আপনার কী বুঝতে হবে:
| বার্তা | সমস্যা? | ব্যাখ্যা |
|---|---|---|
XNNPACK delegate for CPU | ❌ না | Chrome-এর internal TF-lite মডেল |
dynamic-sized tensors warning | ❌ না | শুধু optimization notice |
| ব্রাউজার ওপেন হচ্ছে এবং চলতেছে | ✅ হ্যাঁ | সফলভাবে UI সহ Chrome চালু ✅ |
🔚 এখন আপনি যা করতে পারেন:
1️⃣ Puppeteer বা Playwright স্ক্রিপ্ট চালান এই config-এ:
process.env.DISPLAY = ":1";
const browser = await puppeteer.launch({
headless: false,
executablePath: '/usr/bin/google-chrome',
args: [
'--no-sandbox',
'--disable-gpu',
'--disable-software-rasterizer',
'--window-size=1920,1080'
]
});
2️⃣ স্ক্রিপ্ট চালান VNC এর ভিতর:
export DISPLAY=:1
node index.js
🟢 এবার আপনার bot 100% ঠিকভাবে চলে যাওয়ার কথা —
- Search bar detect হবে
- Click কাজ করবে
- Cookie popup handle হবে
- Post automation smoothly চলবে
বলুন ভাই, এখন আমি আপনার জন্য start-app.sh ও pm2 launcher সাজিয়ে দেই একদম final production ready করে? 😎
📕 Puppeteer Bot Deployment Bible (24/7 System with Full Control)
এই বইয়ে থাকবে:
- ✅ ২৪ ঘণ্টা চালু রাখার সিস্টেম
- ✅ যেকোন সময় যেকোন বট চালু/বন্ধ করার পদ্ধতি
- ✅ লগ দেখা, error বুঝা, output বিশ্লেষণ
- ✅ Crontab দিয়ে অটো চালানোর সিস্টেম
- ✅ প্রতিটা কমান্ডের ব্যাখ্যা ও আউটপুট
🧱 STEP 0: Folder Structure ধরে নিচ্ছি
/root/script1/index.js
/root/script1/start-app.sh
/root/f2fpostingpuppeteer-bot/index.js
/root/f2fpostingpuppeteer-bot/start-app.sh
🧰 STEP 1: Install Xvfb
sudo apt update
sudo apt install -y xvfb
🔍 কেন লাগবে? Puppeteer Headless Chrome চালাতে ডিসপ্লে লাগে — Xvfb সেটা ভার্চুয়ালি দেয়।
📝 STEP 2: start-script1.sh তৈরি
nano /root/script1/start-script1.sh
#!/bin/bash
DISPLAY_NUM=102
export DISPLAY=:$DISPLAY_NUM
pkill -f "Xvfb :$DISPLAY_NUM"
rm -f /tmp/.X${DISPLAY_NUM}-lock /tmp/.X11-unix/X${DISPLAY_NUM}
Xvfb :$DISPLAY_NUM -screen 0 1280x720x24 > /dev/null 2>&1 &
sleep 2
echo "🚀 script1 started at $(date)" >> /root/script1/log.txt
nohup /root/.nvm/versions/node/v18.20.8/bin/node /root/script1/index.js >> /root/script1/log.txt 2>&1 &
chmod +x /root/script1/start-app.sh
📝 STEP 3: start-app.sh তৈরি f2fpostingpuppeteer-bot এর জন্য
nano /root/f2fpostingpuppeteer-bot/start-app.sh
#!/bin/bash
DISPLAY_NUM=103
export DISPLAY=:$DISPLAY_NUM
pkill -f "Xvfb :$DISPLAY_NUM"
rm -f /tmp/.X${DISPLAY_NUM}-lock /tmp/.X11-unix/X${DISPLAY_NUM}
Xvfb :$DISPLAY_NUM -screen 0 1280x720x24 > /dev/null 2>&1 &
sleep 2
echo "🚀 f2fbot started at $(date)" >> /root/f2fpostingpuppeteer-bot/log.txt
nohup /root/.nvm/versions/node/v18.20.8/bin/node /root/f2fpostingpuppeteer-bot/index.js >> /root/f2fpostingpuppeteer-bot/log.txt 2>&1 &
chmod +x /root/f2fpostingpuppeteer-bot/start-app.sh
🧪 STEP 4: Start the Bots
bash /root/script1/start-app.sh
bash /root/f2fpostingpuppeteer-bot/start-app.sh
🔍 STEP 5: Check if Running (24/7 Monitor)
ps aux | grep index.js
✅ দেখাবে:
/root/.nvm/versions/node/v18.20.8/bin/node /root/script1/index.js
/root/.nvm/versions/node/v18.20.8/bin/node /root/f2fpostingpuppeteer-bot/index.js
📺 STEP 6: Live Log
tail -f /root/script1/log.txt
tail -f /root/f2fpostingpuppeteer-bot/log.txt
🛑 STEP 7: বট বন্ধ করার সঠিক উপায়
👉 script1 বন্ধ করতে:
pkill -f /root/script1/index.js
pkill -f "Xvfb :102"
👉 f2fbot বন্ধ করতে:
pkill -f /root/f2fpostingpuppeteer-bot/index.js
pkill -f "Xvfb :103"
👉 সব বন্ধ করতে একসাথে:
pkill -f index.js
pkill -f Xvfb
⏰ STEP 8: ২৪ ঘণ্টা চালানোর জন্য cronjob
crontab -e
👇 যুক্ত করো:
0 12 * * * bash /root/script1/start-script1.sh
0 9 * * * bash /root/f2fpostingpuppeteer-bot/start-app.sh
📌 সার্ভার সময় Dutch টাইম না হলে টাইমজোন ঠিক করো:
sudo timedatectl set-timezone Europe/Amsterdam
🧠 STEP 9: ভুল হলে কি দেখবে?
✅ Success হলে:
ps aux | grep index.js
তুমি দেখবে চলতেছে।
❌ Error হলে:
tail -f /root/script1/log.txt
❌ Error example:
SyntaxError: Unexpected end of JSON input
📒 STEP 10: সারাংশ (Cheat Sheet)
| কাজ | কমান্ড |
|---|---|
| script1 চালানো | bash /root/script1/start-script1.sh |
| f2fbot চালানো | bash /root/f2fpostingpuppeteer-bot/start-app.sh |
| লাইভ লগ | tail -f log.txt |
| script1 বন্ধ | pkill -f /root/script1/index.js && pkill -f "Xvfb :102" |
| f2fbot বন্ধ | pkill -f /root/f2fpostingpuppeteer-bot/index.js && pkill -f "Xvfb :103" |
| সব বন্ধ | pkill -f index.js && pkill -f Xvfb |
| চালু কিনা দেখো | `ps aux |
| প্রতি দিন চালাতে | crontab -e |
💬 এখন তুমি বলতে পারো:
- কোন বট চলছে সেটা চেক করা শিখেছো ✅
- একসাথে বা আলাদা বট বন্ধ করতে পারো ✅
- লগ দেখতেও পারো ✅
- প্রতিদিন চালানোর ব্যবস্থা করেছো ✅
- সব কিছু একদম ক্লিন ✅
চাইলে আমি এখন এগুলোকে PDF করে তোমার নামে ব্র্যান্ডেড ডেভেলপার টিউটোরিয়াল বানিয়ে দিতে পারি 📄
এখন বলো, আর কিসে কনফিউশন? আমি সঙ্গে আছি 🔥
একদম ঠিক ভাই! তুমি যদি দুইটা বটকেই ২৪ ঘণ্টা, ৭ দিন ধরে, সারাদিন চালাতে চাও, তাহলে তোমাকে nohup দিয়ে দুইটাকেই চালাতে হবে, আর crontab বা schedule কিছু লাগবে না।
✅ তোমার চাওয়া: দুইটা bot ২৪/৭ চালুক (script1 ও f2fbot)
এখন আমি তোমাকে একদম স্পষ্টভাবে দুইটা কমান্ড দেখাই—যা দিয়ে তুমি একবার চালালে logout দিলেও, সার্ভার বন্ধ না হলে সারাজীবন চলবে।
✅ script1 চালাতে:
nohup bash /root/script1/start-app.sh > /root/script1/output.log 2>&1 &
✅ f2fpostingpuppeteer-bot চালাতে:
nohup bash /root/f2fpostingpuppeteer-bot/start-app.sh > /root/f2fpostingpuppeteer-bot/output.log 2>&1 &
🔥 ব্যাখ্যা:
| অংশ | কাজ |
|---|---|
nohup | লিনাক্স-এ কমান্ড চলবে background-এ, এমনকি logout দিলে |
bash ...sh | তোমার bash স্ক্রিপ্ট চালায় |
> | আউটপুটকে ফাইল এ রিডাইরেক্ট করে |
2>&1 | error log-ও ওই ফাইলেই যাবে |
& | background এ চালাবে |
👀 চেক করবো চলছে কিনা:
ps aux | grep index.js
দেখাবে দুইটা চলতেছে এমন:
/root/.nvm/versions/node/.../script1/index.js
/root/.nvm/versions/node/.../f2fpostingpuppeteer-bot/index.js
📄 লগ দেখতে চাইলে:
tail -f /root/script1/output.log
tail -f /root/f2fpostingpuppeteer-bot/output.log
🛑 বন্ধ করতে চাইলে:
pkill -f /root/script1/index.js
pkill -f /root/f2fpostingpuppeteer-bot/index.js
pkill -f Xvfb
🔁 সার্ভার রিবুট দিলে আবার চালাতে চাইলে?
🔧 /etc/rc.local বা systemd দিয়ে auto-start করতে পারো (চাইলে আমি সেটা ও বানিয়ে দিচ্ছি)।
🟨 এখন Final Checklist:
| কাজ | কমান্ড |
|---|---|
| script1 চালাও | nohup bash /root/script1/start-script1.sh > /root/script1/output.log 2>&1 & |
| f2fbot চালাও | nohup bash /root/f2fpostingpuppeteer-bot/start-app.sh > /root/f2fpostingpuppeteer-bot/output.log 2>&1 & |
| চলছে কিনা দেখো | `ps aux |
| লগ দেখো | tail -f output.log |
| বন্ধ করো | pkill -f index.js && pkill -f Xvfb |
| সার্ভার রিবুটে চালাতে চাইলে | /etc/rc.local বা systemd use করো |
❤️ এখন তুমি একদম নিজের মতো চালাতে পারবে, বন্ধ করতে পারবে, লগ দেখতে পারবে — যখন খুশি, যেভাবে খুশি।
আরও চাইলে বলে দিও, systemd বা auto-boot setup করেও দিবো।
সব কিছুর মধ্যে তুমি এখন একদম প্রো লেভেলে আছো ভাই! ✅💪