aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Discord Botları

Discord Bot VPS Kurulumu: pm2 ile 7/24 Çalıştırma

Botunu kendi bilgisayarında çalıştırırken her şey yolunda gider; ta ki makineyi kapatana ya da uyku moduna alana kadar. Kalıcı bir çözüm için Discord bot VPS kurulumu yapmak gerekir: botu küçük bir bulut sunucusuna taşır, orada bir süreç yöneticisiyle 7/24 ayakta tutarsın. Bu rehberde Ubuntu tabanlı bir VPS'i sıfırdan hazırlayıp, bir Node.js (discord.js) botunu pm2 ile kalıcı çalıştırmayı, sunucu yeniden başlasa bile otomatik açılmasını adım adım anlatıyorum.

Neden VPS ve neden pm2?

Botun Discord'a sürekli açık bir bağlantı (WebSocket) tutması gerekir. Bağlantı koparsa bot çevrimdışı olur ve komutlara yanıt vermez. Bir VPS, kesintisiz internet ve elektriğe sahip, 365 gün açık bir Linux makinesidir; tam da bunun için biçilmiş kaftandır.

Peki neden doğrudan node index.js demiyoruz? Çünkü terminali kapattığın an süreç ölür. pm2 ise bir süreç yöneticisidir: botu arka planda tutar, çökerse otomatik yeniden başlatır, loglarını biriktirir ve sunucu yeniden açıldığında botu kendiliğinden ayağa kaldırır.

  • Otomatik restart: bot bir hata fırlatıp çökerse pm2 saniyeler içinde tekrar başlatır.
  • Boot dayanıklılığı: VPS yeniden başlasa bile bot otomatik açılır.
  • Log yönetimi: stdout/stderr tek komutla izlenir.
  • Sıfır maliyet: pm2 açık kaynak ve ücretsizdir.

1. VPS seçimi ve ilk bağlantı

Bir Discord botu çok az kaynak tüketir; 1 vCPU ve 1 GB RAM'lik en küçük plan rahatlıkla yeter. Hetzner, DigitalOcean, Contabo veya benzeri bir sağlayıcıdan Ubuntu 22.04 LTS ya da 24.04 LTS kuruluyken bir sunucu oluştur. Sağlayıcı sana bir IP adresi ve root parolası (ya da SSH anahtarı) verecek.

Kendi makinenden SSH ile bağlan:

ssh root@SUNUCU_IP_ADRESI

İlk iş paketleri güncellemek:

apt update && apt upgrade -y

2. Sudo kullanıcısı ve temel güvenlik

Her şeyi root ile yapmak risklidir. Ayrı bir kullanıcı açıp ona yetki verelim:

adduser bot
usermod -aG sudo bot

Artık su - bot ile bu kullanıcıya geçebilirsin. Basit bir güvenlik duvarı da kuralım; botun Discord'a giden bağlantısı için porta gerek yok, yalnızca SSH'i açık bırakmak yeterli:

sudo ufw allow OpenSSH
sudo ufw enable

3. Node.js'i doğru sürümle kurmak

Ubuntu'nun kendi deposundaki Node.js çoğu zaman eskidir; discord.js v14 en az Node.js 16.11, pratikte ise güncel bir LTS sürüm ister. NodeSource deposunu kullanarak güncel LTS'i (örneğin 20.x) kuralım:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

Kurulumu doğrula:

node -v
npm -v

4. Botun kodunu sunucuya almak

En temiz yöntem kodu Git üzerinden çekmektir. Botun bir GitHub deposundaysa:

git clone https://github.com/kullanici/bot-repo.git
cd bot-repo
npm install

Token gibi gizli bilgileri asla koda gömme ve depoya gönderme. Bunun yerine bir .env dosyası oluştur:

nano .env

İçine token'ı yaz:

DISCORD_TOKEN=senin_gizli_tokenin

Botun bu değeri okuması için dotenv paketini kullanabilirsin (npm install dotenv) ve dosyanın en üstüne require('dotenv').config() ekleyebilirsin. .env dosyasını mutlaka .gitignore içine koy.

5. pm2 ile botu kalıcı çalıştırmak

pm2'yi global olarak kuralım:

sudo npm install -g pm2

Botu başlat ve ona okunabilir bir ad ver:

pm2 start index.js --name discord-bot

Eğer botun giriş dosyası farklıysa (örneğin bot.js veya src/index.js) o yolu yaz. Durumu görmek için:

pm2 status

Logları canlı izlemek için:

pm2 logs discord-bot

Sık kullanılan diğer komutlar:

  • pm2 restart discord-bot — botu yeniden başlatır (kod güncelleyince).
  • pm2 stop discord-bot — durdurur.
  • pm2 delete discord-bot — listeden kaldırır.
  • pm2 monit — CPU/RAM kullanımını canlı gösterir.

6. Sunucu yeniden başlasa bile botu ayakta tutmak

Asıl sihir burada. VPS bir güncelleme ya da kesinti sonrası yeniden başladığında botun kendiliğinden açılmasını istiyoruz. Önce pm2'ye bir başlangıç betiği üret:

pm2 startup

Bu komut sana sudo env PATH=... ile başlayan tek satırlık bir komut verecek; o satırı kopyalayıp çalıştır. Ardından mevcut süreç listesini kaydet:

pm2 save

Artık sudo reboot ile sunucuyu yeniden başlatsan bile, açılışta pm2 devreye girer ve discord-bot sürecini otomatik ayağa kaldırır. Test etmekten çekinme.

7. Kod güncellemesi yaptığında

Bota yeni özellik eklediğinde akış basit: değişiklikleri çek, gerekirse bağımlılıkları kur, süreci yeniden başlat:

cd bot-repo
git pull
npm install
pm2 restart discord-bot

Yeni bağımlılık eklemediysen npm install adımını atlayabilirsin.

Sık Sorulan Sorular

Bot çöküp duruyor, pm2 ne yapıyor?

pm2 çöken süreci otomatik yeniden başlatır, ama kök neden devam ederse sonsuz bir restart döngüsüne girebilir. pm2 logs discord-bot ile hatayı oku; genelde geçersiz token, eksik intents ayarı ya da yakalanmamış bir Promise hatasıdır. Sorunu kodda çöz, sadece restart'a güvenme.

screen veya nohup yerine neden pm2?

screen ve nohup botu arka planda tutar ama çökerse yeniden başlatmaz, boot sonrası otomatik açılmaz ve log yönetimi sunmaz. pm2 bunların hepsini tek araçta verir; üretim ortamı için açık ara daha sağlamdır.

Birden fazla botu aynı VPS'te çalıştırabilir miyim?

Evet. Her bot için ayrı klasör ve ayrı pm2 start ... --name adı kullan. Küçük bir VPS bile birkaç hafif botu rahatça taşır; pm2 monit ile kaynak kullanımını izleyebilirsin.

Botunu güvenle yayına almak ister misin? Discord botu geliştirme, VPS kurulumu ve 7/24 kararlı çalıştırma konusunda yardıma ihtiyacın varsa benimle iletişime geç — projeni birlikte ayağa kaldıralım.

Bu kategorideki tüm yazılar →

Devamı için