نصب و راه‌اندازی

استقرار با 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:

  1. مخزن WZ-Deploy را فورک کنید.
  2. در فورک خودتان، از تب Settings بخش Actions را فعال کنید.
  3. به تب Actions بروید، workflow استقرار روی Heroku را انتخاب کنید و Run workflow را بزنید.
  4. ورودی‌ها را پر کنید و منتظر بمانید تا اجرا تمام شود.
ورودیتوضیح
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 را هم معرفی می‌کند. برای جزئیات به خود راهنما مراجعه کنید.

مثلاً LEECH_SPLIT_SIZE، /mirror، -up یا «تامبنیل»