Back to Tech
Tech • Change VPS Telegram Bot

Bot 3 ခု (Downloader / Finance / Pravite) ကို VPS အဟောင်းကနေ VPS အသစ်သို့ ရွှေ့နည်း

Ubuntu 24.04 • venv + systemd • Error နည်းဆုံး Checklist

သတိ: Ubuntu 24.04 မှာ pip install ကို system-wide (global) မလုပ်နိုင်တာများပါတယ် (externally-managed-environment)။ ဒါကြောင့် အမြဲ venv သုံးပြီး .venv/bin/python နဲ့ run ပါ။
Goal: VPS အသစ်မှာ bot 3 ခုလုံး systemd service နဲ့ run ဖြစ်ပြီး terminal ပိတ်သွားလည်း မရပ်အောင် အလုပ်လုပ်စေဖို့။

Overview (လုပ်ရမယ့် Flow)

(1) VPS အဟောင်းမှာ bot 3 ခုလုံး stop + disable → (2) bot folders ကို tar backup → (3) VPS အသစ်ကို scp နဲ့ကူး →
(4) VPS အသစ်မှာ extract → (5) venv ကို ပြန်ဆောက် (old venv မသုံး) → (6) systemd services ဆောက် → (7) enable/start → (8) logs/test


A) VPS အဟောင်းမှာ လုပ်ရမယ့်အဆင့်

Step A1 — Bot 3 ခုလုံး Stop + Disable

sudo systemctl stop downloader financebot pravitebot
sudo systemctl disable downloader financebot pravitebot
      

Step A2 — Inactive ဖြစ်မဖြစ် စစ်

sudo systemctl is-active downloader
sudo systemctl is-active financebot
sudo systemctl is-active pravitebot
      
Output က inactive 3 ခုလုံးဖြစ်ရမယ်။ instance ၂ ခုတက်တာကို ကာကွယ်ဖို့အရေးကြီးပါတယ်။

Step A3 — Bot folders ကို tar backup လုပ်

cd /root
tar -czf bots_backup.tar.gz downloader_bot finance_bot pravite_bot
ls -lh bots_backup.tar.gz
      

Step A4 — VPS အသစ်ကို scp နဲ့ ကူး

scp /root/bots_backup.tar.gz root@NEW_VPS_IP:/root/
      

B) VPS အသစ်မှာ လုပ်ရမယ့်အဆင့်

Step B1 — System packages တင် (Ubuntu 24.04)

sudo apt update
sudo apt -y install python3-venv python3-pip ffmpeg
# docs->pdf သုံးမယ်ဆို (ကြီးနိုင်)
# sudo apt -y install libreoffice
      

Step B2 — tar ကို extract လုပ်

cd /root
tar -xzf bots_backup.tar.gz
ls -la
      
Extract ပြီးရင် /root/downloader_bot, /root/finance_bot, /root/pravite_bot တွေ ပြန်ရောက်နေရမယ်။

Step B3 — venv ကို “ပြန်ဆောက်” (အရေးကြီး: old venv မသုံး)

Downloader bot (pyrogram + yt-dlp + pillow)

cd /root/downloader_bot
rm -rf .venv
python3 -m venv .venv
/root/downloader_bot/.venv/bin/pip install -U pip wheel
/root/downloader_bot/.venv/bin/pip install pyrogram tgcrypto yt-dlp pillow
      

Finance bot (python-telegram-bot + openpyxl)

cd /root/finance_bot
rm -rf .venv
python3 -m venv .venv
/root/finance_bot/.venv/bin/pip install -U pip wheel
/root/finance_bot/.venv/bin/pip install python-telegram-bot openpyxl
      

Pravite bot (python-telegram-bot + openpyxl)

cd /root/pravite_bot
rm -rf .venv
python3 -m venv .venv
/root/pravite_bot/.venv/bin/pip install -U pip wheel
/root/pravite_bot/.venv/bin/pip install python-telegram-bot openpyxl
      
Tip: Pravite bot မှာ ModuleNotFoundError ထွက်လာရင် error ထဲက module name ကိုပဲ pip install ... လုပ်ပါ (venv ထဲမှာ)။

C) systemd services ဆောက် (terminal ပိတ်လည်း run နေစေဖို့)

Step C1 — downloader.service

sudo nano /etc/systemd/system/downloader.service
      
[Unit]
Description=Video Downloader Bot
After=network.target

[Service]
User=root
WorkingDirectory=/root/downloader_bot
ExecStart=/root/downloader_bot/.venv/bin/python /root/downloader_bot/downloader.py
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
      

Step C2 — financebot.service

sudo nano /etc/systemd/system/financebot.service
      
[Unit]
Description=Finance Bot
After=network.target

[Service]
User=root
WorkingDirectory=/root/finance_bot
ExecStart=/root/finance_bot/.venv/bin/python /root/finance_bot/bot.py
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
      

Step C3 — pravitebot.service

sudo nano /etc/systemd/system/pravitebot.service
      
[Unit]
Description=Pravite Bot
After=network.target

[Service]
User=root
WorkingDirectory=/root/pravite_bot
ExecStart=/root/pravite_bot/.venv/bin/python /root/pravite_bot/pravitebot.py
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
      

Step C4 — daemon-reload + enable/start

sudo systemctl daemon-reload
sudo systemctl enable --now downloader financebot pravitebot
      

Step C5 — status + logs စစ်

sudo systemctl status downloader financebot pravitebot --no-pager
      
journalctl -u downloader -n 60 --no-pager
journalctl -u financebot -n 60 --no-pager
journalctl -u pravitebot -n 60 --no-pager
      

D) Final Checks (မရွှေ့ပြီးပြီဆိုတာ သေချာအောင်)

ls -la /root/downloader_bot/cookies