Bu rehberde neler var?
- nvm ile güncel Node.js kurulumu ve botun token'ını .env dosyasında saklama.
- pm2 ile servis tanımlama, log izleme ve bellek sınırında otomatik yeniden başlatma.
- Ek bağımlılık istemeyenler için systemd servis dosyası ve Restart ayarları.
- Metin, müzik ve veritabanlı botların tipik bellek tüketimi aralıkları.
Discord Botunu VDS Üzerinde 7/24 Çalıştırma
Botunuz kendi bilgisayarınızda çalışırken her şey yolunda görünür, ta ki bilgisayarı kapatana kadar. Bu rehberde bir VDS üzerinde botu servis olarak tanımlamayı, çökme sonrası otomatik yeniden başlatmayı ve log yönetimini anlatıyoruz.
Neden VDS?
| Sorun | Kendi bilgisayarınız | VDS |
|---|---|---|
| Bilgisayar kapanınca | Bot düşer | Çalışmaya devam eder |
| Elektrik kesintisi | Kesinti | Yedekli güç |
| IP değişimi | Bağlantı sorunları | Sabit IP |
| İnternet kesintisi | Bot düşer | Yedekli ağ |
1. Sunucu Hazırlığı
sudo apt update && sudo apt upgrade -y
sudo adduser --disabled-password --gecos "" bot
sudo su - bot
Botu root ile çalıştırmayın; ayrı bir kullanıcı hem güvenli hem düzenlidir.
2. Node.js Kurulumu
Dağıtımın deposundaki Node.js genelde eskidir. nvm ile istediğiniz sürümü kurun:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install 22
node -v
3. Botu Sunucuya Alma
git clone https://github.com/kullanici/botunuz.git ~/bot
cd ~/bot
npm ci --omit=dev
Token’ı koda gömmeyin; .env dosyasında tutun ve izinlerini kısıtlayın:
echo "DISCORD_TOKEN=..." > ~/bot/.env
chmod 600 ~/bot/.env
⚠️ Token’ı yanlışlıkla depoya gönderdiyseniz Discord geliştirici panelinden hemen yenileyin. Herkese açık depolara düşen token’lar dakikalar içinde taranıp kullanılıyor.
4. Yöntem A: pm2 ile Çalıştırma
pm2, Node.js projeleri için pratik bir süreç yöneticisidir:
npm install -g pm2
pm2 start index.js --name discord-bot
pm2 save
pm2 startup
Son komut, sunucu yeniden başladığında botun otomatik açılması için gereken servisi kurar. Kullanışlı komutlar:
pm2 logs discord-bot # canlı log
pm2 restart discord-bot # yeniden başlat
pm2 monit # bellek ve CPU izleme
Bellek sızıntısına karşı otomatik yeniden başlatma:
pm2 start index.js --name discord-bot --max-memory-restart 500M
5. Yöntem B: systemd ile Çalıştırma
Ek bağımlılık istemiyorsanız systemd yeterlidir:
sudo nano /etc/systemd/system/discord-bot.service
[Unit]
Description=Discord Bot
After=network.target
[Service]
Type=simple
User=bot
WorkingDirectory=/home/bot/bot
EnvironmentFile=/home/bot/bot/.env
ExecStart=/home/bot/.nvm/versions/node/v22.0.0/bin/node index.js
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discord-bot
sudo journalctl -u discord-bot -f
💡
Restart=always, botun her çökmede yeniden başlamasını sağlar.RestartSecdeğerini çok düşük tutmayın; sürekli çöken bir bot saniyede onlarca kez yeniden başlayarak Discord tarafında hız sınırına takılabilir.
6. Bellek Planlaması
| Bot türü | Tipik bellek | Not |
|---|---|---|
| Metin komutları | 150-400 MB | En yaygın senaryo |
| Müzik botu | 500 MB - 1,5 GB | Ses kodlama maliyeti |
| Veritabanlı bot | +200-500 MB | PostgreSQL/Redis aynı sunucudaysa |
| Sharded bot | Shard başına +150 MB | 2.500+ sunucudan sonra |
7. Log Yönetimi
Log dosyaları zamanla diski doldurur. pm2 kullanıyorsanız log rotasyonunu kurun:
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 10M
pm2 set pm2-logrotate:retain 7
systemd kullanıyorsanız journald zaten döndürme yapar; sınırı /etc/systemd/journald.conf içinden ayarlayabilirsiniz.
8. Güvenlik
- SSH’a parola yerine anahtar ile girin, parola girişini kapatın
- Güvenlik duvarında yalnızca SSH portunu açık tutun (bot dışa bağlantı kurar, gelen porta ihtiyacı yoktur)
- Sistem güncellemelerini düzenli uygulayın
sudo ufw allow OpenSSH
sudo ufw enable
Sonuç
Bir Discord botunu kesintisiz çalıştırmak için gereken şey karmaşık bir altyapı değil; doğru yapılandırılmış bir süreç yöneticisi ve yeterli bellektir. pm2 hızlı başlangıç için, systemd ek bağımlılık istemeyenler için uygundur.
👉 Bot ölçeğinize uygun paket için Discord bot VDS kiralama sayfamıza, aynı sunucuda Telegram botu veya zamanlanmış script çalıştıracaksanız Telegram bot ve otomasyon VDS sayfamıza göz atın.