نصب و راهاندازی
استقرار با GitHub Workflow و Heroku (روش قدیمی)
مسیر قدیمی استقرار WZML-X روی Heroku از طریق مخزن WZ-Deploy و GitHub Actions، بهطور خلاصه.
WZ-Deploy چیست؟
WZ-Deploy یک مخزن جداگانه برای استقرار روی Heroku است که فقط چند فایل لازم برای ساخت و شروع را دارد. در خود مخزن WZML-X یک GitHub Action به نام sync-wz-deploy.yml وجود دارد که با هر تغییر در شاخهٔ wzv3، فایلهای update.py، start.sh و Dockerfile را در WZ-Deploy کپی میکند.
کد اصلی ربات در WZ-Deploy نیست: هنگام شروع، update.py آن را از مخزنی که در UPSTREAM_REPO تعیین شده (شاخهٔ UPSTREAM_BRANCH، پیشفرض wzv3) دریافت میکند. به همین دلیل در این روش UPSTREAM_REPO ضروری است. توضیح کامل این رفتار در بهروزرسانی آمده است.
مراحل روش GitHub Workflow
طبق راهنمای WZ-Deploy:
- مخزن WZ-Deploy را فورک کنید.
- در فورک خودتان، از تب Settings بخش Actions را فعال کنید.
- به تب Actions بروید، workflow استقرار روی Heroku را انتخاب کنید و Run workflow را بزنید.
- ورودیها را پر کنید و منتظر بمانید تا اجرا تمام شود.
| ورودی | توضیح |
|---|---|
BOT_TOKEN | توکن ربات از @BotFather |
OWNER_ID | شناسهٔ عددی تلگرام شما |
DATABASE_URL | آدرس اتصال MongoDB |
TELEGRAM_API | شناسهٔ API از my.telegram.org |
TELEGRAM_HASH | هش API از my.telegram.org |
HEROKU_APP_NAME | نام اپ در Heroku |
HEROKU_EMAIL | ایمیل حساب Heroku |
HEROKU_API_KEY | کلید API حساب Heroku |
HEROKU_TEAM_NAME | اختیاری؛ فقط اگر اپ زیر یک تیم Heroku است |
UPSTREAM_REPO | مخزنی که کد ربات از آن گرفته میشود (فورک خودتان یا مخزن اصلی) |
بعد از اتمام، لاگ اپ را در داشبورد Heroku بررسی کنید. راهنمای WZ-Deploy میگوید جز متغیرهای بالا متغیر دیگری به Heroku اضافه نکنید؛ بقیهٔ تنظیمات و فایلهای خصوصی مثل token.pickle را بعداً از داخل ربات با /bsetting (کوتاهشده: /bs) اضافه کنید.
تفاوتها با روش VPS
- تونل وجود ندارد. آدرس عمومی رابط وب را ربات خودش پیدا نمیکند. برای انتخاب فایل تورنت و NZB و لینکهای پخش،
BASE_URLرا برابر آدرس اپ Heroku بگذارید (از/bsetting←Config Variables). - پورت وبسرور از متغیر محیطی
PORTخوانده میشود (که Heroku تعیین میکند) و در نبود آن8080است. cron_boot.py: اگر هر دو متغیر محیطیPORTوBASE_URLتعریف شده باشند، این اسکریپت هر ۶۰۰ ثانیه یک درخواست بهBASE_URLمیفرستد.- پیکربندی بدون
config.py: در این روش مقادیر بهصورت متغیر محیطی به اپ داده میشوند و ربات آنها را از محیط میخواند. توضیح ترتیب اولویتها در نحوهٔ پیکربندی آمده است.
روشهای دیگر WZ-Deploy
راهنمای WZ-Deploy علاوه بر این روش، استقرار با Heroku CLI (با heroku create --stack container و ساختن config.py در مخزن) و یک نوتبوک Google Colab را هم معرفی میکند. برای جزئیات به خود راهنما مراجعه کنید.