PasarguardBotv3.1.0
پنل ادمین

بکاپ و ریستور

گرفتن بکاپ خودکار از ربات و ریستور کامل آن روی سرور جدید با phpMyAdmin — قدم‌به‌قدم با تصویر

ربات می‌تواند به‌صورت خودکار یا دستی از دیتابیس و فایل .env بکاپ بگیرد و فایل ZIP را در کانال بکاپ شما بفرستد. با همین فایل می‌توانید ربات را روی یک سرور جدید دقیقاً به همان حالت قبلی برگردانید.

خلاصهٔ ریستور در یک نگاه

نصب ربات روی سرور جدید (با همان توکن) ← ورود به phpMyAdmin با یوزر root ← Drop کردن همهٔ جدول‌های pasarguardbot ← Import فایل database.sql ← اجرای pasarguardbot update ← بررسی لاگ با pasarguardbot logs


گرفتن بکاپ

پیش‌نیاز: کانال بکاپ

ابتدا از پنل مدیریت → 📝 مدیریت لاگ‌ها کانال 🗄 بکاپ ربات را ست کنید (مدیریت لاگ‌ها). بدون این کانال بکاپ ارسال نمی‌شود و پیام «❌ کانال لاگ بکاپ تنظیم نشده است» را می‌بینید.

کانال بکاپ باید خصوصی باشد

داخل فایل بکاپ، .env شما هست که شامل توکن ربات و رمزهای دیتابیس است. کانال بکاپ را حتماً خصوصی نگه دارید و کسی را عضو نکنید.

منوی بکاپ

از پنل مدیریت → 📦 بکاپ ربات:

دکمهکار
🚀 بکاپ همین الانهمان لحظه بکاپ می‌گیرد و به کانال بکاپ می‌فرستد
⚙️ تنظیم فاصله (⏱ فاصله: هر N ساعت)فاصلهٔ بکاپ خودکار را به ساعت بفرستید (فقط عدد، مثلاً 24). عدد 0 بکاپ خودکار را خاموش می‌کند (⏸ خودکار خاموش)
🔙 بازگشت به پنلبازگشت
  • مقدار پیش‌فرض بکاپ خودکار هر ۲۴ ساعت است و بعد از تغییر بلافاصله زمان‌بندی می‌شود.
  • از پنل تحت وب ← ابزارها ← بکاپ دیتابیس هم می‌توانید بکاپ را به چت خودتان یا کانال لاگ بفرستید.
  • بکاپ فقط برای دیتابیس MariaDB/MySQL پشتیبانی می‌شود (نصب پیش‌فرض همین است).

داخل فایل بکاپ چیست؟

نام فایل شبیه pasarguardbot-backup-YYYYMMDD-HHMMSS.zip است و داخلش:

database.sql — دامپ کامل دیتابیس (همهٔ کاربران، سرویس‌ها، پنل‌ها، تنظیمات، متن‌ها و…)
.env — تنظیمات نصب قبلی (توکن، رمزهای دیتابیس و…)

داخل بکاپ نیست: سشن تلگرام، داده‌های Redis، آیکون‌های آپلودی وب‌اپ (data/pwa_icons)، گواهی‌های SSL و خود پنل پاسارگارد.

کلیدها داخل دیتابیس هستند

در نسخه‌های جدید، crypto_key (رمزنگاری پسورد پنل‌ها و نمایندگی‌ها) و webhook_secret (هدر وب‌هوک پنل) داخل جدول secrets دیتابیس ذخیره می‌شوند؛ پس با ایمپورت database.sql خودکار برمی‌گردند و وب‌هوک پنل‌ها هم بدون تغییر کار می‌کند.


ریستور بکاپ — قدم‌به‌قدم

نصب ربات روی سرور جدید

ربات را طبق راهنمای نصب روی سرور جدید نصب کنید و همان BOT_TOKEN و ADMIN_ID قبلی را وارد کنید. ربات با آخرین نسخه نصب می‌شود.

bash <(curl -fsSL https://raw.githubusercontent.com/AmirKenzo/PasarguardBot/main/scripts/pasarguardbot.sh)

برداشتن یوزر و پسورد دیتابیس

فایل .env سرور جدید را باز کنید:

pasarguardbot edit-env

مقدار این متغیر را یک جا کپی کنید (بعد بدون ذخیره تغییر، از ویرایشگر خارج شوید):

MARIADB_ROOT_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

اگر ویرایشگر پرسید Restart the bot? (Y/n)، چون چیزی عوض نکرده‌اید می‌توانید n بزنید.

ورود به phpMyAdmin

در مرورگر باز کنید (به‌جای IP، آیپی سرور خودتان یا دامنه را بگذارید):

http://IP_SERVER:6163
  • Username: root
  • Password: مقدار MARIADB_ROOT_PASSWORD که کپی کردید
ورود به phpMyAdmin با یوزر root

پاک کردن همهٔ جدول‌های فعلی (Drop)

نصب تازه جدول‌های خالی ساخته؛ باید قبل از ایمپورت کاملاً پاک شوند:

  1. از ستون سمت چپ دیتابیس pasarguardbot را انتخاب کنید.
  2. پایین لیست جدول‌ها تیک Check all را بزنید تا همهٔ جدول‌ها انتخاب شوند.
  3. از لیست کشویی With selected: گزینهٔ Drop را انتخاب کنید.
انتخاب همهٔ جدول‌ها و Drop
  1. صفحهٔ تأیید باز می‌شود؛ Yes را بزنید. بعد از این مرحله هیچ جدولی نباید در دیتابیس باقی بماند.
تأیید Drop همهٔ جدول‌ها

ایمپورت فایل database.sql

  1. فایل ZIP بکاپ را از کانال دانلود و Extract کنید تا به database.sql برسید.
  2. در phpMyAdmin (دیتابیس pasarguardbot انتخاب باشد) تب Import را باز کنید.
  3. روی Choose File بزنید و فایل database.sql را انتخاب کنید.
  4. بقیهٔ تنظیمات را دست نزنید و پایین صفحه Import را بزنید.
تب Import و انتخاب فایل database.sql

بعد از چند ثانیه (برای بکاپ‌های بزرگ چند دقیقه) پیام سبز موفقیت را می‌بینید:

پیام موفقیت Import

فایل خیلی بزرگ است؟

phpMyAdmin در نصب Docker تا 256 مگابایت فایل قبول می‌کند. اگر بکاپ بزرگ‌تر بود، فایل را روی سرور آپلود کنید و از ترمینال ایمپورت کنید:

cd /opt/pasarguardbot && source .env
docker exec -i pasarguardbot-mariadb mariadb -uroot -p"$MARIADB_ROOT_PASSWORD" < /root/database.sql

بررسی اطلاعات ریستورشده

دوباره روی دیتابیس pasarguardbot بزنید. باید جدول‌های ربات شما با اطلاعات قبلی برگشته باشند؛ مثلاً ستون Rows جدول user را با تعداد کاربران ربات قبلی‌تان مقایسه کنید.

بررسی تعداد کاربران و جدول secrets

روی جدول secrets هم بزنید؛ باید دو ردیف crypto_key و webhook_secret داشته باشد:

ردیف‌های جدول secrets

اگر جدول secrets وجود نداشت یا خالی بود، حتماً بخش ربات‌های قدیمی (نسخه 2.1.4 و پایین‌تر) را انجام دهید.

آپدیت و مایگریشن خودکار

بعد از ایمپورت حتماً این دستور را بزنید:

pasarguardbot update

اگر بکاپ از نسخهٔ قدیمی‌تر ربات باشد، ساختار دیتابیس خودکار به آخرین نسخه مایگریت می‌شود و ربات با دیتابیس ریستورشده و کلیدهای درست از نو بالا می‌آید. اگر این مرحله را انجام ندهید با ارور و مشکل روبه‌رو می‌شوید.

بررسی لاگ ربات

pasarguardbot logs

مطمئن شوید ربات بدون ارور اجرا شده است (برای خروج Ctrl+C). بعد در تلگرام:

  • /start و /panel را بزنید و ببینید پنل مدیریت باز می‌شود.
  • از 📚 منوی پنل‌ها اتصال پنل‌ها را چک کنید.
  • اگر نمایندگی دارید، نمایش رمز ورود یکی از نمایندگی‌ها را تست کنید.
  • اگر IP یا دامنهٔ سرور عوض شده، آدرس وب‌هوک را در پنل پاسارگارد به آدرس جدید تغییر دهید (هدر x-webhook-secret همان قبلی است) — اطلاع‌رسانی حجم و زمان.

ربات‌های قدیمی (نسخه 2.1.4 و پایین‌تر)

خیلی مهم برای بکاپ‌های قدیمی

در نسخه‌های 2.1.4 و پایین‌تر، کلیدهای CRYPTO_KEY و WEBHOOK_SECRET داخل فایل .env بودند، نه دیتابیس. اگر این مرحله را انجام ندهید پنل‌ها به ربات وصل نمی‌شوند و نمایندگی‌ها کار نمی‌کنند.

چطور بفهمم بکاپم قدیمی است؟ داخل فایل database.sql بکاپ کلمهٔ secrets را جستجو کنید. اگر چیزی پیدا نشد — یا بعد از ریستور در phpMyAdmin جدول secrets نبود/خالی بود — بکاپ شما قدیمی است.

راه‌حل:

  1. فایل .env داخل ZIP بکاپ را باز کنید و مقدار CRYPTO_KEY و WEBHOOK_SECRET را پیدا کنید.

  2. روی سرور جدید .env را باز کنید:

    pasarguardbot edit-env
  3. این دو خط را به انتهای فایل اضافه کنید و به‌جای KENZO مقدار دقیق همان دو متغیر از .env بکاپ خودتان را بگذارید:

    WEBHOOK_SECRET=KENZO
    CRYPTO_KEY=KENZO
  4. ذخیره کنید و بعد دستور آپدیت را بزنید تا مایگریشن، کلیدها را از .env به جدول secrets منتقل کند:

    pasarguardbot update
  5. با pasarguardbot logs مطمئن شوید ربات بدون خطا بالا آمده است.

اگر نسخهٔ ربات قبلی شما بالاتر از 2.1.4 بوده، هیچ تغییری در .env لازم نیست؛ همه‌چیز داخل database.sql است.


چک‌لیست سریع ریستور

  1. نصب تازهٔ ربات روی سرور جدید با همان توکن
  2. pasarguardbot edit-env و کپی MARIADB_ROOT_PASSWORD
  3. ورود به http://IP:6163 با یوزر root
  4. دیتابیس pasarguardbot ← Check all ← With selected: Drop ← Yes
  5. تب Import ← انتخاب database.sql ← Import
  6. بررسی تعداد کاربران و جدول secrets
  7. (فقط بکاپ قدیمی) اضافه کردن CRYPTO_KEY و WEBHOOK_SECRET به .env
  8. pasarguardbot update
  9. pasarguardbot logs و تست ربات

اشتباهات رایج

اشتباهنتیجه
ایمپورت بدون Drop کردن جدول‌های نصب تازهخطای تداخل جدول یا ایمپورت ناقص
فراموش کردن pasarguardbot update بعد از ایمپورتدیتابیس مایگریت نمی‌شود و ربات ارور می‌دهد
بکاپ قدیمی (≤ 2.1.4) بدون اضافه کردن CRYPTO_KEY و WEBHOOK_SECRETپنل‌ها وصل نمی‌شوند، نمایندگی‌ها کار نمی‌کنند
جایگزین کردن کل .env قدیمی روی سرور جدیدرمز دیتابیس و آدرس‌ها با نصب جدید نمی‌خواند و ربات بالا نمی‌آید
عمومی بودن کانال بکاپلو رفتن توکن ربات و رمزهای دیتابیس
ایمپورت قبل از نصب رباتphpMyAdmin و دیتابیس هنوز وجود ندارند

On this page