OffshoreVps
Bài hướng dẫn8 thg 10 20265 phút đọcBởi đội ngũ OffshoreVps

Cách lưu trữ bot Telegram trên VPS

Lấy token bot, viết bot Python, lưu token an toàn và giữ bot chạy 24/7 bằng dịch vụ systemd.

Bot Telegram phải chạy liên tục để trả lời tin nhắn. Chạy nó trên laptop nghĩa là nó ngoại tuyến mỗi khi bạn gập máy. Một VPS nhỏ giải quyết việc đó với vài đô la mỗi tháng. Hướng dẫn này chạy bot Python như một dịch vụ systemd để nó khởi động cùng máy và tự khởi động lại sau khi lỗi.

Cửa sổ terminal trên VPS hiển thị các lệnh dùng để lưu trữ bot Telegram, bắt đầu bằng “sudo apt update && sudo apt install -y python3 p”
Loại lệnh bạn sẽ chạy trên máy chủ của mình trong hướng dẫn này.

VPS cỡ nào?

Hầu hết bot đều nhẹ. Gói 1 đến 2 vCPU và 2 GB RAM là quá đủ. Xem lưu trữ bot Telegram để biết các gói gợi ý.

Bước 1: lấy token bot

Nhắn cho @BotFather trên Telegram, gửi /newbot, chọn một tên và một username kết thúc bằng bot, rồi sao chép token. Hãy coi nó như mật khẩu, vì bất kỳ ai có nó đều điều khiển được bot.

Bước 2: chuẩn bị máy chủ

sudo apt update && sudo apt install -y python3 python3-venv
sudo adduser --disabled-password --gecos "" botuser
sudo -iu botuser
mkdir ~/mybot && cd ~/mybot
python3 -m venv .venv
. .venv/bin/activate
pip install python-telegram-bot

Bước 3: viết một bot nhỏ

# bot.py
import os
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes

async def start(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
    await update.message.reply_text("Hello! I am running on a VPS.")

app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()

Polling không cần mở cổng nào, nên bạn không phải thiết lập tên miền hay webhook.

Các bước của hướng dẫn này theo thứ tự: 1. VPS cỡ nào?; 2. lấy token bot; 3. viết một bot nhỏ; 4. lưu token an toàn; 5. Cập nhật và theo dõi; 6. Polling hay webhook?
Các bước trong hướng dẫn này, theo thứ tự.

Bước 4: lưu token an toàn

echo "BOT_TOKEN=123456:ABC..." > ~/mybot/.env
chmod 600 ~/mybot/.env

Bước 5: chạy nó như một dịch vụ

Quay lại với tư cách người dùng quản trị, tạo /etc/systemd/system/mybot.service:

[Unit]
Description=Telegram bot
After=network-online.target

[Service]
User=botuser
WorkingDirectory=/home/botuser/mybot
EnvironmentFile=/home/botuser/mybot/.env
ExecStart=/home/botuser/mybot/.venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo journalctl -u mybot -f

Cập nhật và theo dõi

  • Cập nhật mã, rồi sudo systemctl restart mybot.
  • Kiểm tra nhật ký bằng journalctl -u mybot -n 100.
  • Hãy dùng sao lưu nếu bot lưu dữ liệu.

Polling hay webhook?

Polling đơn giản nhất và đủ tốt cho hầu hết bot. Dùng webhook nếu bạn cần chuyển phát tức thời ở khối lượng lớn, điều này cần tên miền và HTTPS. Xem lưu trữ với Nginx và HTTPS.