Telegram botu için VPS: botun ihtiyaçları ve paket seçimi
Menüsü ve birkaç komutu olan bir bot en ucuz sunucuda sorunsuz çalışır; toplu gönderim yapan, dosya işleyen ve veritabanı kullanan bir bot ise bambaşka sınırlara takılır. Bir botun gerçekte neyi tükettiğini, hangi Telegram sınırlarının sunucu seçimini belirlediğini ve fazla ödemekten nasıl kaçınacağınızı anlatıyoruz.
"Bot için VPS" araması genellikle en ucuz paketle biter ve vakaların yarısında bu doğru karardır. Sorunlar sonradan ortaya çıkar: toplu gönderim 429 hataları döndürür, bot kullanıcının gönderdiği videoyu indiremez, yeni sunucuya taşındıktan sonra webhook gelmez olur ya da gece yaşanan bir kesintide mesajlar kaybolur. Bunların neredeyse tamamı çekirdek eksikliğinden değil, Bot API'nin çalışma biçiminden kaynaklanır. Aşağıda botunuzun yükünü nasıl tahmin edeceğinizi, hangi Telegram kurallarının sunucu gereksinimlerini belirlediğini ve ödeme yapmadan önce pakette neleri kontrol etmeniz gerektiğini bulacaksınız.
Bir bot gerçekte neyi tüketir
Botun kendisi, Telegram'dan güncellemeleri alıp yanıt gönderen küçük bir süreçtir. Kaynaklar asıl olarak etrafındaki her şeye gider.
- Ağ ve gecikme. Botun her işlemi api.telegram.org adresine giden bir HTTPS isteğidir. Menü botu için bant genişliğinden çok bağlantının istikrarı önemlidir: trafik günde megabaytlarla ölçülür.
- Veritabanı. Birkaç yüz kullanıcı için SQLite yeterlidir. Binlerce kullanıcı, sipariş, istatistik ve eşzamanlı istek olduğunda PostgreSQL veya MySQL gerekir; bu da yüzlerce megabayt bellek ve hızlı bir disk demektir.
- Kuyruklar ve arka plan işleri. Toplu gönderimler, zamanlanmış hatırlatmalar, harici servisler üzerinden ödeme işleme. Genellikle bu, Redis ile ayrı bir worker süreci anlamına gelir.
- Dosyalar. Video dönüştürme, görsel üretme ve PDF raporlar işlemciyi ve diski geri kalan her şeyden daha fazla yorar.
- Harici API'ler. İstekleri API üzerinden bir yapay zekâ modeline ileten bot sunucuyu neredeyse hiç yormaz: sadece yanıtı bekler. Yerel model çalıştıran bir bot ise güçlü bir sunucu veya GPU gerektirir.
"Bot ne kadar ağır" diye değil, bu bileşenlerden kaç tane olduğuna ve hangilerinin sürekli çalıştığına bakarak tahmin yapın.
Sunucuyu etkileyen Bot API sınırları
Telegram'ın, sunucu ne kadar güçlü olursa olsun aşılamayan sınırları vardır. Botun kullanamayacağı kaynaklara para ödememek için bunları paket seçmeden önce bilin.
- Gönderim hızı. Telegram tek bir sohbete saniyede birden fazla, bir gruba dakikada 20'den fazla mesaj göndermemeyi ve toplu gönderimleri saniyede yaklaşık 30 mesajdan hızlı yapmamayı önerir. Bu sınırların üstünde Bot API,
retry_afterparametresiyle 429 hatası döndürür. 10.000 kullanıcıya yapılan bir gönderim her sunucuda birkaç dakika sürer; yani ek çekirdeğe değil, hız sınırlı bir kuyruğa ihtiyacınız vardır. - Dosya boyutu. Standart Bot API üzerinden bot 20 MB'a kadar dosya indirebilir ve 50 MB'a kadar dosya yükleyebilir. Daha fazlası için kendi Bot API sunucunuzu (açık kaynaklı telegram-bot-api projesi) çalıştırırsınız: indirme sınırını kaldırır ve 2000 MB'a kadar yüklemeye izin verir. Bu sunucu dosyaları diskte tuttuğu için boş disk alanı ve bellek payı ister.
- Güncellemelerin saklanması. Bot kapalıyken Telegram gelen güncellemeleri saklar, ancak en fazla 24 saat. İzleme olmadan geçen bir günlük kesintide kullanıcı mesajlarının bir kısmı kalıcı olarak kaybolur.
Webhook için sunucu gereksinimleri
Temel webhook kuralları, yani HTTPS ve 443, 80, 88 veya 8443 portları, Telegram botu için VPS sayfasında anlatılıyor. Birkaç gereksinim ise genellikle ancak sunucu satın alındıktan sonra fark edilir.
- Yalnızca IPv4. Telegram webhook'ları yalnızca IPv4 adreslerine iletir; IPv6 desteklenmez. Ayrılmış IPv4 içermeyen en ucuz paketler webhook için işe yaramaz: geriye long polling ya da ücretli bir IPv4 kalır.
- TLS 1.2 ve üzeri. Eski SSL sürümleri ve TLS 1.0/1.1 reddedilir. Sertifika alan adıyla eşleşmelidir; kendinden imzalı bir sertifika,
setWebhookçağrısında yüklenirse çalışır. - Kaynak adresler. İstekler 149.154.160.0/20 ve 91.108.4.0/22 alt ağlarından gelir. Güvenlik duvarında webhook portunu yalnızca bunlara açabilirsiniz.
- Gizli başlık.
secret_tokenparametresi,setWebhookçağrısında belirtildiğinde Telegram'ın her isteğeX-Telegram-Bot-Api-Secret-Tokenbaşlığını eklemesini sağlar. Sahte istekleri elemek için uygulamanızda bu başlığı kontrol edin. - Paralel bağlantılar. Telegram varsayılan olarak webhook'a en fazla 40 eşzamanlı bağlantı açar (1 ile 100 arasında ayarlanabilir). İşleyici yavaşsa istekler birikir; bu yüzden ağır işleri kuyruğa devredin ve Telegram'a hemen yanıt verin.
Webhook ayarlıyken getUpdates ile güncelleme alamazsınız. Yeni sunucuya taşınırken önce botu orada ayağa kaldırın, ardından webhook'u yeni adrese yönlendirin; drop_pending_updates parametresini yalnızca bekleyen güncellemelere gerçekten ihtiyacınız yoksa kullanın.
Hangi bota hangi paket
Python, Node.js veya Go ile yazılmış bir botu çalıştıran Linux sunucu için yol gösterici değerler. Rakamlar sistem, loglar ve güncellemeler için payı da içerir.
| Bot profili | Sunucuda çalışanlar | Paket |
|---|---|---|
| Menü, komutlar, başvuru formları | Bot ve SQLite | 1 vCPU, 1 GB RAM, 10–20 GB SSD |
| Mağaza veya randevu sistemi | Bot, PostgreSQL, Redis, yönetim paneli | 2 vCPU, 2–4 GB RAM, 30–40 GB NVMe |
| Geniş kitleye toplu gönderim | Bot, veritabanı, kuyruk, worker'lar | 2 vCPU, 4 GB RAM, NVMe |
| Dosyalar ve medya | Bot, kendi Bot API sunucusu, dönüştürme | 4 vCPU, 4–8 GB RAM, 80 GB veya daha fazla disk |
| Docker'da birkaç bot | Konteynerler, reverse proxy, ortak veritabanı | 2–4 vCPU, 4 GB RAM, KVM |
İlk iki profil için 1 GB RAM'li VPS ve 2 GB RAM'li VPS sayfalarına bakın. Botlar konteynerlerde çalışıyorsa KVM sanallaştırma gerekir, bkz. Docker için VPS. Binlerce kullanıcılı bir veritabanı NVMe'den belirgin şekilde fayda görür, bkz. Veritabanı için VPS.
Pakette neleri kontrol etmeli
- Ayrılmış bir IPv4 webhook için zorunludur ve harici API'lerle çalışmayı kolaylaştırır.
- Çekirdek türü. Menü botu için paylaşımlı çekirdekler yeterlidir. Medya dönüştürme ve komşuların yoğun saatlerine denk gelen zamanlanmış gönderimler için ayrılmış çekirdekler daha istikrarlıdır.
- Saatlik faturalama. Uzun bir dönem için ödeme yapmadan önce botu gerçek yük altında denemek için kullanışlıdır; test sunucusu için tüm ayı ödemezsiniz, bkz. Saatlik faturalı VPS.
- Anlık görüntüler ve yedekler. Botun kullanıcı veritabanı sunucudaki en değerli şeydir. Yedeklerin pakete dahil mi yoksa ek ücretli mi olduğunu kontrol edin.
- Konum. Bir bot için kullanıcılara olan ping'den çok Telegram'a ve harici API'lere giden istikrarlı bir rota önemlidir. Bot kişisel veri saklıyorsa, kullanıcılarınız için geçerli veri yerelleştirme kurallarını, örneğin AB'deki GDPR'ı, kontrol edin.
Farklı sağlayıcıların ağını ve diskini ödeme yapmadan önce nasıl karşılaştıracağınız Ödeme yapmadan önce VPS ping ve hızı nasıl test edilir yazısında anlatılıyor.
Güvenilirlik: bot mesaj kaybetmesin
Çökme sonrası systemd veya Docker ile yeniden başlatma asgari önlemdir. Bot para kazandırıyorsa bu yeterli değildir.
- Harici izleme. Birkaç dakikada bir botun yanıt verip vermediğini kontrol edin:
getWebhookInfometodu bekleyen güncelleme sayısını ve son iletim hatasını gösterir. Büyüyen bir kuyruk, süreç görünüşte çalışıyor olsa bile botun takıldığı anlamına gelir. - Veritabanının sunucu dışına yedeklenmesi. Ayrı bir depolamaya günlük döküm. Sorun hesapta veya veri merkezindeyse aynı sağlayıcıdaki anlık görüntü işe yaramaz.
- Sistem güncellemeleri. Otomatik güvenlik güncellemeleri ve botun en az kullanıcıya sahip olduğu gece saatlerinde yeniden başlatmalar.
- Log rotasyonu. Ayrıntılı log tutan bir bot küçük bir diski birkaç ay içinde doldurabilir; o zaman da veritabanı yazmayı bırakır.
Token ve sunucu erişimi
Bot token'ı bot üzerinde tam kontrol sağlar: ona sahip olan herkes gelen mesajları okuyabilir ve bot adına mesaj gönderebilir. Token'ı depoda değil, ortam değişkenlerinde ya da yalnızca botun kullanıcısının okuyabildiği bir dosyada saklayın. Botu root yetkisi olmayan ayrı bir kullanıcıyla çalıştırın. Sunucuya SSH anahtarlarıyla girin ve parolayla girişi kapatın. Token sızmış olabilirse @BotFather'da /revoke komutuyla iptal edin ve yenisini alın.
Bot ödeme alıyorsa ödeme anahtarlarını token'dan ayrı tutun ve ödeme sağlayıcısından gelen isteklerin tam gövdesini loglamayın.
Tek bir VPS yetmediğinde
Ağır işler kuyruk üzerinden yürütülürse tek bir sunucu on binlerce kullanıcısı olan bir botu kaldırır. Veritabanı ve worker'lar birbirinin önüne geçmeye başladığında ayırın: veritabanı NVMe'li ayrı bir sunucuya, medya worker'ları daha fazla çekirdekli bir sunucuya taşınır. İşlemci, bellek ve disk seçiminin genel ilkeleri VPS nasıl seçilir yazısında. Diğer mesajlaşma uygulamalarındaki botlar için ayrı seçkiler de var, örneğin Discord botu için VPS.