ข้ามไปยังเนื้อหา

โซลูชัน · บอท

VPS สำหรับบอท Telegram

บอทใช้หน่วยความจำขณะว่างไม่ถึงหนึ่งร้อยเมกะไบต์และใช้เวลาเกือบทั้งหมดไปกับการรอ เครื่องจึงแทบไม่เคยเป็นข้อจำกัด U1-1 ราคา $6.90 ต่อเดือนรันบอทหนึ่งตัวได้อย่างเหมาะสม สิ่งที่กำหนดค่าใช้จ่ายจริงคือสื่อ และการที่คุณรันเซิร์ฟเวอร์ Bot API ของตัวเองหรือไม่ ทั้งสองเรื่องคำนวณได้ และอยู่ด้านล่างนี้

การตัดสินใจที่อยู่เบื้องหลังการตัดสินใจ

Webhook หรือ long polling

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

Long polling

บอทของคุณเชื่อมต่อออกไปหา Telegram และรออัปเดต ไม่ต้องมีโดเมน ไม่ต้องมีใบรับรอง TLS ไม่ต้องเปิดพอร์ตสู่อินเทอร์เน็ต และทำงานหลัง NAT ได้ เป็นวิธีที่เร็วที่สุดในการเริ่มใช้งาน และเป็นคำตอบถาวรที่ดีพอสำหรับบอทส่วนใหญ่

Webhook

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

คำนวณกันดู

จำนวนบอทที่แพ็กเกจรองรับได้จริง

บอท = (RAM − 300 MB สำหรับระบบปฏิบัติการ) ÷ หน่วยความจำที่บอทหนึ่งตัวใช้ สองคอลัมน์คือบอทคำสั่งแบบ stateless และบอทที่มี ORM, scheduler และแคช

ความจุโปรเซสบอทและโควตาปริมาณรับส่งข้อมูลรายเดือนของแต่ละแพ็กเกจ พร้อมราคาปัจจุบัน
แพ็กเกจRAMบอทเบาบอทหนักปริมาณรับส่งข้อมูลราคาปรับใช้
U1-1บอทหนึ่งตัว ผู้ใช้กี่คนก็ได้1 GB124Unmetered$6.90ปรับใช้
C1-1-25บอทหนึ่งตัว นับปริมาณข้อมูลแต่ราคาถูก1 GB1241 TB$9.90ปรับใช้
GL2-4หลายบอท หรือบอทที่มีฐานข้อมูล4 GB6325Unmetered$11.90ปรับใช้
BD-8เซิร์ฟเวอร์ Bot API ที่โฮสต์เอง8 GB1315232 TB$12.90ปรับใช้

จำนวนผู้ใช้บอทของคุณไม่อยู่ในการคำนวณนี้ เพราะมันไม่ใช่ปัญหา: Telegram ส่งอัปเดตให้โปรเซสของคุณทีละรายการ แทนที่จะเปิดการเชื่อมต่อแยกสำหรับผู้ใช้แต่ละคน สิ่งที่เปลี่ยนคำตอบคือสถานะที่คุณเก็บไว้เอง เช่น แคชขนาดใหญ่ ฐานข้อมูลในโปรเซส หรือโมเดล

ตัวเลขที่กำหนดค่าใช้จ่าย

สื่อ ไม่ใช่หน่วยความจำ

ขนาดไฟล์เฉลี่ย × จำนวนข้อความต่อวัน × 30 นับทั้งสองทิศทาง ไฟล์ที่รับก็เป็นทราฟฟิกเช่นกัน

ปริมาณรับส่งข้อมูลรายเดือนตามประเภทข้อความ ที่หนึ่งร้อย ห้าพัน และห้าหมื่นข้อความต่อวัน
สิ่งที่บอทรับส่ง100/วัน5,000/วัน50,000/วัน
ข้อความอย่างเดียวคำสั่งหนึ่งคำสั่งและการตอบกลับหนึ่งครั้ง แทบไม่มีค่าใช้จ่าย< 1 GB< 1 GB3 GB
รูปภาพรูปภาพที่บีบอัด ทั้งส่งและรับ< 1 GB44 GB439 GB
ข้อความเสียงและวิดีโอสั้นโหลดปกติของบอทชุมชน9 GB439 GB4.3 TB
เอกสารและวิดีโอยาวเพดานการดาวน์โหลดของ Telegram เองสำหรับบอททั่วไป59 GB2.9 TB28.6 TB

สิ่งเดียวที่เปลี่ยนสเปกเครื่อง

บอทบน Bot API สาธารณะดาวน์โหลดไฟล์ได้สูงสุด 20 MB และอัปโหลดได้สูงสุด 50 MB (เป็นข้อจำกัดของ Telegram ไม่ใช่ของเรา) และไฟล์จะไม่ผ่านดิสก์ของคุณเลย หากรันเซิร์ฟเวอร์ Bot API ของตัวเอง เพดานจะเป็น 2 GB และทุกไฟล์จะมาอยู่บนเซิร์ฟเวอร์ของคุณ ถึงจุดนั้นดิสก์และปริมาณรับส่งข้อมูลจะไม่ใช่เรื่องเล็กอีกต่อไป: BD-8 ให้ SSD 100 GB และ 32 TB ในราคา $12.90 ซึ่งเป็นรูปแบบที่เหมาะสม หากคุณไม่ได้ทำเช่นนั้น ก็ไม่ต้องจ่ายสำหรับมัน

พูดกันตรง ๆ

สิ่งที่เราจะซื้อจริงๆ

เราเองก็รันบอท Telegram อยู่ นี่คือเครื่องที่เราจะเลือกใช้

สำหรับบอทหนึ่งตัว

U1-1 · $6.90/เดือน

1 คอร์, 1 GB, 15 GB SSD และไม่มีการนับทราฟฟิก ดังนั้นบอทที่เริ่มรับส่งสื่อโดยไม่คาดคิดจะไม่ทำให้เกิดค่าใช้จ่ายที่คุณไม่ได้คาดไว้ ให้บอททำงานภายใต้ systemd พร้อม Restart=always แล้วสาเหตุเดียวที่เหลือที่จะทำให้บอทล่มคือโค้ดของคุณเอง หากใช้งานเกินสเปก การย้ายบอทก็แค่คัดลอกไดเรกทอรีและโทเค็น

คำถาม

คำถามที่ผู้คนถามก่อนซื้อ

บอท Telegram ต้องใช้ RAM เท่าไร?
น้อยกว่าที่มักถูกขายมาก บอทเป็นโปรเซสที่ทำงานยาวนานและใช้เวลาเกือบทั้งหมดไปกับการรอ บอทคำสั่งแบบ stateless ใช้ประมาณ 60 MB และบอทที่มี ORM, scheduler และแคชใช้ราว 150 MB หลังจากระบบปฏิบัติการใช้ไปประมาณ 300 MB เครื่อง 1 GB ยังมีพื้นที่สำหรับบอทหนัก 4 ตัว หรือบอทเบา 12 ตัว จำนวนผู้ใช้แทบไม่มีผล เพราะ Telegram ส่งอัปเดตไปยังโปรเซสของคุณทีละรายการ ไม่ใช่หนึ่งการเชื่อมต่อต่อผู้ใช้หนึ่งคน สิ่งที่เปลี่ยนคำตอบคือสถานะที่คุณเก็บไว้ในหน่วยความจำเอง เช่น แคชขนาดใหญ่ ฐานข้อมูลในโปรเซส หรือโมเดล
Webhook หรือ long polling?
เริ่มด้วย long polling แล้วเปลี่ยนเป็น webhook เมื่อจำเป็น ด้วย long polling บอทจะเปิดการเชื่อมต่อออกไปยัง Telegram แล้วรอ ไม่ต้องใช้โดเมน ใบรับรอง หรือพอร์ตที่เปิด จึงทำงานหลัง NAT ได้และเป็นวิธีที่เร็วที่สุดในการเริ่มใช้งาน Webhook ให้ Telegram เชื่อมต่อมาหาคุณ จึงต้องมีที่อยู่สาธารณะ ใบรับรอง TLS ที่ถูกต้อง และพอร์ตที่เปิดสู่อินเทอร์เน็ต แลกกับการไม่มีลูป polling เลยและขยายได้ดีกว่าเมื่อบอทมีงานมากจริง ๆ ทั้งสองแบบทำงานได้ดีบนเครื่องที่เล็กที่สุดที่นี่ เหตุผลที่แท้จริงในการเปลี่ยนคือโหลดหรือความหน่วง ไม่ใช่กระแสนิยม
ขีดจำกัดขนาดไฟล์คือเท่าไร?
นี่คือข้อจำกัดของ Telegram เอง ไม่ใช่ของเรา: บอทที่ใช้ Bot API สาธารณะสามารถดาวน์โหลดไฟล์ได้สูงสุด 20 MB และอัปโหลดได้สูงสุด 50 MB การรัน Bot API server ของคุณเองจะขยายขีดจำกัดนี้เป็น 2 GB และที่สำคัญกว่านั้น ไฟล์จะถูกเก็บลงดิสก์ของเซิร์ฟเวอร์คุณแทนที่จะผ่านของ Telegram นี่คือการเปลี่ยนแปลงเดียวที่ส่งผลจริงต่อเครื่องที่คุณต้องใช้ เพราะดิสก์และปริมาณรับส่งข้อมูลกลายเป็นเรื่องสำคัญขึ้นมาทันที ซึ่งเป็นเหตุผลที่ตารางด้านบนจับคู่ BD-8 กับแถวนั้น ไม่ใช่แถวอื่น
แบนด์วิดท์จะหมดไหม?
บอทข้อความ ไม่มีทาง บอทสื่อ อาจเป็นไปได้ และคุ้มที่จะใช้เวลาสามสิบวินาทีคำนวณ: ขนาดไฟล์เฉลี่ย × จำนวนข้อความต่อวัน × 30 ข้อความเสียงห้าหมื่นรายการต่อวันที่ 3 MB คิดเป็นประมาณ 4.3 TB ต่อเดือน ซึ่งเกินโควตาของแพ็กเกจราคาถูกส่วนใหญ่ แต่ยังห่างไกลจาก 32 TB ของ BD-8 หรือสายผลิตภัณฑ์ Unmetered ที่ไม่มีคำถามนี้เลย นับทั้งสองทิศทาง: ไฟล์ที่บอทรับและไฟล์ที่บอทส่งล้วนเป็นทราฟฟิก
จะทำให้บอททำงานต่อหลังปิดเทอร์มินัลได้อย่างไร?
ใช้ systemd unit ไม่ใช่ screen session เขียนไฟล์ service เล็ก ๆ ที่มี Restart=always เปิดใช้งาน แล้วบอทจะกลับมาทำงานหลังการแครชและหลังรีบูตโดยที่คุณไม่ต้องตื่นมาจัดการ นี่คือสาเหตุที่พบบ่อยที่สุดที่บอท "ล่ม" บน VPS และไม่ใช่ปัญหาของโฮสติ้ง โปรเซสที่เริ่มด้วยมือจะหยุดไปพร้อมกับเซสชัน SSH ที่เริ่มมัน Docker ที่มี restart policy ก็ทำหน้าที่เดียวกันได้ หากคุณต้องการแพ็กเกจแบบนั้น
ฉันรันหลายบอทบนเซิร์ฟเวอร์เดียวได้หรือไม่?
ได้ และคนส่วนใหญ่ก็ควรทำเช่นนั้น แต่ละบอทเป็นโปรเซสแยกที่มี systemd unit และโทเค็นของตัวเอง ใช้เครื่องร่วมกัน และฐานข้อมูลร่วมกันได้หากต้องการ นอกนั้นไม่มีอะไรใช้ร่วมกัน การคำนวณในตารางตอบคำถามนี้โดยตรง: เครื่อง 4 GB รองรับบอทหนักได้ 25 ตัวก่อนที่หน่วยความจำจะเป็นข้อจำกัด หากบอทเป็นของคนต่างกัน ให้แยกพอร์ตและแยกผู้ใช้
ควรรันบอทในภูมิภาคใด?
ที่ใดก็ได้ที่ผู้ใช้ของคุณเข้าถึงได้และความหน่วงไปยัง Telegram อยู่ในระดับสมเหตุสมผล บอทสื่อสารกับโครงสร้างพื้นฐานของ Telegram ไม่ใช่กับผู้ใช้โดยตรง กฎ "ใกล้กลุ่มเป้าหมาย" ตามปกติจึงสำคัญน้อยกว่าสำหรับเว็บไซต์ หากบอทให้บริการแดชบอร์ดเว็บหรือ API แก่ผู้ใช้กลุ่มเดียวกันด้วย ให้เลือกภูมิภาคตามสิ่งนั้นแทน หากไม่แน่ใจ ให้ปรับใช้แบบรายชั่วโมงในสองภูมิภาค วัดผล แล้วลบภูมิภาคที่แพ้ทิ้ง ด้วยค่าใช้จ่าย $0.0113 ต่อชั่วโมง การทดลองนี้จึงมีต้นทุนต่ำ