Langsung ke konten

Solusi · Bot

VPS untuk bot Telegram

Sebuah bot dalam keadaan diam memakai kurang dari seratus megabyte dan menghabiskan waktunya untuk menunggu, jadi mesin hampir tidak pernah menjadi kendala: U1-1 seharga $6.90 per bulan sudah cukup untuk menjalankan satu bot dengan baik. Yang sebenarnya menentukan tagihan Anda adalah media, dan apakah Anda menjalankan server Bot API sendiri. Keduanya soal hitungan, dan keduanya ada di bawah.

Keputusan di balik keputusan

Webhook atau long polling

Hal inilah, bukan paketnya, yang menentukan apakah bot Anda memerlukan domain, sertifikat, dan port terbuka.

Long polling

Bot Anda terhubung keluar ke Telegram dan menunggu pembaruan. Tanpa domain, tanpa sertifikat TLS, tanpa port yang terbuka ke internet, dan dapat bekerja di balik NAT. Ini cara tercepat untuk membuat sesuatu berjalan dan merupakan solusi permanen yang sangat layak untuk sebagian besar bot.

Webhook

Telegram yang terhubung ke Anda. Memerlukan alamat publik, sertifikat yang valid, dan port terbuka (semuanya dapat dilakukan oleh paket mana pun di sini), dan sebagai gantinya tidak ada loop polling serta skalanya lebih baik di bawah beban nyata. Beralihlah ketika beban atau latensi menuntutnya, tidak sebelumnya.

Hitungannya

Berapa banyak bot yang benar-benar muat dalam satu paket

Bot = (RAM − 300 MB sistem operasi) ÷ memori yang dipakai satu bot. Kedua kolom adalah bot perintah stateless dan bot yang membawa ORM, penjadwal, dan cache.

Kapasitas proses bot dan kuota transfer bulanan untuk setiap paket, dengan harga terkini
PaketRAMBot ringanBot beratTransferHargaDeploy
U1-1Satu bot, audiens sebesar apa pun1 GB124Unmetered$6.90Deploy
C1-1-25Satu bot, trafik dihitung tetapi murah1 GB1241 TB$9.90Deploy
GL2-4Beberapa bot, atau bot dengan database4 GB6325Unmetered$11.90Deploy
BD-8Server Bot API yang di-host sendiri8 GB1315232 TB$12.90Deploy

Jumlah pengguna bot Anda tidak ada dalam hitungan ini, karena memang bukan bagian dari masalahnya: Telegram menyerahkan pembaruan ke proses Anda satu per satu, bukan membuka koneksi per pengguna. Yang mengubah jawabannya adalah state yang Anda simpan sendiri: cache besar, database dalam proses, atau model.

Angka yang menentukan tagihan

Media, bukan memori

Rata-rata ukuran file × pesan per hari × 30. Kedua arah dihitung: file yang diterima juga merupakan trafik.

Transfer bulanan menurut jenis pesan pada seratus, lima ribu, dan lima puluh ribu pesan per hari
Apa yang dipindahkan bot100/hari5,000/hari50,000/hari
Hanya teksSebuah perintah dan sebuah balasan. Praktis tanpa biaya.< 1 GB< 1 GB3 GB
FotoGambar terkompresi, dikirim dan diterima.< 1 GB44 GB439 GB
Pesan suara dan video pendekBeban umum pada bot komunitas.9 GB439 GB4.3 TB
Dokumen dan video panjangBatas unduhan dari Telegram sendiri untuk bot biasa.59 GB2.9 TB28.6 TB

Satu hal yang mengubah kebutuhan mesin

Bot pada Bot API publik dapat mengunduh file hingga 20 MB dan mengunggah hingga 50 MB (batasan Telegram, bukan batasan kami), dan file tersebut tidak pernah menyentuh disk Anda. Jika Anda menjalankan server Bot API sendiri, batasnya menjadi 2 GB dan setiap file tersimpan di server Anda. Di titik itulah disk dan transfer tidak lagi sekadar pelengkap: BD-8 memberi Anda 100 GB SSD dan 32 TB seharga $12.90, bentuk yang cocok untuk kebutuhan ini. Jika Anda tidak melakukan hal itu, jangan membayar untuknya.

Terus terang

Yang benar-benar akan kami beli

Kami sendiri menjalankan bot Telegram. Inilah mesin yang akan kami gunakan untuknya.

Untuk satu bot

U1-1 · $6.90/bln

1 core, 1 GB, 15 GB SSD, dan tanpa penghitungan trafik, sehingga bot yang tiba-tiba mulai memindahkan media tidak dapat menimbulkan tagihan yang tidak Anda duga. Jalankan bot di bawah systemd dengan Restart=always, dan satu-satunya cara tersisa bot bisa mati adalah kode Anda sendiri. Jika kebutuhan Anda bertambah, memindahkan bot cukup dengan menyalin sebuah direktori dan token.

Pertanyaan

Pertanyaan orang sebelum membelinya.

Berapa RAM yang dibutuhkan bot Telegram?
Jauh lebih sedikit daripada yang biasa ditawarkan. Bot adalah proses berumur panjang yang hampir sepanjang waktu menunggu: bot perintah stateless memakai sekitar 60 MB, dan bot yang membawa ORM, penjadwal, dan cache mendekati 150 MB. Setelah sistem operasi mengambil sekitar 300 MB, mesin 1 GB masih memiliki ruang untuk 4 bot berat atau 12 bot ringan. Jumlah PENGGUNA hampir tidak berpengaruh, karena Telegram mengirimkan pembaruan satu per satu ke proses Anda, bukan satu koneksi per pengguna. Yang benar-benar mengubah jawabannya adalah state yang Anda simpan sendiri di memori: cache besar, database dalam proses, atau model.
Webhook atau long polling?
Mulai dengan long polling, beralih ke webhook bila memang diperlukan. Dengan long polling, bot Anda membuka koneksi keluar ke Telegram dan menunggu: tidak perlu domain, sertifikat, atau port terbuka, sehingga dapat bekerja di balik NAT dan merupakan cara tercepat untuk membuat sesuatu berjalan. Dengan webhook, Telegram yang terhubung ke ANDA, jadi diperlukan alamat publik, sertifikat TLS yang valid, dan port yang terbuka ke internet; sebagai gantinya, loop polling hilang sepenuhnya dan skalanya lebih baik saat bot benar-benar sibuk. Keduanya berjalan baik di mesin terkecil di sini. Alasan jujur untuk beralih adalah beban atau latensi, bukan tren.
Berapa batas ukuran file?
Batasan dari Telegram sendiri, bukan dari kami: bot yang memakai Bot API publik dapat mengunduh file hingga 20 MB dan mengunggah hingga 50 MB. Menjalankan server Bot API sendiri menaikkan batas itu menjadi 2 GB dan, yang lebih penting, membuat file tersimpan di disk server Anda alih-alih melewati server Telegram. Itulah satu-satunya perubahan yang benar-benar mengubah mesin yang Anda butuhkan: tiba-tiba disk dan transfer menjadi penting, itulah sebabnya tabel di atas menempatkan BD-8 pada baris tersebut dan bukan pada baris lainnya.
Apakah bandwidth saya akan habis?
Bot teks, tidak akan pernah. Bot media, mungkin saja, dan layak dihitung selama tiga puluh detik: rata-rata ukuran file × pesan per hari × 30. Lima puluh ribu pesan suara per hari berukuran 3 MB berarti sekitar 4.3 TB per bulan, melebihi kuota sebagian besar paket murah dan masih jauh dari 32 TB pada BD-8, atau lini tanpa penghitungan trafik, di mana pertanyaan ini tidak muncul. Kedua arah dihitung: file yang diterima bot Anda dan file yang dikirimnya sama-sama terhitung sebagai trafik.
Bagaimana agar bot tetap berjalan setelah saya menutup terminal?
Unit systemd, bukan sesi screen. Tulis file layanan kecil dengan Restart=always, aktifkan, dan bot akan hidup kembali setelah crash maupun reboot tanpa Anda harus terjaga. Inilah alasan paling umum sebuah bot "mati" di VPS, dan itu bukan masalah hosting: proses yang dijalankan secara manual akan mati bersama sesi SSH yang memulainya. Docker dengan restart policy melakukan hal yang sama jika Anda lebih suka mengemasnya seperti itu.
Bisakah saya menjalankan beberapa bot di satu server?
Ya, dan kebanyakan orang sebaiknya melakukannya. Masing-masing adalah proses terpisah dengan unit systemd dan token sendiri; mereka berbagi mesin, database jika Anda mau, dan tidak ada yang lain. Hitungan dalam tabel menjawab persis pertanyaan ini: mesin 4 GB memuat 25 bot berat sebelum memori menjadi kendala. Gunakan port dan pengguna terpisah jika bot-bot itu untuk orang yang berbeda.
Di region mana bot sebaiknya dijalankan?
Di mana saja yang dapat dijangkau pengguna Anda dan latensinya ke Telegram wajar. Bot berkomunikasi dengan infrastruktur Telegram, bukan langsung dengan pengguna Anda, jadi aturan umum "dekat dengan audiens" kurang penting di sini dibandingkan untuk sebuah situs web. Jika bot juga menyajikan dasbor web atau API kepada pengguna yang sama, pilih region berdasarkan hal itu. Jika ragu, deploy per jam di dua region, ukur, lalu hapus yang kalah: biaya $0.0113 per jam membuatnya menjadi eksperimen yang murah.