Datafex LogoDatafex
Sunucu çözümleri

Discord Bot Sunucu Kiralama

Discord botu, çalıştığı makine açık olduğu sürece çevrimiçi kalır. Kendi bilgisayarınızda veya ücretsiz barındırma servislerinde çalıştırdığınızda bot düzenli olarak düşer, uyku moduna girer veya kaynak sınırına takılır. VDS botu sürekli açık tutar ve büyüdükçe kaynak eklemenize izin verir.

Discord Bot için sunucu ne işe yarar?

Bir Discord botu, Discord'un gateway'ine açtığı kalıcı bir WebSocket bağlantısı üzerinden olayları dinleyen ve REST API'sine istek gönderen sıradan bir uygulamadır; discord.js, discord.py ya da JDA gibi kütüphaneler bu iki kanalı sarmalar. Botun çevrimiçi görünmesi doğrudan bu bağlantının açık olmasına bağlıdır — süreç durduğu anda bot listede çevrimdışı olur, davet linki çalışsa bile komutlar cevapsız kalır. Barındırma kararını etkileyen iki eşik var. Birincisi: 2.500'den fazla sunucuda bulunan bir botun bağlantıyı parçalara (shard) bölmesi Discord tarafından zorunlu tutulur. İkincisi: 100'den fazla sunucuya ulaşan bir botun mesaj içeriği, üye listesi ve durum bilgisi gibi ayrıcalıklı intent'leri kullanabilmesi için doğrulamadan geçmesi gerekir. Bu eşiklerin ikisi de kod ve uygulama tarafındadır; sunucunun işi bağlantıyı, süreci ve verilerinizi ayakta tutmaktır.

Discord Bot için neden sunucu gerekir?

Bot barındırmada kaynak ihtiyacını belirleyen şey sunucu sayısı değil, botun ne yaptığı. Yalnızca komutlara cevap veren bir bot çok az kaynak tüketir. Müzik çalan bir bot ses kodlaması yaptığı için CPU'yu, çok sayıda sunucuda üye takibi yapan bir bot ise önbelleğe aldığı veri yüzünden RAM'i zorlar. Veritabanı kullanan botlarda disk gecikmesi de hesaba katılmalı.

Önerilen kaynak

Aşağıdaki değerler katalogdaki VDS paket basamaklarıyla eşleşir; kesin fiyat yapılandırıcıda hesaplanır.

SenaryoRAMvCPUDiskNot
Tek bot2 GB140 GBKomut tabanlı bot, birkaç sunucu, küçük veritabanı.
Birkaç bot / müzik4 GB260 GBSes çalan bot veya paralel çalışan birden fazla bot.
Yüksek hacim8 GB4120 GBÇok sayıda sunucuda aktif bot, kendi veritabanı ve web paneli.

Kaynağı belirleyen şey: önbellek, shard ve kota

Komutlara cevap veren bir botla on binlerce üyeyi izleyen bir bot arasındaki fark koddaki karmaşıklık değil, bellekte tutulan veridir. Varsayılan ayarlarıyla çalışan kütüphaneler gördükleri her sunucuyu, kanalı ve üyeyi önbelleğe alır; 50 sunucuda bu birkaç yüz megabayttır, birkaç bin sunucuda gigabaytla ölçülür. Çözüm daha çok RAM satın almak değil, önbelleği ihtiyacınız kadarına kısmaktır — kütüphanelerin çoğu hangi koleksiyonun ne kadar tutulacağını ayarlamanıza izin verir. İkinci sınır kota: Discord bot başına global olarak saniyede yaklaşık 50 istek kabul eder ve ayrıca kanal, sunucu ve uç nokta bazında ayrı sınırlar uygular. Sınırı aşan bot 429 yanıtı alır, kütüphane isteği kuyruğa koyar ve bot dışarıdan yavaşlamış gibi görünür. Yani gecikmenin kaynağı çoğu zaman sunucu değil kotadır; kaynak eklemek bunu düzeltmez. Shard'a geçtiğinizde her shard ayrı bir WebSocket bağlantısı açar ve kendi önbelleğini tutar, dolayısıyla RAM ihtiyacı shard sayısıyla birlikte artar.

Müzik botu neden ayrı bir hesap

Ses çalan bir bot, komut işleyen bottan bambaşka bir iş yapar: kaynağı çözer, sesi Opus'a kodlar ve 20 milisaniyelik paketler halinde kesintisiz gönderir. Bu akış durmaya tahammül etmez; CPU bir anlığına dolduğunda kullanıcı bunu takılma olarak duyar. Pratik ölçü şudur: aynı anda ses çalınan her sunucu için bir çözücü süreci ve bir kodlama akışı düşünün. Tek bir akış modern bir çekirdeğin küçük bir bölümünü kullanır, ama on eşzamanlı akış bir vCPU'yu rahatlıkla doldurur. Bant genişliği tarafı hafiftir — ses akışı başına 64-128 kbit/sn bandındadır — asıl darboğaz CPU'dur. Bu yüzden müzik botunda çekirdek sayısı, komut botunun aksine doğrudan kapasiteye çevrilir; RAM ise önbellek ve kuyruk uzunluğu kadar gerekir. Aynı makinede hem müzik botu hem yoğun bir veritabanı çalıştırıyorsanız, veritabanının uzun bir sorgusunun ses akışını kesintiye uğratabileceğini hesaba katın: ya kaynakları ayırın ya da iki işi iki sunucuya bölün.

Kurulum adımları

  1. 1Ubuntu 22.04 veya Debian 12 şablonuyla sunucuyu kurun.
  2. 2SSH ile bağlanıp botun çalıştığı ortamı kurun (Node.js, Python veya kullandığınız sürüm).
  3. 3Bot kodunu sunucuya aktarın ve bağımlılıkları yükleyin.
  4. 4Botu `systemd` servisi veya `pm2` ile çalıştırın; böylece çökerse kendiliğinden yeniden başlar.
  5. 5Token'ı koda değil ortam değişkenine koyun ve sunucu güvenlik duvarını açık bırakmayın.
  6. 6Bot yalnızca dışarı bağlanır; içeri açılan bir porta ihtiyacı yoktur. Güvenlik duvarında SSH dışındaki her şeyi kapalı tutun.
  7. 7Günlükleri döndürün (`logrotate` ya da `journald` boyut sınırı); sessizce büyüyen bir günlük dosyası diski doldurup botu durdurur.

Sık yapılan hatalar

  • Botu doğrudan terminalden çalıştırmak. SSH oturumu kapandığında bot da durur; servis olarak çalıştırılmalı.
  • Token'ı kod deposuna koymak. Sızan bir token botun tamamen ele geçirilmesi demektir.
  • Müzik botunun CPU ihtiyacını küçümsemek. Ses kodlaması komut işlemekten kat kat ağırdır.
  • Botu `root` kullanıcısıyla çalıştırmak. Ayrı ve yetkisiz bir kullanıcı açın; sızan bir bağımlılık bütün sunucuyu ele geçirmesin.
  • Yavaşlığı sunucuya yormak. 429 yanıtı alan bir bot Discord'un istek kotasına takılmıştır; kaynak eklemek bunu düzeltmez.

Datafex'te ne dahil?

Fexwall L3/L4 DDoS filtrelemesi bütün paketlere ücretsiz dahildir. Sahte kaynak adresli trafik ağın kenarında durdurulur, meşru trafik geçer.

Bütün paketler NVMe SSD kullanır. Veritabanı çoğu senaryoda uygulamayla aynı makinede çalıştığı için disk gecikmesi doğrudan yanıt süresine yansır.

Sunucular Türkiye'de, Bursa'daki DGN Veri Merkezi'nde. Yurt içi transit 100 Gbit, yurt dışı 10 Tbit.

Kurulum dakikalar içinde otomatik tamamlanır. Ek IP, rDNS, yedekleme ve güvenlik kuralları müşteri panelinden yönetilir.

Sıkça Sorulan Sorular

Ücretsiz barındırma yerine neden VDS?
Ücretsiz servisler genellikle belirli bir süre sonra botu uyku moduna alır veya kaynak sınırına takar. VDS'te bot sürekli açık kalır ve kaynağı siz belirlersiniz.
Bot çökerse otomatik açılır mı?
`systemd` veya `pm2` ile çalıştırdıysanız evet. Bu ayarı yapmazsanız çöken bot elle başlatılana kadar kapalı kalır.
Shard'a ne zaman geçmem gerekir?
Discord, 2.500'den fazla sunucuda bulunan botlar için shard kullanımını zorunlu tutar. Bu sayıya yaklaşıyorsanız geçişi önceden planlayın: her shard ayrı bir bağlantı açtığı ve kendi önbelleğini tuttuğu için RAM ihtiyacı da birlikte artar.
Bot için sunucuda port açmam gerekir mi?
Hayır. Bot, Discord'a kendisi bağlanır; içeri gelen bir bağlantı beklemez. Yalnızca bota ait bir web paneli ya da webhook alıcısı çalıştırıyorsanız o servis için port açmanız gerekir.
Müzik botu için kaç vCPU gerekir?
Belirleyici olan eşzamanlı ses akışı sayısıdır. Birkaç sunucuda aynı anda çalan bir bot için 2 vCPU yeterlidir; on ve üzeri eşzamanlı akışta 4 vCPU'ya çıkmak takılmaları önler. RAM tarafı bu senaryoda ikincil kalır.
Ayrıcalıklı intent'ler için doğrulama ne zaman gerekiyor?
Bot 100'den fazla sunucuya ulaştığında, mesaj içeriği ve üye listesi gibi ayrıcalıklı intent'leri kullanabilmek için uygulamanın doğrulanması gerekir. Bu, sunucu tarafında değil Discord geliştirici portalında yapılan bir işlemdir; ama eşiği geçmeden önce başvurmak botun bir gün sessizce çalışmayı kesmesini önler.

Sunucunuzu yapılandırın

İhtiyacınıza uygun kaynakları seçip dakikalar içinde kurulumu başlatın.