Discord Botu 7/24 Nasıl Açık Tutulur? PM2, systemd ve Windows
Discord botunuzu 7/24 açık tutun: Node.js veya Python botu sunucuya taşıma, PM2 ve systemd ile servis olarak çalıştırma, Windows kurulumu ve token güvenliği.
Discord botunuzu 7/24 açık tutmak için botu kendi bilgisayarınız yerine sürekli açık bir sunucuya (VPS veya VDS) taşır, ardından bir süreç yöneticisiyle (Linux'ta PM2 veya systemd, Windows'ta PM2 ya da bir Windows servisi) çalıştırırsınız. Süreç yöneticisi bot çöktüğünde onu kendiliğinden yeniden başlatır, sunucu yeniden açıldığında da otomatik olarak devreye alır.
Bu rehberde Node.js (discord.js) ve Python (discord.py) botlarını sunucuda kalıcı olarak çalıştırmayı, token güvenliğini ve sık yapılan hataları anlatıyoruz.
Neden kendi bilgisayarınızda çalıştırmamalısınız?
- Bilgisayar kapandığında, uyku moduna geçtiğinde veya internet kesildiğinde bot da kapanır.
- Windows güncellemeleri ve yeniden başlatmalar botu habersizce durdurur.
- Ev internetinizin IP adresi değişebilir, bağlantı kalitesi dalgalanabilir.
- Bilgisayarınızın kaynakları oyun veya diğer işlerle paylaşılır.
Ücretsiz bot barındırma platformları ise genellikle uyku modu, kaynak sınırı veya belirli süre sonra kapanma gibi kısıtlamalar getirir. Ciddi bir bot için en sağlıklı yol, küçük bir sunucu kiralamaktır.
Botunuz için ne kadar kaynak gerekir?
| Bot türü | Önerilen kaynak |
|---|---|
| Tek, hafif bot (moderasyon, komutlar) | 1-2 vCPU, 1-2 GB RAM |
| Birkaç bot aynı sunucuda | 2 vCPU, 4 GB RAM |
| Müzik botu, görsel işleyen bot | 3 vCPU, 6 GB RAM |
| Bot + web paneli + veritabanı | 4 vCPU, 8 GB RAM |
Çok sayıda sunucuya hizmet veren büyük botlar, discord.js veya discord.py'nin sharding özelliğiyle birden çok sürece bölünür; bu durumda RAM ihtiyacı shard sayısıyla birlikte artar.
1. Adım: Sunucuya bağlanın ve ortamı hazırlayın
Linux sunucuya SSH ile bağlanın (Windows'ta PowerShell'de ssh kullanici@sunucu-ip). Önce sistemi güncelleyin:
sudo apt update && sudo apt upgrade -y
Node.js ve Python'un kurulu olup olmadığını kontrol edin: node -v ve python3 --version. discord.js'in güncel sürümleri, Node.js'in güncel LTS sürümlerinden birini ister; eski bir Node.js sürümü kuruluysa güncelleyin.
2. Adım: Bot kodunu sunucuya alın
En temiz yol Git kullanmaktır:
- Bot kodunuzu özel (private) bir GitHub veya GitLab deposuna yükleyin.
- Sunucuda
git cloneile depoyu çekin. - Node.js botu için klasörde
npm install, Python botu için bir sanal ortam oluşturup bağımlılıkları kurun:python3 -m venv venv, ardındanvenv/bin/pip install -r requirements.txt.
Güncelleme yapmak istediğinizde sunucuda git pull çalıştırıp botu yeniden başlatmanız yeterlidir.
3. Adım: Token'ı güvenle saklayın
Bot token'ı, botunuzun şifresidir. Token'ı ele geçiren biri botunuzun bulunduğu tüm sunucularda botunuz adına işlem yapabilir.
- Token'ı asla koda yazmayın. Bunun yerine bir
.envdosyasındaDISCORD_TOKEN=...olarak tutun ve kodda ortam değişkeninden okuyun (Node.js'tedotenvpaketi, Python'dapython-dotenv). .envdosyasını .gitignore'a ekleyin; böylece depoya yüklenmez.- Linux'ta dosya iznini kısıtlayın:
chmod 600 .env - Token'ı ekran görüntülerinde, destek mesajlarında ve Discord sohbetlerinde paylaşmayın.
4. Adım: PM2 ile 7/24 çalıştırın
PM2, Node.js için yazılmış ama Python dahil başka dillerde de kullanılabilen bir süreç yöneticisidir.
- Kurulum:
sudo npm install -g pm2 - Node.js botunu başlatın:
pm2 start index.js --name botum - Python botunu başlatın:
pm2 start bot.py --name pybot --interpreter ./venv/bin/python - Çalışan süreçleri kaydedin:
pm2 save - Sunucu yeniden başladığında PM2'nin açılması için:
pm2 startupkomutunu çalıştırın ve ekrana yazdırdığı komutu kopyalayıp çalıştırın.
Sık kullanılan PM2 komutları:
| Komut | Ne yapar? |
|---|---|
pm2 list | Çalışan süreçleri, durumlarını ve bellek kullanımını gösterir |
pm2 logs botum | Botun canlı kayıtlarını gösterir |
pm2 restart botum | Botu yeniden başlatır (kod güncellemesinden sonra) |
pm2 stop botum | Botu durdurur |
pm2 monit | İşlemci ve bellek kullanımını canlı izler |
Alternatif: systemd servisi (Linux)
PM2 kurmak istemiyorsanız Linux'un kendi servis yöneticisi systemd ile de botu çalıştırabilirsiniz. /etc/systemd/system/botum.service adında bir dosya oluşturup içine şu satırları yazın:
[Unit]Description=Discord botumAfter=network-online.target[Service]WorkingDirectory=/home/kullanici/botumExecStart=/usr/bin/node index.jsRestart=alwaysRestartSec=5User=kullanici[Install]WantedBy=multi-user.target
Ardından sudo systemctl daemon-reload, sudo systemctl enable --now botum komutlarıyla servisi etkinleştirip başlatın. Kayıtları journalctl -u botum -f ile izleyebilirsiniz. Python botu için ExecStart satırına sanal ortamdaki Python'un tam yolunu ve bot dosyanızı yazın.
Windows sunucuda 7/24 çalıştırma
Windows'ta uzak masaüstüyle bağlandığınız bir sunucuda botu bir komut istemi penceresinde çalıştırmak, oturumu kapattığınızda veya sunucu yeniden başladığında sorun çıkarabilir. Daha güvenilir yollar:
- PM2: Windows'ta da çalışır, ancak
pm2 startupkomutu Windows'u desteklemez. Açılışta otomatik başlatma için PM2'yi bir Windows servisine dönüştüren topluluk araçlarını veya aşağıdaki yöntemleri kullanabilirsiniz. - NSSM gibi servis sarmalayıcılar: Herhangi bir komutu (ör.
node index.js) gerçek bir Windows servisi olarak kaydeder; çökme durumunda yeniden başlatma ayarlanabilir. - Görev Zamanlayıcı: "Bilgisayar başladığında" tetikleyicisiyle, "kullanıcı oturum açmış olsun ya da olmasın çalıştır" seçeneği işaretli bir görev oluşturabilirsiniz.
Windows sunucuya bağlanma ve güvenlik ayarları için RDP bağlantı rehberimize göz atabilirsiniz. Genel olarak, yalnızca bot çalıştıracaksanız Linux daha az kaynak kullanır ve lisans maliyeti yoktur; Oculeth'te Windows lisansı fiyata dahil değildir.
Sık yapılan hatalar
- Privileged intent'leri açmamak: Botunuz mesaj içeriğini okuyorsa Developer Portal'da "Message Content Intent"i etkinleştirmeniz ve kodda ilgili intent'i istemeniz gerekir. Aksi hâlde bot bağlanır ama komutlara tepki vermez.
- Hataları yakalamamak: Yakalanmayan bir hata süreci düşürür. Süreç yöneticisi yeniden başlatır, ama sürekli çöken bir bot rate limit'e takılabilir. Kayıtları düzenli kontrol edin.
- Aynı botu iki yerde çalıştırmak: Hem bilgisayarınızda hem sunucuda açık kalan bot, komutlara iki kez yanıt verir.
- Veritabanını JSON dosyasında tutmak: Küçük botlar için işe yarar, ama eşzamanlı yazmalarda veri bozulabilir. Büyüyen botlar için SQLite, MySQL, PostgreSQL veya MongoDB kullanın.
Hangi sunucu türünün botunuz için uygun olduğundan emin değilseniz VDS ve VPS farkı yazımız karar vermenize yardımcı olur. Oculeth'in Discord bot VDS paketlerinde DDoS koruması dahildir ve bot sayısında sınır yoktur; paketin kaynakları yettiği sürece istediğiniz kadar bot çalıştırabilirsiniz. Güncel paketleri ürün sayfasında görebilirsiniz.
Sık sorulan sorular
Discord botu için VPS mi VDS mi gerekir?
Çoğu küçük ve orta bot, hafif iş yükleri olduğu için ekonomik bir VPS'te rahat çalışır. Müzik botları, çok sayıda sunucuya hizmet veren botlar veya bot ile birlikte veritabanı ve web paneli çalıştıracaksanız kaynakları ayrılmış bir VDS daha tutarlı performans sağlar.
PM2 mi systemd mi kullanmalıyım?
İkisi de botu çöktüğünde yeniden başlatır ve sunucu açılışında devreye alır. PM2 kolay komutları, kayıt görüntüleme ve izleme ekranıyla yeni başlayanlar için daha rahattır; systemd ise ek kurulum gerektirmeyen, Linux'un yerleşik çözümüdür.
Bot token'ım sızarsa ne yapmalıyım?
Discord Developer Portal'da botunuzun Bot sekmesinden token'ı hemen sıfırlayın; eski token anında geçersiz olur. Ardından yeni token'ı sunucudaki .env dosyasına yazıp botu yeniden başlatın ve token'ın nereden sızdığını kontrol edin.
Botum çalışıyor ama komutlara yanıt vermiyor, neden?
En sık neden, Developer Portal'da gerekli intent'lerin (özellikle Message Content Intent) açılmamış olmasıdır. Slash komutları kullanıyorsanız komutların Discord'a kaydedildiğinden ve botun sunucuda gerekli izinlere sahip olduğundan emin olun.
Aynı sunucuda birden fazla bot çalıştırabilir miyim?
Evet. Her botu PM2 veya systemd'de ayrı bir adla çalıştırabilirsiniz. Sınırı sunucunun CPU ve RAM kaynağı belirler; pm2 monit ile her botun kaynak kullanımını izleyerek paketinizin yeterliliğini takip edebilirsiniz.