================================================================================
  SERVER BACKUP MASTER - FULL SETUP & CRON JOB GUIDE
  (Multi-Server 5TB Google Drive & Telegram Automated Backup Suite)
================================================================================

এই ফাইলে সম্পূর্ণ সিস্টেমটি সি-প্যানেলে হোস্ট করা, গুগল ড্রাইভ (Gemini 5TB) 
কানেক্ট করা, টেলিগ্রাম সেট করা এবং প্রতিদিন রাত ১২:০০ টায় অটোমেটিক ব্যাকআপের 
জন্য cPanel Cron Job সেটআপ করার সম্পূর্ণ গাইড দেওয়া হলো।

--------------------------------------------------------------------------------
সূচিপত্র (Table of Contents):
  ১. সি-প্যানেলে ফাইল আপলোড ও প্রাথমিক সেটআপ
  ২. ড্যাশবোর্ডে লগইন ও সিকিউরিটি
  ৩. Google Drive (Gemini 18 Months 5TB) কানেক্ট করার নিয়ম
  ৪. Telegram Bot ও Chat ID কনফিগারেশন
  ৫. রিমোট সার্ভার ম্যানেজমেন্ট (Trex, Spinosaurus ও নতুন সার্ভার)
  ৬. cPanel Cron Jobs সেটআপ (প্রতিদিন রাত ১২:০০ টায় অটো-ব্যাকআপ)
  ৭. যে কোনো cPanel-এ ডাটাবেজ ও পারমিশন রিস্টোর করার নিয়ম
  ৮. সাধারণ সমস্যা ও সমাধান (Troubleshooting)
--------------------------------------------------------------------------------


================================================================================
১. সি-প্যানেলে ফাইল আপলোড ও প্রাথমিক সেটআপ
================================================================================
১. আপনার কম্পিউটারের `cpanel_auto_backup_panel` ফোল্ডারটিকে জিপ (ZIP) করুন।
২. আপনার cPanel হোস্টিং অ্যাকাউন্টে লগইন করে File Manager-এ যান।
৩. `public_html/` ফোল্ডারের ভেতরে অথবা কোনো সাবডোমেইনে (যেমন: `backup.yourdomain.com`) 
   ফাইলটি আপলোড করে Extract করুন।
   উদাহরণস্বরূপ ফাইল লোকেশন:
   `/home/YOUR_USER/public_html/backup/`

৪. ফাইল পারমিশন চেক করুন:
   - ফোল্ডার পারমিশন: 755
   - ফাইল পারমিশন: 644
   - `backups/` ফোল্ডার ও `config.json` ফাইলটিতে Write Permission (755/666) নিশ্চিত করুন।


================================================================================
২. ড্যাশবোর্ডে লগইন, থিম ও টেলিগ্রাম সিকিউরিটি অ্যালার্ট
================================================================================
১. আপনার ব্রাউজারে লিংক ওপেন করুন:
   https://yourdomain.com/backup/
   (অথবা আপনার সাবডোমেইন লিংক)

২. অ্যাডমিন পাসওয়ার্ড সিকিউরিটি (পাসওয়ার্ড কোথাও শো করবে না):
   - লগইন পেজে বা অ্যাডমিন সেটিংসে কোনো পাসওয়ার্ড উন্মুক্ত (Plain Hint) দেওয়া থাকবে না।
   - ডিফল্ট প্রাথমিক পাসওয়ার্ড: admin123456
   - লগইন করার পর উপরে ডানপাশে "Global Settings"-এ গিয়ে "New Administrative Password" 
     বক্সে আপনার নতুন সিকিউর পাসওয়ার্ড লিখে "Save Settings"-এ ক্লিক করে বদলে নিন।

৩. 🛡️ টেলিগ্রাম লগইন অ্যালার্ট (ভুল পাসওয়ার্ড ও সফল লগইন ট্র্যাকিং):
   - যদি কেউ ভুল পাসওয়ার্ড দিয়ে লগইন করার চেষ্টা করে:
     সাথে সাথে তার আইপি অ্যাড্রেস (IP Address), ডিভাইসের ধরণ (Mobile/Desktop/Tablet), 
     অপারেটিং সিস্টেম (Windows/Android/iOS/Linux), ব্রাউজার এবং সে যে পাসওয়ার্ড ট্রাই করেছে 
     তা সহ একটি লাল 🚨 FAILED LOGIN ALERT আপনার টেলিগ্রামে চলে যাবে!
   - যদি সঠিক পাসওয়ার্ড দিয়ে অ্যাডমিন লগইন করা হয়:
     সাথে সাথে আইপি ও ডিভাইস সহ একটি সবুজ ✅ ADMIN LOGIN ALERT আপনার টেলিগ্রামে নোটিফিকেশন যাবে।

৪. 🌓 ডার্ক ও হোয়াইট (লাইট) মোড সুইচ:
   - লগইন পেজে এবং ড্যাশবোর্ডের উপরে নেভবারে 🌙 Dark / ☀️ White মোড টগল বাটন রয়েছে।
   - ১-ক্লিকেই ডার্ক থেকে ঝকঝকে হোয়াইট মোডে পরিবর্তন করা যাবে এবং আপনার ব্রাউজারে 
     পছন্দসই মোডটি স্বয়ংক্রিয়ভাবে সেভ থাকবে।



================================================================================
৩. Google Drive (Gemini 18 Months 5TB) কানেক্ট করার নিয়ম
================================================================================
[গুরুত্বপূর্ণ]: আপনার পার্সোনাল জিমেইল অ্যাকাউন্টে Gemini 18 Months অফারের 5TB 
ড্রাইভ রয়েছে। কোনো পেইড ক্লাউড লাগবে না, সরাসরি আপনার এই জিমেইলের ড্রাইভে সমস্ত 
ডাটাবেজ ও সার্ভার ফাইল জমা হবে।

একবার লগইন করলেই আজীবন স্থায়ী (Permanent):
সিস্টেমটিতে Google Offline Consent সেট করা আছে। আপনি একবার সাইন-ইন করে 'Allow' 
করলে স্বয়ংক্রিয়ভাবে পার্মানেন্ট Refresh Token সেভ হয়ে থাকবে। যতদিন না আপনি নিজে 
Logout/Disconnect করছেন, ততদিন প্রতিদিন রাত ১২টায় অটোমেটিক ড্রাইভ আপডেট হবে।

কানেক্ট করার পদ্ধতি (উপায় ১ - ১-ক্লিক Google Sign-In):
------------------------------------------------------
১. ড্যাশবোর্ডের উপরে "➕ Add Google Drive" বাটনে ক্লিক করুন।
২. আপনার ওই Gemini 5TB জিমেইল দিয়ে https://console.cloud.google.com এ যান (এটি ফ্রি):
   - "APIs & Services" -> "Enabled APIs" থেকে "Google Drive API" Enable করুন।
   - "Credentials" -> "Create Credentials" -> "OAuth Client ID" (Web application) সিলেক্ট করুন।
   - পপআপে দেখানো "Authorized Redirect URI" টি পেস্ট করে Save করুন।
   - প্রাপ্ত Client ID এবং Client Secret আমাদের প্যানেলে ইনপুট করুন।
৩. এবার "Sign in with Google" বাটনে ক্লিক করুন।
৪. আপনার Gemini 5TB জিমেইল অ্যাকাউন্টটি সিলেক্ট করে "Allow" চাপুন।
৫. সাথে সাথে রিডাইরেক্ট হয়ে ড্যাশবোর্ডে "Google Drive 5TB Connected Successfully" শো করবে।

বিকল্প পদ্ধতি (উপায় ২ - কনসোলে না গিয়ে Direct Refresh Token):
--------------------------------------------------------------
১. https://developers.google.com/oauthplayground এ যান।
২. Drive API v3 সিলেক্ট করে আপনার Gemini 5TB জিমেইল দিয়ে সাইন-ইন করে কোড এক্সচেঞ্জ করুন।
৩. প্রাপ্ত Refresh Token টি কপি করে আমাদের প্যানেলের "⚡ Or Connect Directly with Refresh Token" 
   বক্সে পেস্ট করে "Connect Direct Token" চাপুন।


================================================================================
৪. Telegram Bot ও Chat ID কনফিগারেশন
================================================================================
প্রতিটি cPanel অ্যাকাউন্টের ডাটাবেজ, পারমিশন ফাইল ও গ্রান্টস ফাইল দিয়ে তৈরি 
`<user>_databases.tar.gz` সরাসরি টেলিগ্রামে পাওয়ার জন্য:

১. টেলিগ্রামে @BotFather এ গিয়ে `/newbot` লিখে একটি নতুন বট তৈরি করুন এবং Bot Token কপি করুন।
২. টেলিগ্রামে @userinfobot এ গিয়ে নিজের Chat ID (যেমন: 123456789) জেনে নিন।
   (চ্যানেলে পাঠাতে চাইলে চ্যানেল ইউজারনেম যেমন: `@my_backup_channel` বা আইডি দিন এবং বটকে অ্যাডমিন বানান)।
৩. প্যানেলের "Global Settings" এ গিয়ে:
   - Telegram Delivery: Enabled (টিক দিন)
   - Telegram Bot Token: আপনার বটের টোকেন দিন
   - Telegram Chat ID: আপনার চ্যাট আইডি দিন
৪. "Test Telegram" বাটনে চাপ দিয়ে টেস্ট মেসেজ পান কিনা পরীক্ষা করুন।


================================================================================
৫. রিমোট সার্ভার ম্যানেজমেন্ট (Trex, Spinosaurus ও অন্যান্য)
================================================================================
সিস্টেমটিতে আপনার দেওয়া ২টি সার্ভার ইতিমধ্যেই রেডি করা আছে:
  ১. Trex Rescue Server (Primary):
     - Host: trex.infernodns.com (Port: 22)
     - Mode: Rescue Mode (/mnt/rescue chroot)
     - Subfolder: Trex_Rescue_Backups

  ২. Spinosaurus Destination Server:
     - Host: 141.95.34.163 (Port: 2567)
     - Mode: Normal Live Server
     - Subfolder: Spinosaurus_Live_Backups

নতুন সার্ভার যোগ করার নিয়ম:
- ড্যাশবোর্ডে "+ Add Server" বাটনে ক্লিক করুন।
- সার্ভারের IP বা Hostname, SSH Port, Root Username ও Root Password দিন।
- যদি সার্ভার রেসকিউ মোডে থাকে তবে "Server is in Rescue Mode" টিক দিন।
- "Dedicated Google Drive Subfolder" এ ফোল্ডারের নাম দিন (যেমন: Server_USA_Backups)।
- "Save Server" এ চাপ দিন। সাথে সাথে ড্যাশবোর্ডে সার্ভারটির লাইভ সিপিইউ, র‍্যাম ও স্টোরেজ লোড শো করবে।


================================================================================
৬. cPanel Cron Jobs সেটআপ (প্রতিদিন রাত ১২:০০ টায় অটো-ব্যাকআপ)
================================================================================
প্রতিদিন রাত ১২:০০ টায় সমস্ত সার্ভারের ফুল ডাটাবেজ ব্যাকআপ, টেলিগ্রামে পাঠানো 
এবং 5TB গুগল ড্রাইভে আপলোড করার জন্য সিপ্যানেলে ক্রন জব সেট করতে হবে:

ধাপসমূহ:
১. আপনার cPanel-এ লগইন করুন।
২. "Advanced" সেকশনের অধীনে "Cron Jobs" আইকনে ক্লিক করুন।
3. "Add New Cron Job" ফর্মে নিচের মানগুলো দিন:
   - Common Settings: Once a day (0 0 * * *)
   - Minute: 0
   - Hour: 0
   - Day: *
   - Month: *
   - Weekday: *

৪. "Command" ঘরে নিচের ৩টি অপশনের যেকোনো একটি কমান্ড ব্যবহার করুন:

   অপশন A: PHP CLI কমান্ড (সর্বাধিক প্রস্তাবিত ও দ্রুততম):
   --------------------------------------------------------
   /usr/bin/php -q /home/YOUR_CPANEL_USER/public_html/backup/backup_cron.php >/dev/null 2>&1

   (নোট: `YOUR_CPANEL_USER` এর জায়গায় আপনার cPanel এর ইউজারনেম এবং `backup` এর জায়গায় 
    আপনার সঠিক ফোল্ডার পাথ দিন)।

   
   অপশন B: cURL Web Cron কমান্ড (যদি সিপ্যানেলে PHP CLI পারমিশন লিমিটেড থাকে):
   ---------------------------------------------------------------------------
   curl -s "https://yourdomain.com/backup/backup_cron.php?token=trex_sec_99a8b7c6d5e4f321" >/dev/null 2>&1


   অপশন C: Wget Web Cron কমান্ড:
   ------------------------------
   wget -q -O - "https://yourdomain.com/backup/backup_cron.php?token=trex_sec_99a8b7c6d5e4f321" >/dev/null 2>&1


৫. "Add New Cron Job" বাটনে ক্লিক করুন।
   ব্যাস! ক্রন সেট হয়ে গেল। প্রতিদিন রাত ১২:০০ টায় স্বয়ংক্রিয়ভাবে ব্যাকআপ রান হবে।

ক্রন লগের হিস্ট্রি দেখার উপায়:
ব্যাকআপ ঠিকঠাক চলছে কিনা তা প্যানেল ফোল্ডারের `cron.log` ফাইলটিতে সব সময়ের জন্য 
রেকর্ড থাকে।


================================================================================
৭. যে কোনো cPanel-এ ডাটাবেজ ও পারমিশন রিস্টোর করার নিয়ম
================================================================================
ভবিষ্যতে কোনো cPanel সার্ভার ক্র্যাশ করলে বা নতুন cPanel হোস্টিংয়ে ইউজারের সমস্ত 
ডাটাবেজ রিস্টোর করতে:

পদ্ধতি ১: Web Restore Center দিয়ে (ব্রাউজার থেকে):
-------------------------------------------------
১. প্যানেলের নেভবার থেকে "Restore Center" এ ক্লিক করুন (URL: restore_to_cpanel.php)।
২. টেলিগ্রাম থেকে পাওয়া `<user>_databases.tar.gz` ফাইলটি সিলেক্ট করে আপলোড করুন।
৩. "Restore to cPanel" এ ক্লিক করলেই স্বয়ংক্রিয়ভাবে সমস্ত MySQL ও PostgreSQL ডাটাবেজ 
   ইম্পোর্ট হবে, ইউজার প্রিভিলেজ সেট হবে এবং cPanel setupdbmap রান হবে!

পদ্ধতি ২: টার্মিনাল / SSH CLI দিয়ে রিস্টোর:
------------------------------------------
যেকোনো cPanel সার্ভারে রুট হিসেবে লগইন করে কমান্ড দিন:

# নির্দিষ্ট কোনো ইউজারের টেলিগ্রাম ফাইল রিস্টোর করতে:
python3 restore_to_cpanel.py --archive username_databases.tar.gz

# গুগল ড্রাইভের ফুল সার্ভার মাস্টার মিরর থেকে সব অ্যাকাউন্ট একসাথে রিস্টোর করতে:
python3 restore_to_cpanel.py --archive backup_YYYY-MM-DD_full_server_mirror.tar.gz --all

রিস্টোর স্ক্রিপ্টটি যা যা করে:
১. cPanel অ্যাকাউন্টের মালিকানা ও প্রিভিলেজ রিকনস্ট্রাক্ট করে।
২. সমস্ত MySQL ও PostgreSQL ডাটাবেজ তৈরি করে `.sql.gz` ডাম্প ইম্পোর্ট করে।
৩. cPanel-এর `/usr/local/cpanel/bin/setupdbmap <user>` এক্সিকিউট করে, ফলে ইউজারের 
   cPanel এবং phpMyAdmin-এ সাথে সাথে ডাটাবেজগুলো লাইভ হয়ে যায়।


================================================================================
৮. সাধারণ সমস্যা ও সমাধান (Troubleshooting)
================================================================================
প্রশ্ন ১: ক্রন জব রান হচ্ছে কিনা কিভাবে বুঝবো?
উত্তর: প্যানেল ডিরেক্টরির `cron.log` ফাইলটি চেক করুন। সেখানে প্রতি রানের শুরু, 
প্রতিটি সার্ভারের ব্যাকআপ স্ট্যাটাস ও সমাপ্তির সময় বিস্তারিত লেখা থাকবে।

প্রশ্ন ২: গুগল ড্রাইভ ডিসকানেক্ট হয়ে যাওয়ার কোনো ভয় আছে কি?
উত্তর: না। Offline Access ও Refresh Token ব্যবহার করায় গুগল ড্রাইভ আজীবন কানেক্টেড 
থাকবে। শুধুমাত্র যদি আপনি নিজে পাসওয়ার্ড পরিবর্তন করেন অথবা প্যানেলের "Disconnect" 
বাটনে চাপেন তখনই ডিসকানেক্ট হবে।

প্রশ্ন ৩: বড় ডাটাবেজের ক্ষেত্রে ক্রন টাইমআউট হবে কি?
উত্তর: না। `backup_cron.php` ফাইলে `set_time_limit(0)` এবং মেমোরি ১ গিগাবাইট সেট করা আছে, 
যার ফলে যত বড় ডাটাবেজই হোক না কেন নির্বিঘ্নে ব্যাকআপ ও আপলোড সম্পন্ন হবে।
================================================================================
