بکاپ و ریستور
گرفتن بکاپ خودکار از ربات و ریستور کامل آن روی سرور جدید با 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 است و داخلش:
داخل بکاپ نیست: سشن تلگرام، دادههای 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که کپی کردید
پاک کردن همهٔ جدولهای فعلی (Drop)
نصب تازه جدولهای خالی ساخته؛ باید قبل از ایمپورت کاملاً پاک شوند:
- از ستون سمت چپ دیتابیس
pasarguardbotرا انتخاب کنید. - پایین لیست جدولها تیک Check all را بزنید تا همهٔ جدولها انتخاب شوند.
- از لیست کشویی With selected: گزینهٔ Drop را انتخاب کنید.
- صفحهٔ تأیید باز میشود؛ Yes را بزنید. بعد از این مرحله هیچ جدولی نباید در دیتابیس باقی بماند.
ایمپورت فایل database.sql
- فایل ZIP بکاپ را از کانال دانلود و Extract کنید تا به
database.sqlبرسید. - در phpMyAdmin (دیتابیس
pasarguardbotانتخاب باشد) تب Import را باز کنید. - روی Choose File بزنید و فایل
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 هم بزنید؛ باید دو ردیف crypto_key و webhook_secret داشته باشد:
اگر جدول 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 نبود/خالی بود — بکاپ شما قدیمی است.
راهحل:
-
فایل
.envداخل ZIP بکاپ را باز کنید و مقدارCRYPTO_KEYوWEBHOOK_SECRETرا پیدا کنید. -
روی سرور جدید
.envرا باز کنید:pasarguardbot edit-env -
این دو خط را به انتهای فایل اضافه کنید و بهجای
KENZOمقدار دقیق همان دو متغیر از.envبکاپ خودتان را بگذارید:WEBHOOK_SECRET=KENZO CRYPTO_KEY=KENZO -
ذخیره کنید و بعد دستور آپدیت را بزنید تا مایگریشن، کلیدها را از
.envبه جدولsecretsمنتقل کند:pasarguardbot update -
با
pasarguardbot logsمطمئن شوید ربات بدون خطا بالا آمده است.
اگر نسخهٔ ربات قبلی شما بالاتر از 2.1.4 بوده، هیچ تغییری در .env لازم نیست؛ همهچیز داخل database.sql است.
چکلیست سریع ریستور
- نصب تازهٔ ربات روی سرور جدید با همان توکن
pasarguardbot edit-envو کپیMARIADB_ROOT_PASSWORD- ورود به
http://IP:6163با یوزرroot - دیتابیس
pasarguardbot← Check all ← With selected: Drop ← Yes - تب Import ← انتخاب
database.sql← Import - بررسی تعداد کاربران و جدول
secrets - (فقط بکاپ قدیمی) اضافه کردن
CRYPTO_KEYوWEBHOOK_SECRETبه.env pasarguardbot updatepasarguardbot logsو تست ربات
اشتباهات رایج
| اشتباه | نتیجه |
|---|---|
| ایمپورت بدون Drop کردن جدولهای نصب تازه | خطای تداخل جدول یا ایمپورت ناقص |
فراموش کردن pasarguardbot update بعد از ایمپورت | دیتابیس مایگریت نمیشود و ربات ارور میدهد |
بکاپ قدیمی (≤ 2.1.4) بدون اضافه کردن CRYPTO_KEY و WEBHOOK_SECRET | پنلها وصل نمیشوند، نمایندگیها کار نمیکنند |
جایگزین کردن کل .env قدیمی روی سرور جدید | رمز دیتابیس و آدرسها با نصب جدید نمیخواند و ربات بالا نمیآید |
| عمومی بودن کانال بکاپ | لو رفتن توکن ربات و رمزهای دیتابیس |
| ایمپورت قبل از نصب ربات | phpMyAdmin و دیتابیس هنوز وجود ندارند |