Ana içeriğe geç
%50 indirim tüm planlarda, sınırlı süreyle. Başlangıç fiyatı $2.48/mo
Kalan süre: 11 dk.
Bulut Mimarisi ve BT

Telegram Botu Barındırmak İçin En İyi VPS: Polling, Webhook, IPv4 ve Aylık Maliyet

C Yazan Chike 11 dk okuma
VPS ve kesintisiz bağlantıyla Telegram botu barındırma

Bot, dizüstü bilgisayarın kapağı kapanana kadar her mesaja yanıt verir; sonrasında kullanıcılar yanıt alamaz. Küçük bir VPS, ayda birkaç dolara bu sorunu çözer. Telegram botu için en iyi VPS, botun güncellemeleri nasıl aldığına bağlıdır: ya bunları Telegram'dan ister ya da Telegram bota gönderir.

Bu seçim, gereken portları ve sertifikayı, ayrıca genel IPv4 bağlantısının gerekli olup olmadığını belirler.

Kısa Versiyon

  • VPS üzerinde tek bir bot için long polling kullanın. Alan adı, sertifika veya açık port gerektirmez.
  • Webhook'lar 443, 80, 88 veya 8443 portunda HTTPS ve genel bir IPv4 adresi gerektirir. Telegram, webhook'ları IPv6 üzerinden iletmez.
  • 512 MB of RAM is a workable start for one bot with no local database.
  • Botu systemd ile veya zaten konteyner kullanıyorsanız Docker'ın yeniden başlatma ilkesiyle çalışır durumda tutun.
  • Sağlayıcıyı yalnızca liste fiyatına göre değil, IPv4 ve RAM payını dikkate alarak seçin.

Polling mi Webhook mu: Sunucu Gereksinimlerini Belirleyen Seçim

Telegram ile VPS arasında long polling ve webhook bağlantıları

Telegram botu güncellemeleri iki yoldan biriyle alır. Long polling'de bot getUpdates çağrısı yapar; Telegram, güncelleme gelene veya zaman aşımı dolana kadar isteği açık tutar. Böylece her bağlantı sizin sunucunuzdan başlar. Webhook'ta ise setWebhook ile bir kez URL kaydedersiniz ve Telegram her güncellemeyi HTTPS üzerinden bu adrese POST isteğiyle gönderir.

Gereksinim Long Polling (getUpdates) Webhook (setWebhook)
Gelen bağlantı portu Yok; yalnızca giden istekler 443, 80, 88 veya 8443 üzerinde HTTPS
Genel IPv4 Gerekmez Gerekir; webhook'larda IPv6 desteklenmez
Alan adı ve sertifika Gerekmez Sertifika gerekir; genellikle alan adı kullanılır, ancak kendinden imzalı sertifika CN olarak IP'yi kullanabilir
İşlem Sürekli çalışır HTTPS isteklerine sürekli yanıt verir

Webhook sütunu Telegram'ın webhook gereksinimlerine dayanır.

Botunuzun hangi yöntemi kullandığını görmek için Bot API'ye sorun:

curl "https://api.telegram.org/bot<YOUR_TOKEN>/getWebhookInfo"

Yanıtta "url":"" varsa yapılandırılmış webhook yoktur; bot long polling kullanabilir. grammY'deki bot.start() varsayılan olarak long polling yapar; python-telegram-bot ise run_polling() veya run_webhook() kullanır.

Kendi VPS'inde çalışan tek bir bot için polling seçerdim; bu aynı zamanda grammY'nin varsayılan önerisidir. Sunucuda zaten bir ters proxy (HTTPS isteklerini botunuza ileten web sunucusu) varsa, birkaç bot aynı HTTPS uç noktasını paylaşıyorsa veya sunucusuz bir platform kullanılıyorsa webhook avantajlıdır. Bu yolda Caddy, sertifikayı alıp yeniler; cron görevi gerekmez.

Kısa bir kesinti mesajları kaybetmeden geciktirir. Bot API'nin güncelleme kurallarına göre Telegram, bot hangi yöntemi kullanırsa kullansın güncellemeleri alana kadar en fazla 24 saat saklar ve vazgeçmeden önce başarısız webhook isteklerini tekrarlar.

Webhook portunu doğrudan kendisi kullanıyorsa bu portu Telegram'ın yayımladığı kaynak adres aralıklarıyla sınırlayın. Port 443, başka sitelere de hizmet veren bir ters proxy tarafından paylaşılıyorsa kısıtlamayı yalnızca webhook yoluna uygulayın veya diğer tüm HTTPS trafiğini engellemek yerine Telegram'ın gizli token'ını kullanın. Webhook kılavuzu iki kaynak adres aralığı listeler ve bunların değişebileceği konusunda uyarır. Ana makinenin güvenlik duvarı olarak UFW kullanıldığında:

sudo ufw allow 22/tcp    # keep SSH open before you enable the firewall

sudo ufw allow proto tcp from 149.154.160.0/20 to any port 443

sudo ufw allow proto tcp from 91.108.4.0/22 to any port 443

sudo ufw allow 80/tcp    # if your HTTPS setup uses HTTP validation or redirects HTTP to HTTPS

sudo ufw enable

Webhook 80, 88 veya 8443 portunu dinliyorsa 443 değerini değiştirin. Bu kurallar doğrudan ana makinede çalışan botu korur. Docker'ın güvenlik duvarı belgeleri yayımlanmış bir portun UFW'yi atladığını söyler; bu nedenle -p 443:443 ile başlatılan webhook konteyneri herkese açık kalır. Ayrıca setWebhook içinde bir secret_token ayarlayın. Telegram bunu her isteğin X-Telegram-Bot-Api-Secret-Token başlığında iletir; işleyiciniz de bu token'ı içermeyen istekleri reddeder.

Botu Çalışır Durumda Tutmak: systemd veya Docker

Telegram botunu systemd veya Docker ile çalışır durumda tutma

Telegram botunu 7/24 çalıştırmak, çökme ve yeniden başlatmalardan sonra onu tekrar başlatmayı gerektirir. VPS üzerinde bunu systemd yapar; bot bir imaj olarak dağıtılıyorsa Docker da kullanılabilir.

systemd birimi, başlatma sistemine programı nasıl başlatıp yeniden başlatacağını söyleyen kısa bir yapılandırma dosyasıdır. /etc/systemd/system/telegram-bot.service dosyasını oluşturun:

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

[Service]
User=bot
WorkingDirectory=/opt/bot
EnvironmentFile=/opt/bot/.env
ExecStart=/opt/bot/venv/bin/python bot.py
# Node: ExecStart=/usr/bin/node bot.js
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Token'ı kodun dışında tutmak için proje klasöründeki .env dosyasına BOT_TOKEN=... olarak yazın ve os.environ["BOT_TOKEN"] ile okuyun (Node: process.env.BOT_TOKEN). Ardından projeyi yerine kopyalayıp başlatın:

sudo mkdir -p /opt/bot

sudo cp -r ~/your-bot/. /opt/bot/        # your project, after git clone or scp from your machine; include .env and requirements.txt

sudo apt install -y python3-venv         # Debian/Ubuntu

sudo useradd --system --no-create-home bot

sudo chown -R bot:bot /opt/bot

sudo -u bot python3 -m venv /opt/bot/venv

sudo -u bot /opt/bot/venv/bin/pip install -r /opt/bot/requirements.txt

# Node: skip the venv and pip commands above, then run:

cd /opt/bot && sudo -u bot npm ci

sudo chmod 600 /opt/bot/.env

sudo systemctl daemon-reload

sudo systemctl enable --now telegram-bot

systemctl status telegram-bot    # look for: Active: active (running)

sudo journalctl -u telegram-bot -f    # follow the bot's logs

Restart=always, bot normal biçimde sonlansa da çökse de yeniden başlatır; systemd.service kılavuzuna göre on-failure normal sonlanmaları atlar. RestartSec=5 denemeler arasına süre koyar; WantedBy=multi-user.target ve enable birlikte botu açılışta başlatır. Sürekli yeniden başlıyorsa sudo journalctl -u telegram-bot -n 50 hata izini gösterir. Önce BOT_TOKEN değerinin eksik olup olmadığını kontrol edin.

Docker karşılığı tek bir bayraktır:

docker run -d --name telegram-bot --restart unless-stopped --env-file .env your-bot-image

docker logs -f telegram-bot

Compose'da satır restart: unless-stopped şeklindedir. Docker'ın yeniden başlatma ilkesi belgelerine göre konteyner, işlem sonlandığında veya daemon yeniden başladığında geri gelir; siz kendiniz durdurduktan sonra değil. Docker'ın kendisi açılışta başlıyorsa bu, yeniden başlatmaları da kapsar; Debian ve Ubuntu'da varsayılan davranış budur. Diğer sistemlerde sudo systemctl enable docker.service çalıştırın.

Benim kuralım: küçük bir sunucuda tek bir betik için systemd kullanın; bellekte ek daemon olmasın. Zaten imaj oluşturuyor veya başka konteynerler çalıştırıyorsanız Docker kullanın ve daemon'ın RAM'in bir bölümünü tükettiğini hesaba katın.

Bu araçların hiçbiri botun devre dışı kaldığını bildirmez. İkinci bir sunucudaki Uptime Kuma push izleyicisi bunu yapabilir. Bot, zamanlayıcıyla izleyicinin URL'sini çağırır; çağrılar durduğunda Uptime Kuma sizi Telegram'dan uyarır.

Ücretsiz Barındırma ve Ev Sunucuları Nerede Yetersiz Kalır?

Render, 15 dakika gelen trafik olmadığında ücretsiz web hizmetini durdurur; Render'ın ücretsiz katman belgeleri uyanmanın yaklaşık bir dakika sürdüğünü belirtir. Polling botu gelen trafik almadığından durdurulur. Webhook botunu Telegram'ın POST isteği uyandırır; sessiz dönemlerden sonra soğuk başlangıç yaşanır. Dolayısıyla Telegram botu için ücretsiz barındırmanın işe yarayıp yaramaması botun kullandığı yönteme bağlıdır.

grammY kılavuzu sunucusuz platformları webhook'lar için uygun seçenekler arasında sayar; long polling ise günün her saati çalışan bir makine gerektirir. Fly.io kullanıma göre faturalandırır ve kayıtlı kart gerektirir.

Raspberry Pi veya eski bir bilgisayar; makine, elektrik ve bağlantı çalıştığı sürece polling botunu çalıştırabilir. Evden webhook kullanmak için ayrıca genel bir adres ve port yönlendirme gerekir. Hobi botu için bu ücretsiz yolların ikisi de yeterli olabilir.

VPS, sabit aylık fiyatla iki yönteme de uygundur.

Telegram Botu İçin Beş VPS Sağlayıcısının Karşılaştırması

Telegram botu barındırmak için beş VPS sağlayıcısının karşılaştırması

Tablo, Telegram botu barındırmak için beş ücretli giriş planını Ekim 2026 itibarıyla geçerli, vergi öncesi ilan edilmiş aylık fiyatlarla karşılaştırır. Varsa promosyon fiyatları belirtilmiştir.

Sağlayıcı Giriş Planının Özellikleri Aylık Fiyat Genel IPv4 Faturalandırma
Cloudzy 1 vCPU (AMD EPYC), 512 MB DDR5, 20 GB NVMe, 1 TB veri aktarımı $2.48 promosyon ($4.95 normal) IPv6 ile birlikte dâhil Saatlik veya aylık
DigitalOcean 1 vCPU, 512 MiB, 10 GiB SSD, 500 GiB veri aktarımı $4'ten itibaren Dâhil Saniyelik, aylık fiyatla sınırlı
Vultr 1 vCPU, 512 MB, 10 GB SSD, 512 GB veri aktarımı $2.50'den itibaren yalnızca IPv6; $3.50'den itibaren IPv4 ile Yalnızca $3.50 planında Saatlik veya aylık
Hetzner (Almanya/Finlandiya) 2 vCPU, 4 GB, 40 GB SSD, 20 TB veri aktarımı KDV hariç €5.49'dan itibaren Ek ücret, KDV hariç aylık €0.50'den itibaren (IPv6 ücretsiz) Saatlik, aylık fiyatla sınırlı
Linode (Akamai) 1 vCPU, 1 GB, 25 GB depolama, 1 TB veri aktarımı $5'ten itibaren Dâhil Saatlik veya aylık

Vultr'ın yalnızca IPv6 planında IPv4 yoktur; Hetzner'ın fiyatı ise IPv4 adresini içermez. Bu adres olmadan ikisi de webhook kabul edemez.

api.telegram.org bir IPv6 adresine sahip olduğundan polling botu yalnızca IPv6 ile çalışabilir. Paket depoları, Git barındırıcınız ve çağırdığı her API dâhil, eriştiği diğer her şeyin de IPv6 adresi olmalıdır. Seçim yapmadan önce her sunucuyu kontrol edin:

dig +short AAAA api.telegram.org

dig +short AAAA github.com

dig +short AAAA pypi.org    # repeat for every host your bot or its installs reach

Boş yanıt, ilgili sunucunun IPv6 adresi olmadığı anlamına gelir.

Telegram Botu İçin 512 MB Yeterli mi?

Yerel veritabanı olmayan tek bir botu 512 MB ile başlatırdım. python-telegram-bot belgelerinde bellek gereksinimi belirtilmez. Belirleyici olan, sunucuyu paylaşan bileşenlerdir: işletim sistemi, kullanılıyorsa Docker daemon'ı ve yerel veritabanı. Kullanımı ölçün.

free -m                   # "available" is your headroom; the Swap row shows swap use

ps -o rss,cmd -p "$(systemctl show -p MainPID --value telegram-bot)"   # bot's resident memory, in KB

docker stats --no-stream  # per-container memory, if the bot runs in Docker

journalctl -k | grep -i "out of memory"   # kernel OOM kills

Bellek yetersizliği nedeniyle sonlandırma (OOM kill), çekirdeğin RAM boşaltmak için bir işlemi bitirmesidir. systemd botu yeniden başlattığından, günlükteki bu satır elinizdeki tek kanıt olabilir. OOM sonlandırmaları görüldüğünde, takas alanı sürekli kullanıldığında veya yerel veritabanı ya da ikinci bir bot eklemeden önce 1 GB'a geçin.

Hangisini Seçmeli?

Tek bir bot için genel IPv4 içeren 512 MB planı seçerdim. Sonrasında sağlayıcı seçimi fiyat, kaynak payı ve kullanıcılarınızın konumuna bağlıdır.

  • Şu anki en düşük aylık fiyat: %50 promosyonu boyunca $2.48 ile Cloudzy; IPv4 ve IPv6 dâhil.
  • IPv4 ile şu anki en düşük fiyat: promosyon boyunca $2.48 ile Cloudzy. Özel IPv4 ve IPv6 dâhil.
  • 1 GB of headroom for Docker or a small database: Linode, from $5 a month.
  • Birkaç bot veya veritabanı, Avrupa'daki kullanıcılar: plan stokta olduğunda bu tabloda avro başına en fazla kaynağı Hetzner sunar (Ekim 2026'da mevcut değil olarak listelenmişti). Webhook için IPv4 ücretini ekleyin.
  • 512 MB'da daha fazla disk ve veri aktarımı: Cloudzy. 512 MB planları arasında en fazla depolama (10 yerine 20 GB NVMe) ve aktarımı (yaklaşık 500 GB yerine 1 TB) sunar; IPv4 ve IPv6 dâhildir. Cloudzy, mevcut promosyon fiyatıyla bu karşılaştırmadaki diğer giriş planlarından da ucuzdur.

Mevcut promosyon fiyatıyla Cloudzy, bu karşılaştırmadaki en düşük aylık fiyatı diğer 512 MB planlarından daha fazla depolama ve veri aktarımıyla birleştirir. Cloudzy'nin 512 MB planı saatlik faturalandırılır ve 14 günlük para iade garantisi sunar; böylece karar vermeden önce botu birkaç gün üzerinde çalıştırabilirsiniz. Kullanıcılarınıza en yakın konumu seçin, Cloudzy Linux VPS kurun ve yukarıdaki systemd birimini ekleyin.

Sıkça Sorulan Sorular

Telegram Botu Çalıştırabilen En Ucuz VPS Hangisi?

Ekim 2026 itibarıyla Cloudzy'nin 512 MB planı, %50 promosyonu boyunca aylık $2.48 ile beş planın en ucuzudur; özel IPv4 ve IPv6 dâhildir. Normal fiyatı aylık $4.95'tir. Vultr'ın yalnızca IPv6 sunan seçeneği biraz daha yüksek bir fiyattan, $2.50'den başlar.

Telegram Webhook'ları Neden HTTPS Gerektirir?

Webhook kılavuzuna göre Telegram, porttan bağımsız olarak webhook'larda SSL/TLS gerektirir. Düz HTTP'yi reddeder; TLS 1.2 ve daha yeni sürümleri kabul eder. TLS olmadan her POST, kullanıcılarınızın mesajlarını şifrelenmemiş olarak taşırdı. Let's Encrypt sertifikası uygundur; setWebhook ile yüklenen kendinden imzalı sertifika da kullanılabilir.

Telegram Botu 512 MB RAM ile Çalışabilir mi?

Yerel veritabanı olmayan tek bir bot için genellikle evet. Çekirdek günlüğünde bellek yetersizliği sonlandırmalarını izleyin; bunlar ortaya çıkarsa veya veritabanı eklediğinizde 1 GB'a geçin.

Telegram Botunu Yeniden Başlatma Sonrasında Nasıl Çalışır Tutabilirim?

systemd hizmetini sudo systemctl enable --now telegram-bot ile etkinleştirin veya konteyneri --restart unless-stopped ile çalıştırıp Docker'ın açılışta başlaması için docker.service hizmetini etkinleştirin.

Telegram Botlara IP Adresine Göre Hız Sınırı Uygular mı?

Telegram'ın bot sınırları SSS'si, sınırları bot ve sohbet başına açıklar; yeni bir sunucuya geçmek bu sınırları aşma yöntemi olarak görülmemelidir. Sınır aşıldığında API, retry_after değeriyle HTTP 429 döndürür. Tekrar denemeden önce belirtilen saniye kadar bekleyin.

Telegram Botu İçin Hangi Sunucu Bölgesini Seçmeliyim?

Kullanıcılarınıza ve botunuzun çağırdığı hizmetlere en yakın konumu seçin; ardından her adaydan bağlantı süresini curl -o /dev/null -s -w '%{time_connect}\n' https://api.telegram.org ile ölçün.

Paylaş

Tartışma

Yorumlar

Tartışmaya katılmak için giriş yapın.

Bloga göz at

Okumaya devam edin.

Dağıtmaya hazır mısınız? 2,48 $/ay'dan başlayan fiyatlarla.

2008'den beri bağımsız bulut. AMD EPYC, NVMe, 40 Gbps. 14 gün para iade garantisi.