نصب
نصب مرحلهبهمرحله PasarguardBot روی سرور لینوکس با اسکریپت مدیریت
این صفحه نصب ربات را از صفر تا اولین /start توضیح میدهد. نصب کامل حدود ۵ تا ۱۰ دقیقه طول میکشد.
پیشنیازها
| مورد | توضیح |
|---|---|
| سرور لینوکس | Ubuntu / Debian پیشنهادی است. اسکریپت روی Fedora، CentOS/RHEL، Arch، openSUSE و Alpine هم کار میکند (روی سیستمهای تستنشده هشدار میدهد) |
| معماری | amd64 یا arm64 (ایمیجها فقط برای این دو ساخته میشوند) |
| دسترسی | root یا کاربری با sudo (اسکریپت خودش با sudo دوباره اجرا میشود) |
| فضای دیسک | حداقل ۲ گیگابایت خالی |
| پورتهای آزاد | 6160 تا 6163 — جزئیات در پورتها |
| توکن ربات | از @BotFather |
| آیدی عددی ادمین | آیدی عددی اکانت تلگرام خودتان (مثلاً با رباتهای UserInfo) |
| پنل پاسارگارد | آدرس و یوزر/رمز ادمین (یا API Key) پنل — بعد از نصب از داخل ربات اضافه میشود |
Docker لازم نیست از قبل نصب باشد
اگر Docker روی سرور نباشد، اسکریپت خودش آن را نصب میکند (از get.docker.com یا پکیجمنیجر سیستم).
اجرای اسکریپت
روی سرور اجرا کنید:
bash <(curl -fsSL https://raw.githubusercontent.com/AmirKenzo/PasarguardBot/main/scripts/pasarguardbot.sh)اسکریپت این کارها را خودکار انجام میدهد:
- اگر root نباشید، خودش با
sudoدوباره اجرا میشود - سیستمعامل و پکیجمنیجر را تشخیص میدهد (
apt-get،dnf،yum،pacman،zypper،apk) - ابزارهای پایه (
curl،openssl،nano، …) را نصب میکند - دستور
pasarguardbotرا ثبت میکند تا بعداً فقط با همین یک کلمه منو را باز کنید
دفعات بعد کافی است بزنید:
pasarguardbotمنوی مدیریت باز میشود:
PasarguardBot — manager v1.3.2 Manager script : v1.3.2 Host OS : Ubuntu 24.04 LTS ● Status: Not installed ┌────────────────────────────────────────┐ │ 1) Install bot │ │ 2) Uninstall bot │ │ 3) Update bot │ │ 4) View logs │ │ 5) Edit .env file │ │ 6) Edit docker-compose.yml │ │ 7) Full restart │ │ 8) Service status │ │ 9) Show webhook & URLs │ │ 10) Update manager script │ │ 11) Fix Docker network │ │ 12) Get SSL certificate (AutoSSL) │ │ 0) Exit │ └────────────────────────────────────────┘ Select an option:
برای نصب، گزینهٔ 1 را بزنید. توضیح همهٔ گزینهها در منوی مدیریت سرور است.
مراحل نصب
انتخاب حالت نصب
Install mode 1) Docker (full stack — Redis/MariaDB/phpMyAdmin/bot in containers) 2) Native — temporarily disabled, use Docker for now 0) Cancel Choice:
گزینهٔ 1 (Docker) را بزنید. ربات، دیتابیس MariaDB، Redis و phpMyAdmin هر کدام در یک کانتینر جدا بالا میآیند.
نصب Native فعلاً غیرفعال است
گزینهٔ 2 در حال حاضر غیرفعال است و با انتخابش فقط پیام «Native install is temporarily disabled — please use Docker (option 1).» نمایش داده میشود. از Docker استفاده کنید.
انتخاب برنچ
Select install branch 1) main (recommended — latest stable) 2) dev (testing only — may be unstable) 0) Cancel Choice [1]:
| انتخاب | معنی |
|---|---|
Enter یا 1 | برنچ main — نسخهٔ پایدار (پیشنهادی برای سرور اصلی) |
2 | برنچ dev — آخرین تغییرات، فقط برای تست؛ ممکن است ناپایدار باشد |
0 | انصراف |
برنچ انتخابی ذخیره میشود و در بروزرسانیهای بعدی بهعنوان «Last used branch» پیشنهاد داده میشود.
بررسیهای خودکار
اسکریپت قبل از هر کاری این موارد را چک میکند:
- نصب قبلی: اگر ربات قبلاً نصب شده باشد میپرسد
Continue (will keep existing .env and data)? (y/N):— باyادامه میدهد و.envو دیتای قبلی دست نمیخورد. - فضای دیسک: حداقل ۲۰۴۸ مگابایت.
- Docker: اگر نصب نباشد نصبش میکند و تا ۳۰ ثانیه منتظر بالا آمدن سرویس Docker میماند.
- پورتها:
6160،6161،6162،6163. اگر یکی توسط برنامهٔ دیگری اشغال باشد میپرسدContinue anyway? (y/N):(پورتهایی که کانتینرهای خود ربات گرفتهاند نادیده گرفته میشوند).
وارد کردن اطلاعات تلگرام
[*] Enter your Telegram credentials: API_ID (from my.telegram.org) [2040]: API_HASH [b18441a1ff607e10a989891a5462e627]: BOT_TOKEN (from @BotFather): ADMIN_ID (numeric Telegram user ID):
API_ID (from my.telegram.org) [2040]:اختیاریاختیاری. با Enter مقدار عمومی Telegram Desktop (2040) ست میشود. پیشنهاد میشود API_ID شخصی خودتان را از my.telegram.org بسازید و وارد کنید.
API_HASH [b18441a1…]:اختیاریاختیاری. همراه API_ID از my.telegram.org گرفته میشود. Enter = مقدار عمومی.
BOT_TOKEN (from @BotFather):اجباریتوکن ربات از @BotFather. اگر خالی بگذارید دوباره پرسیده میشود (This value is required).
ADMIN_ID (numeric Telegram user ID):اجباریآیدی عددی تلگرام ادمین اصلی. بعداً میتوانید در .env چند ادمین را با کاما جدا کنید، مثل 111111111,222222222
فاصلههای اضافه خودکار حذف میشوند. اگر فایل .env از قبل وجود داشته باشد، این مرحله کامل رد میشود.
ساخت خودکار بقیهٔ تنظیمات
این موارد پرسیده نمیشوند و خودکار ساخته میشوند:
| مورد | مقدار |
|---|---|
| دیتابیس MariaDB | دیتابیس و یوزر pasarguardbot با رمز تصادفی ۲۴ کاراکتری؛ رمز root تصادفی ۳۲ کاراکتری |
SQLALCHEMY_DATABASE_URL | mysql+asyncmy://pasarguardbot:…@mariadb:3306/pasarguardbot |
REDIS_URL | redis://redis:6379/0 |
FASTAPI_PORT | 6160 |
TELETHON_SESSION_PATH | sessions/KenzoSession |
CRYPTO_KEY و WEBHOOK_SECRET | در دیتابیس (جدول secrets) با مقدار تصادفی ساخته میشوند — نه در .env |
رمزهای دیتابیس یکبار در ترمینال چاپ میشوند. اگر از دستشان دادید، همیشه داخل /opt/pasarguardbot/.env هستند.
بالا آمدن سرویسها
اسکریپت فایل docker-compose.yml را از برنچ انتخابی دانلود و اعتبارسنجی میکند، ایمیجها را از ghcr.io/amirkenzo/pasarguardbot میکشد و کانتینرها را بالا میآورد (تا ۹۰ ثانیه منتظر میماند).
در اولین اجرا، ربات خودش جدولهای دیتابیس را میسازد (alembic upgrade head).
اولین بالا آمدن MariaDB ممکن است چند دقیقه طول بکشد. اگر ربات بلافاصله جواب نداد، یکی دو دقیقه صبر کنید.
خلاصهٔ نصب و لاگ زنده
در پایان مسیرها، ایمیج، برنچ، پورتها و آدرس وبهوک چاپ میشود و بعد لاگ زندهٔ ربات نمایش داده میشود:
Tailing live logs so you can confirm it came up healthy — press Ctrl+C to stop.وقتی در لاگ دیدید ربات بالا آمده، Ctrl+C بزنید و بعد Enter تا به منو برگردید.
اولین ورود به ربات
- در تلگرام ربات خودتان را باز کنید و
/startبزنید. - چون آیدی شما در
ADMIN_IDاست، دکمهٔ ⚙️ پنل مدیریت را میبینید (یا دستور/panel). - از 📚 منوی پنل ها پنل پاسارگارد را اضافه کنید — منوی پنلها.
- از 🗞 ساخت پلن پلن فروش بسازید — ساخت پلن.
- از ⚙️ تنظیمات ربات گزینهٔ وضعیت فروش را روشن کنید (پیشفرض خاموش است).
- از 💳 تنظیمات درگاه حداقل یک روش پرداخت (کارت یا ارز) تنظیم و از ⚙️ تنظیمات ربات دکمهاش را روشن کنید — تنظیمات درگاه.
- کانالهای لاگ را ست کنید تا رسیدها و بکاپها جایی ارسال شوند — مدیریت لاگها.
مسیر کامل راهاندازی در چکلیست راهاندازی آمده است.
آدرس وبهوک و phpMyAdmin
هر وقت لازم شد، از منو گزینهٔ 9) Show webhook & URLs (یا دستور pasarguardbot urls) را بزنید:
[*] Webhook (set in Pasarguard panel): URL: http://YOUR_IP:6160/api/webhook Header: x-webhook-secret: <from DB table secrets, name=webhook_secret> Note: crypto_key / webhook_secret are stored in DB (not .env) [*] phpMyAdmin: URL: http://YOUR_IP:6163 [!] Replace the IP with your domain if you use one.
- خود مقدار Secret چاپ نمیشود؛ آن را از phpMyAdmin بردارید: دیتابیس
pasarguardbot← جدولsecrets← ردیفی کهnameآنwebhook_secretاست، ستونvalue(یک رشتهٔ ۶۴ کاراکتری). - آدرس و هدر وبهوک را در پنل پاسارگارد ست کنید تا اطلاعرسانی حجم/زمان دقیق کار کند: اطلاعرسانی حجم و زمان
- این خروجی همیشه با
http://چاپ میشود؛ اگر SSL دارید خودتانhttps://و دامنه را جایگزین کنید.
دامنه، SSL و وباپ
برای وباپ (Mini App)، دکمهٔ 🖥 پنل تحت وب و درگاه TonPays حتماً به آدرس HTTPS نیاز دارید (تلگرام آدرس http را برای Mini App قبول نمیکند). راهنمای کامل: دامنه و SSL.
ساختار فایلها روی سرور
| کانتینر | ایمیج | پورت |
|---|---|---|
pasarguardbot | ghcr.io/amirkenzo/pasarguardbot | 6160 (همهٔ اینترفیسها) |
pasarguardbot-mariadb | mariadb:12 | 127.0.0.1:6162 |
pasarguardbot-redis | redis:8-alpine | 127.0.0.1:6161 |
pasarguardbot-phpmyadmin | phpmyadmin:5-apache | 6163 (همهٔ اینترفیسها) |