−25%

Windows รายปี ถึง 31 ต.ค. ดูแพ็กเกจ

EQVPS
เริ่มต้นใช้งาน

วิธีโฮสต์บอท Telegram บน VPS (และเก็บมันให้รัน)

Jun 15, 2026 · 1 นาทีในการอ่าน · EQVPS Team

บอท Telegram ที่รันเฉพาะขณะแล็ปท็อปของคุณเปิดไม่ได้รันจริง — มันสาธิต เพื่อให้มันออนไลน์จริง ตอบตอนตีสาม รอดรีบูตของคุณและการแครชของมันเอง มันต้องอยู่บนเซิร์ฟเวอร์ นี่คือเส้นทางทั้งหมด ตั้งแต่ต้นจนจบ พร้อมคำสั่ง

ข่าวดีก่อน: บอทคืองานจิ๋ว มันส่วนใหญ่นั่งว่างรอข้อความ ดังนั้นเครื่องถูกที่สุดรันมันได้ดี — ไม่มี dedicated IP ไม่มีโดเมน ไม่มีอะไรแฟนซี

1. รับโทเคนจาก BotFather

ใน Telegram ส่งข้อความ @BotFather ส่ง /newbot เลือกชื่อและ username มันมอบโทเคนที่ดูเหมือน 12345:AAH... ปฏิบัติต่อมันเหมือนรหัสผ่าน — ใครที่มีมันควบคุมบอทของคุณ

2. บอทขั้นต่ำ

SSH เข้าเซิร์ฟเวอร์ ตั้ง Python และไลบรารี:

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

บอทที่ตอบ — ~/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()

สังเกตว่ามันอ่านโทเคนจากตัวแปรสภาพแวดล้อม — ไม่ hard-code นั่นสำคัญในขั้นถัดไป

3. ส่วนที่เก็บมันให้รันจริง: systemd

หากคุณแค่รัน python bot.py มันตายทันทีที่คุณปิด SSH บริการ systemd คือสิ่งที่ทำให้มันรอด log out แครช และรีบูต สร้าง /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

จากนั้น:

sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot      # ควรบอก active (running)
journalctl -u mybot -f           # log สด

Restart=always คือบรรทัดที่ทำงานจริง — แครช แล้วมันกลับใน 5 วินาที enable หมายถึงมันขึ้นหลังรีบูต นั่นคือความต่างทั้งหมดระหว่าง "ฉันรันบอทครั้งหนึ่ง" และ "บอทของฉันขึ้น"

4. ทำไมไม่มีโดเมนหรือพอร์ตเปิด

บอทใช้ long polling — มันยื่นออกไปยัง Telegram เพื่ออัปเดต ดังนั้นไม่มีอะไรต้องเข้าถึงเข้า ไม่มี URL สาธารณะ ไม่มีกฎ firewall ขาเข้า ไม่มี dedicated IP นี่คือเหตุผลพอดีที่ NAT VPS (ที่อยู่ขาออกไม่ใช่ของคุณเอง SSH บนพอร์ต) เป็นบ้านที่โอเคและถูกสำหรับบอท webhook มีอยู่สำหรับปริมาณสูงมาก แต่คุณแทบแน่นอนไม่ต้องการมันเพื่อเริ่ม

ข้อควรระวังที่ตรงไปตรงมา

  • สุขอนามัยโทเคน: ที่นี่มันอยู่ inline ในไฟล์ unit เพื่อความชัดเจน — โอเคบนเครื่องที่ล็อก แต่สำหรับอะไรที่แชร์ โหลดมันจาก EnvironmentFile แบบ root-only แทน และไม่เคย commit มันลง git รั่ว? เพิกถอนใน BotFather ออกใหม่
  • บอทหนัก: หากบอทของคุณทำงานเอง (สร้างภาพ โมเดลในเครื่อง) มันไม่จิ๋วอีก — ขยายขึ้นตามนั้น

แค่นั้น ล็อกเครื่องก่อนด้วยเช็กลิสต์ความปลอดภัย วางบริการ และบอทของคุณอยู่ออนไลน์ไม่ว่าคุณทำหรือไม่ บน VPS ที่จ่ายด้วยคริปโต คุณมีมันรันหนึ่งนาทีหลังคุณตัดสินใจ

FAQ

ฉันต้องการ VPS ใดสำหรับบอท Telegram?

ตัวเล็กที่สุด บอท Telegram ส่วนใหญ่ว่าง รออัปเดต ดังนั้น 1 GB RAM และ 2 คอร์เพียงพอสำหรับบอทส่วนใหญ่ — แม้ที่ค่อนข้างยุ่ง คุณต้องการมากกว่าเฉพาะหากบอททำงานหนักเอง (การประมวลผลภาพ โมเดลในเครื่อง ฐานข้อมูลใหญ่)

ฉันเก็บบอท Telegram ให้รันหลังปิด SSH อย่างไร?

รันมันเป็นบริการ systemd ต่างจากการเปิดมันใน terminal systemd เก็บมันให้มีชีวิตหลังคุณ log out รีสตาร์ทมันหากแครช และเริ่มมันอีกครั้งหลังรีบูต นั่นคือความต่างระหว่างของเล่นและสิ่งที่อยู่

ทำไมบอทของฉันหยุดเมื่อฉันตัดการเชื่อมต่อ?

เพราะคุณเริ่มมันในเซสชัน SSH ของคุณ ดังนั้นมันตายเมื่อเซสชันนั้นจบ ห่อมันในบริการ systemd (หรือ tmux สำหรับการทดสอบเร็ว) และมันรันอิสระจากการเข้าสู่ระบบของคุณ

ฉันต้องมีโดเมนหรือ webhook สำหรับบอท Telegram ไหม?

ไม่ long polling (getUpdates) ไม่ต้องมี URL สาธารณะ ไม่มีโดเมน ไม่มีพอร์ตขาเข้า — บอทยื่นออกไปยัง Telegram นั่นคือเหตุผลที่ NAT VPS ที่ไม่มี dedicated IP โอเคสมบูรณ์สำหรับบอท webhook เป็นการปรับให้เหมาะสมเสริมสำหรับปริมาณสูง

ปลอดภัยไหมที่จะใส่โทเคนบอทบน VPS?

ใช่ หากคุณปฏิบัติต่อมันเหมือนรหัสผ่าน: เก็บมันในตัวแปรสภาพแวดล้อมหรือไฟล์ที่อ่านได้เฉพาะผู้ใช้ของบอท ไม่เคย commit มันลง git และล็อกเซิร์ฟเวอร์ด้วยคีย์ SSH หากโทเคนรั่ว เพิกถอนใน BotFather และออกใหม่

ความคิดเห็น

ยังไม่มีความคิดเห็น เป็นคนแรกสิ

แสดงความคิดเห็น

ความคิดเห็นจะถูกตรวจสอบก่อนแสดง