EQVPS

Cách host một Telegram bot trên một VPS (và giữ nó chạy)

15 thg 6, 2026 · 3 phút đọc · EQVPS Team

Một Telegram bot chỉ chạy khi laptop của bạn mở thì không thực sự đang chạy — nó đang demo. Để nó thực sự online, trả lời lúc 3 giờ sáng, sống sót qua các lần khởi động lại của bạn và các lần sập của chính nó, nó cần sống trên một máy chủ. Đây là toàn bộ con đường, từ đầu đến cuối, với các lệnh.

Tin vui trước: một bot là một khối lượng công việc tí hon. Nó chủ yếu ngồi nhàn rỗi chờ tin nhắn, nên cỗ máy rẻ nhất chạy nó tốt — không IP riêng, không tên miền, không gì cầu kỳ.

1. Lấy một token từ BotFather

Trong Telegram, nhắn @BotFather, gửi /newbot, chọn một tên và username. Nó trao bạn một token trông như 12345:AAH.... Đối xử với nó như một mật khẩu — bất kỳ ai có nó kiểm soát bot của bạn.

2. Một bot tối thiểu

SSH vào máy chủ, thiết lập Python và thư viện:

sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot

Một bot trả lời — ~/mybot/bot.py:

import os
from telegram.ext import ApplicationBuilder, CommandHandler

async def start(update, ctx):
    await update.message.reply_text("Alive and on a server. 🟢")

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

Chú ý nó đọc token từ một biến môi trường — không hard-code. Điều đó quan trọng ở bước tiếp theo.

3. Phần thực sự giữ nó chạy: systemd

Nếu bạn chỉ chạy python bot.py, nó chết khoảnh khắc bạn đóng SSH. Một dịch vụ systemd là cái làm nó sống sót qua đăng xuất, sập, và khởi động lại. Tạo /etc/systemd/system/mybot.service:

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

[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser

[Install]
WantedBy=multi-user.target

Rồi:

sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot      # nên nói active (running)
journalctl -u mybot -f           # log trực tiếp

Restart=always là dòng làm việc thật — sập, và nó trở lại trong 5 giây. enable nghĩa là nó lên sau một lần khởi động lại. Đó là toàn bộ khác biệt giữa "tôi đã chạy một bot một lần" và "bot của tôi đang lên."

4. Vì sao không tên miền hay các cổng mở

Bot dùng long polling — nó gọi ra tới Telegram để lấy các cập nhật, nên không gì cần tới vào. Không URL công khai, không quy tắc tường lửa đến, không IP riêng. Đây chính xác là vì sao một VPS NAT (IP dùng chung, SSH trên một cổng) là một ngôi nhà ổn và rẻ cho một bot. Webhook tồn tại cho khối lượng rất cao, nhưng bạn gần như chắc chắn không cần chúng để bắt đầu.

Các lưu ý trung thực

Đó là tất cả. Khóa cỗ máy lại trước với danh sách kiểm tra bảo mật, đặt dịch vụ vào, và bot của bạn ở lại online dù bạn có hay không. Trên một VPS thanh toán-crypto bạn có thể có nó chạy một phút sau khi bạn quyết định.

FAQ

Tôi cần VPS nào cho một Telegram bot?

Cái nhỏ nhất. Một Telegram bot chủ yếu nhàn rỗi, chờ các cập nhật, nên 1 GB RAM và 2 lõi là dư dả cho hầu hết các bot — kể cả những cái khá bận. Bạn chỉ cần nhiều hơn nếu bot tự làm việc nặng (xử lý ảnh, một mô hình cục bộ, một cơ sở dữ liệu lớn).

Làm sao giữ một Telegram bot chạy sau khi tôi đóng SSH?

Chạy nó như một dịch vụ systemd. Khác với khởi chạy nó trong terminal của bạn, systemd giữ nó sống sau khi bạn đăng xuất, khởi động lại nó nếu nó sập, và khởi động nó lại sau một lần khởi động lại. Đó là khác biệt giữa một đồ chơi và một thứ ở lại lên.

Vì sao bot của tôi dừng khi tôi ngắt kết nối?

Vì bạn khởi động nó trong phiên SSH của bạn, nên nó chết khi phiên đó kết thúc. Bọc nó trong một dịch vụ systemd (hoặc tmux cho một lần kiểm tra nhanh) và nó chạy độc lập với đăng nhập của bạn.

Tôi có cần một tên miền hoặc webhook cho một Telegram bot không?

Không. Long polling (getUpdates) không cần một URL công khai, không tên miền, không cổng đến — bot gọi ra tới Telegram. Đó là vì sao một VPS NAT không có IP riêng hoàn toàn ổn cho một bot. Webhook là một tối ưu tùy chọn cho khối lượng cao.

Đặt token bot của tôi trên một VPS có an toàn không?

Có, nếu bạn đối xử với nó như một mật khẩu: giữ nó trong một biến môi trường hoặc một tập tin chỉ đọc được bởi người dùng của bot, đừng bao giờ commit nó vào git, và khóa máy chủ với các khóa SSH. Nếu một token rò rỉ, thu hồi nó trong BotFather và phát một cái mới.

← Quay lại blogXem gói & giá →

Bình luận

Chưa có bình luận nào. Hãy là người đầu tiên.

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.