================================================================================ بستهٔ استقرار ربات Net Club VIP روی لینوکس (VPS / هاست با SSH) ================================================================================ نکتهٔ مهم دربارهٔ «بدون قطع» --------------------------- هیچ برنامه‌ای روی اینترنت واقعاً «هرگز یک لحظه هم قطع نشود» تضمین ندارد (ری‌استارت سرور، قطع شبکه، به‌روزرسانی تلگرام، کمبود RAM و ...). راه درست نزدیک‌شدن به «همیشه بالا»: اجرا با systemd و Restart=always تا بعد از هر کرش یا قطع کوتاه، خودکار دوباره بالا بیاید. -------------------------------------------------------------------------------- ۱) چه چیزهایی داخل ZIP است -------------------------------------------------------------------------------- bot.py → کد ربات requirements.txt → وابستگی پایتون netclub-bot.service → نمونهٔ سرویس systemd (مسیر را با سرور خودت عوض کن) env.example → الگوی متغیرهای محیطی (کپی به .env و پر کن — اختیاری) -------------------------------------------------------------------------------- ۲) روی سرور چه نصب باشد -------------------------------------------------------------------------------- - Ubuntu / Debian (یا هر لینوکس با systemd) - Python 3.10 یا بالاتر (ترجیحاً 3.11+) - دسترسی SSH و کاربر sudo نصب پایتون و venv (اگر ندارید): sudo apt update sudo apt install -y python3 python3-venv python3-pip -------------------------------------------------------------------------------- ۳) آپلود و باز کردن ZIP -------------------------------------------------------------------------------- فایل ZIP را از کامپیوتر خود به سرور ببرید (scp، SFTP در FileZilla، پنل هاست). مثال با scp از ویندوز (PowerShell): scp netclub-bot-host.zip user@YOUR_SERVER_IP:/home/user/ روی سرور: unzip netclub-bot-host.zip -d netclub-bot cd netclub-bot -------------------------------------------------------------------------------- ۴) محیط مجازی و نصب کتابخانه‌ها -------------------------------------------------------------------------------- python3 -m venv venv source venv/bin/activate pip install --upgrade pip pip install -r requirements.txt -------------------------------------------------------------------------------- ۵) توکن و ادمین (حتماً روی سرور) -------------------------------------------------------------------------------- بهترین روش: متغیر محیطی (توکن داخل فایل روی سرور کپی نشود در بکاپ‌های اشتباه). export BOT_TOKEN="توکن_ربات_از_BotFather" export ADMIN_CHAT_ID="عدد_چت_آیدی_ادمین" تست یک‌بار دستی قبل از systemd: source venv/bin/activate export BOT_TOKEN="..." export ADMIN_CHAT_ID="..." python bot.py با Ctrl+C متوقفش کن اگر اوکی بود. -------------------------------------------------------------------------------- ۶) اجرای دائمی با systemd (پیشنهادی) -------------------------------------------------------------------------------- ۶-۱ پوشهٔ نهایی را انتخاب کن، مثلاً: sudo mkdir -p /opt/netclub-bot sudo cp -a bot.py requirements.txt venv /opt/netclub-bot/ sudo chown -R $USER:$USER /opt/netclub-bot ۶-۲ فایل netclub-bot.service را باز کن و این‌ها را با مسیر و کاربر خودت یکی کن: WorkingDirectory ExecStart (مسیر python داخل venv) Environment برای BOT_TOKEN و ADMIN_CHAT_ID ۶-۳ کپی به systemd و فعال‌سازی: sudo cp netclub-bot.service /etc/systemd/system/netclub-bot.service sudo systemctl daemon-reload sudo systemctl enable netclub-bot sudo systemctl start netclub-bot ۶-۴ وضعیت و لاگ: sudo systemctl status netclub-bot journalctl -u netclub-bot -f بعد از هر ویرایش سرویس: sudo systemctl daemon-reload sudo systemctl restart netclub-bot -------------------------------------------------------------------------------- ۷) دیتابیس و لاگ -------------------------------------------------------------------------------- bot_database.json و bot.log در همان WorkingDirectory ساخته/به‌روز می‌شوند. برای مهاجرت از سرور قدیم: فایل bot_database.json قدیمی را کنار bot.py کپی کن. -------------------------------------------------------------------------------- ۸) اگر systemd نداری (فقط تست — کمتر پایدار) -------------------------------------------------------------------------------- nohup env BOT_TOKEN="..." ADMIN_CHAT_ID="..." ./venv/bin/python bot.py >> bot.log 2>&1 & با کرش سرور یا kill، خودکار بالا نمی‌آید؛ systemd بهتر است. ================================================================================