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

اجرای تک‌کانتینری (دستی)

ساختن ایمیج با docker build و اجرای WZML-X با docker run، بدون Docker Compose و بدون تونل.

اگر Docker Compose ندارید یا فقط می‌خواهید ربات را سریع امتحان کنید، می‌توانید ایمیج را خودتان بسازید و یک کانتینر تنها اجرا کنید. در این روش تونل Cloudflare وجود ندارد و هیچ پوشه‌ای هم خودکار به کانتینر وصل نمی‌شود؛ برای استفادهٔ دائمی، روش استقرار روی VPS پیشنهاد می‌شود.

دستورهای README.md

git clone https://github.com/SilentDemonSD/WZML-X.git
cd WZML-X
docker build -t wzmlx .
docker run -p 8080:8080 wzmlx

docker build با Dockerfile پروژه یک ایمیج به نام wzmlx می‌سازد و docker run آن را اجرا می‌کند و پورت 8080 کانتینر (رابط وب) را روی پورت 8080 سرور منتشر می‌کند.

پیکربندی: دو راه

راه اول: config.py قبل از ساخت ایمیج

Dockerfile با دستور COPY . . همهٔ فایل‌های پوشه را داخل ایمیج کپی می‌کند. پس اگر config.py را قبل از docker build بسازید، داخل ایمیج قرار می‌گیرد:

cp config_sample.py config.py
nano config.py
docker build -t wzmlx .

راه دوم: فقط متغیرهای محیطی

اگر config.py در پوشه نباشد، ربات مقادیر را از متغیرهای محیطی می‌خواند (update.py در این حالت پیام Config.py file is not Added! Checking ENVs.. را ثبت می‌کند). هر متغیری که در مرجع متغیرها هست، با همان نام به‌عنوان متغیر محیطی پذیرفته می‌شود (ترتیب اولویت‌ها در نحوهٔ پیکربندی توضیح داده شده است):

docker run -p 8080:8080 \
  -e BOT_TOKEN="1234567890:AA..." \
  -e OWNER_ID="123456789" \
  -e TELEGRAM_API="1234567" \
  -e TELEGRAM_HASH="0123456789abcdef0123456789abcdef" \
  -e DATABASE_URL="mongodb+srv://USERNAME:PASSWORD@CLUSTER.mongodb.net/" \
  -e BASE_URL="http://SERVER_IP:8080" \
  wzmlx

BASE_URL را خودتان تنظیم کنید

در این روش کانتینر تونل وجود ندارد، پس ربات آدرس عمومی رابط وب را نمی‌داند. برای کار کردن انتخاب فایل تورنت و NZB و لینک‌های پخش، BASE_URL را برابر آدرسی بگذارید که رابط وب از بیرون با آن در دسترس است؛ قالبی که خود ربات پیشنهاد می‌کند http://ip یا http://ip:port است:

BASE_URL = "http://SERVER_IP:8080"

نگه داشتن داده‌ها

دستور README.md هیچ پوشه‌ای را به کانتینر وصل نمی‌کند، پس با حذف کانتینر، سرویس‌اکانت‌های داخل آن هم پاک می‌شوند و دانلودها روی دیسک داخلی کانتینر نوشته می‌شوند. (دانلودها در هر حال ماندگار نیستند: ربات در هر شروع پوشهٔ دانلودها را خالی می‌کند.) می‌توانید همان مسیرهایی را که docker-compose.yml استفاده می‌کند، خودتان وصل کنید و کانتینر را در پس‌زمینه و با ری‌استارت خودکار اجرا کنید:

docker run -d --name wzmlx --restart unless-stopped \
  -p 8080:8080 \
  -v "$(pwd)/accounts:/usr/src/app/accounts" \
  -v "$(pwd)/downloads:/usr/src/app/downloads" \
  wzmlx

تنظیماتی که از داخل تلگرام تغییر می‌دهید و فایل‌های خصوصی‌ای که با /bsetting بارگذاری می‌کنید، در MongoDB ذخیره می‌شوند و با ساختن کانتینر جدید از بین نمی‌روند.

مدیریت کانتینر

docker logs -f wzmlx
docker stop wzmlx
docker rm wzmlx

طبق یادداشت‌های README.md، اول کانتینر را متوقف کنید، بعد حذفش کنید و در آخر ایمیج‌ها را پاک‌سازی کنید. دستورهای پاک‌سازی در به‌روزرسانی آمده است.

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