İçeriğe geç
Önem Bilişim

Python ve Node.js Discord Botunu VDS’e Kurma ve Otomatik Başlatma (systemd, pm2)

Discord botu VDS kurulumu adım adım: Ubuntu'da discord.py ve discord.js, token güvenliği, systemd ve pm2 ile otomatik başlatma, sık hatalar ve çözümleri.

VDS ve Sunucu6 dk okuma
Python ve Node.js Discord Botunu VDS'e Kurma ve Otomatik Başlatma (systemd, pm2)
İçindekiler
  1. Discord botu VDS kurulumu: Adım adım
  2. Birinci adım: Sunucuya bağlanın ve güncelleyin
  3. İkinci adım: Bot için ayrı bir kullanıcı oluşturun
  4. Üçüncü adım: Güvenlik duvarını açın
  5. Dördüncü adım (Python): discord.py kurulumu
  6. Dördüncü adım (Node.js): discord.js kurulumu
  7. Beşinci adım: Tokeni güvenle saklayın
  8. Otomatik başlatma: systemd ve pm2
  9. Python botu: systemd servisi
  10. Node.js botu: pm2
  11. Botu güncellemek
  12. Sık karşılaşılan hatalar
  13. Kurulum sonrası kontrol
  14. Sıkça sorulan sorular
  15. Discord botu VDS’e nasıl kurulur?
  16. systemd mi pm2 mi kullanmalıyım?
  17. pip install neden “externally-managed-environment” hatası veriyor?
  18. Botun loglarını nasıl görürüm?
  19. Sunucu yeniden başlayınca bot açılmıyor, neden?
  20. Sonuç: Bir kez kurun, unutun

Botunuz bilgisayarınızda sorunsuz çalışıyor ve artık onu 7/24 açık bir sunucuya taşıma zamanı geldi. Sunucuya ilk kez SSH ile bağlandığınızda karşınızda yalnızca yanıp sönen bir imleç var. Bu yazıdaki adımlar, o imleçten 7/24 çalışan ve çöktüğünde kendiliğinden ayağa kalkan bir bota kadar sizi götürecek. Discord botu VDS kurulumu, doğru sırayla yapıldığında yarım saatten kısa sürer.

Rehber, Ubuntu’nun güncel LTS sürümü için yazıldı ve Debian’da da aynı şekilde çalışır. Python botları için discord.py’ı systemd ile, Node.js botları için discord.js’i pm2 ile kuracağız. Henüz bir sunucunuz yoksa Discord botları için VDS paketlerinden birini Ubuntu seçerek sipariş edebilirsiniz.

KısacaDiscord botunu VDS’e kurmak için sunucuya SSH ile bağlanın, bot için ayrı bir kullanıcı oluşturun, Python botlarında sanal ortam (venv) içinde discord.py, Node.js botlarında discord.js kurun, tokeni .env dosyasında saklayın ve botu systemd servisi ya da pm2 süreci olarak tanımlayın. Böylece bot sunucu açılışında otomatik başlar ve çöktüğünde yeniden çalışır.
Discord botu VDS kurulum adımları: bağlantı, kullanıcı, güvenlik duvarı, dil kurulumu, token ve otomatik başlatma
Kurulumun altı adımı. Python ve Node.js botları yalnızca dördüncü ve altıncı adımda ayrışır.

Discord botu VDS kurulumu: Adım adım

Aşağıdaki ilk beş adım hem Python hem Node.js botları için geçerlidir. Yalnızca dil kurulumu adımında iki yol ayrışır.

Birinci adım: Sunucuya bağlanın ve güncelleyin

Sunucu bilgileriniz teslim e-postasında yer alır. Windows 10 ve 11’de PowerShell’den, macOS ve Linux’ta terminalden bağlanabilirsiniz. Windows’ta grafik bir araç tercih ediyorsanız PuTTY ile SSH bağlantısı da kurabilirsiniz.

ssh root@SUNUCU_IP
apt update && apt upgrade -y

İkinci adım: Bot için ayrı bir kullanıcı oluşturun

Botu root yetkisiyle çalıştırmak, bottaki bir güvenlik açığının tüm sunucuyu ele geçirmeye dönüşmesi demektir. Bu yüzden bota yalnızca kendi klasörüne erişebilen ayrı bir kullanıcı açın:

adduser --disabled-password --gecos "" bot

Üçüncü adım: Güvenlik duvarını açın

Discord botu, Discord’a giden bağlantıyı kendisi kurar. Bu yüzden dışarıdan gelen hiçbir porta ihtiyaç duymaz. Yalnızca SSH’a izin verip güvenlik duvarını etkinleştirmek yeterlidir:

ufw allow OpenSSH
ufw enable

Sunucu güvenliğini bir adım ileri taşımak için SSH anahtarıyla giriş ve parola girişini kapatma gibi ayarları VDS güvenliği için ilk 5 ayar yazımızda anlattık.

Dördüncü adım (Python): discord.py kurulumu

Ubuntu’nun güncel sürümleri, sistem genelinde pip ile paket kurmanıza izin vermez ve “externally-managed-environment” hatası verir. Doğru yöntem, her bot için ayrı bir sanal ortam (venv) oluşturmaktır:

apt install -y python3 python3-venv git
sudo -iu bot
git clone https://github.com/kullanici/discord-botum.git bot
cd bot
python3 -m venv .venv
.venv/bin/pip install -U discord.py python-dotenv

Botunuz yoksa test için şu kısa örneği bot.py olarak kaydedebilirsiniz. Bot açıldığında /ping slash komutunu kaydeder ve gecikmeyi milisaniye olarak yanıtlar:

import os
import discord
from discord.ext import commands
from dotenv import load_dotenv

load_dotenv()

class Bot(commands.Bot):
    async def setup_hook(self):
        await self.tree.sync()

bot = Bot(command_prefix="!", intents=discord.Intents.default())

@bot.tree.command(name="ping", description="Botun gecikmesini gösterir")
async def ping(interaction: discord.Interaction):
    await interaction.response.send_message(f"Pong! {round(bot.latency * 1000)} ms")

bot.run(os.environ["DISCORD_TOKEN"])

Dördüncü adım (Node.js): discord.js kurulumu

Ubuntu depolarındaki Node.js sürümü genellikle eskidir. Güncel LTS sürümünü NodeSource deposundan kurun. Bu komutları root kullanıcısıyla çalıştırın:

curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -
apt install -y nodejs git
npm install -g pm2

Ardından bot kullanıcısına geçip projeyi kurun:

sudo -iu bot
git clone https://github.com/kullanici/discord-botum.git bot
cd bot
npm install discord.js dotenv

Test için en sade discord.js botu şöyledir:

require('dotenv').config();
const { Client, Events, GatewayIntentBits } = require('discord.js');

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once(Events.ClientReady, (c) => {
  console.log(`${c.user.tag} olarak giriş yapıldı`);
});

client.login(process.env.DISCORD_TOKEN);

Beşinci adım: Tokeni güvenle saklayın

Bot tokeni, botunuzun şifresidir. Koda yazılırsa ve kod bir Git deposuna gönderilirse token sızar. Tokeni bot klasöründeki .env dosyasına yazın ve dosyanın yalnızca bot kullanıcısı tarafından okunabilmesini sağlayın:

echo 'DISCORD_TOKEN=buraya-tokeninizi-yazin' > .env
chmod 600 .env
echo '.env' >> .gitignore

Botu bir kez elle başlatıp çalıştığını doğrulayın: Python botu için .venv/bin/python bot.py, Node.js botu için node index.js. Konsolda giriş mesajını görüyorsanız Ctrl+C ile durdurup son adıma geçin.

Otomatik başlatma: systemd ve pm2

Python botu: systemd servisi

Root kullanıcısına dönün (exit) ve servis dosyasını oluşturun:

nano /etc/systemd/system/discord-bot.service
[Unit]
Description=Discord botu
After=network-online.target
Wants=network-online.target

[Service]
User=bot
WorkingDirectory=/home/bot/bot
ExecStart=/home/bot/bot/.venv/bin/python bot.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Servisi etkinleştirip başlatın ve loglarını izleyin:

systemctl daemon-reload
systemctl enable --now discord-bot
journalctl -u discord-bot -f

Node.js botu: pm2

pm2, Node.js uygulamaları için geliştirilmiş bir süreç yöneticisidir. Bot kullanıcısıyla botu başlatın ve süreç listesini kaydedin:

pm2 start index.js --name discord-bot
pm2 save
pm2 startup systemd -u bot --hp /home/bot

Son komut, ekrana sudo ile başlayan bir satır yazar. O satırı root olarak çalıştırdığınızda pm2 sunucu açılışında otomatik başlar ve kaydettiğiniz botu ayağa kaldırır. Logları pm2 logs discord-bot, kaynak kullanımını pm2 monit ile izleyebilirsiniz.

systemd ve pm2 karşılaştırması: kurulum, log yönetimi, izleme ve uygun olduğu bot türleri
systemd her Linux’ta yerleşik gelir ve her dil için çalışır; pm2 ise Node.js botları için izleme ve log kolaylığı sunar.
Kritersystemdpm2
KurulumSistemde yerleşiknpm ile kurulur
DilHer dilÖncelikle Node.js
Loglarjournalctlpm2 logs, dosya tabanlı
İzlemesystemctl statuspm2 monit (canlı panel)
Birden fazla botHer bot için ayrı servis dosyasıTek komutla listeleme ve yönetim

Botu güncellemek

Kodda değişiklik yaptığınızda güncelleme her seferinde aynı üç adımdır: yeni kodu çekin, bağımlılıkları güncelleyin ve botu yeniden başlatın.

cd /home/bot/bot && git pull
sudo systemctl restart discord-bot   # systemd
pm2 restart discord-bot              # pm2
Discord botu güncelleme akışı: git pull, bağımlılık güncelleme, yeniden başlatma ve log kontrolü
Güncelleme akışı: kodu çek, bağımlılıkları güncelle, yeniden başlat, logları kontrol et.

Sık karşılaşılan hatalar

HataNedenÇözüm
externally-managed-environmentSistem Python’una pip ile kurulumSanal ortam (venv) kullanın
PrivilegedIntentsRequired / disallowed intentsKodda açılan ayrıcalıklı intent portalda kapalıDeveloper Portal’da ilgili intent’i açın
Improper token / 401Token hatalı ya da yenilenmiş.env dosyasındaki tokeni kontrol edin
ModuleNotFoundError (yalnızca serviste)Servis sistem Python’unu kullanıyorExecStart’ta venv yolunu kullanın
Bot iki kez yanıt veriyorAynı token iki yerde çalışıyorBilgisayarınızdaki kopyayı durdurun

Kurulum sonrası kontrol

Discord botu VDS kurulumunu tamamladıktan sonra aşağıdaki maddeleri tek tek doğrulayın.

Kurulum sonrası kontrol listesi
0 / 8
Güvenlik
Çalışma
İzleme
Tamamladığınız adımları işaretleyin.

Bu adımlarla uğraşmak istemiyorsanız ya da bir yerde takıldıysanız, Önem Bilişim Discord VDS müşterilerine bot kurulumu konusunda destek veriyor. Sunucunuz hazır olduğunda destek talebi oluşturmanız yeterli.

İlginizi çekebilir: Discord botu için Linux mu Windows mu?

Sıkça sorulan sorular

Discord botu VDS’e nasıl kurulur?

Sunucuya SSH ile bağlanın, bot için ayrı bir kullanıcı oluşturun ve botunuzun dilini kurun. Python botlarında sanal ortam içinde discord.py, Node.js botlarında discord.js kurulur. Tokeni .env dosyasına yazdıktan sonra botu systemd servisi ya da pm2 süreciyle otomatik başlayacak şekilde tanımlayın.

systemd mi pm2 mi kullanmalıyım?

Python botları için systemd en sade çözümdür, çünkü her Linux sunucuda yerleşik gelir. Node.js botlarında pm2, canlı izleme paneli ve kolay log yönetimiyle öne çıkar. İkisi de botun çöktüğünde yeniden başlamasını ve sunucu açılışında otomatik çalışmasını sağlar.

pip install neden “externally-managed-environment” hatası veriyor?

Ubuntu ve Debian’ın güncel sürümleri, sistem Python’unun bozulmasını önlemek için sistem genelinde pip ile paket kurulumunu engeller. Çözüm, bot klasöründe python3 -m venv .venv ile sanal ortam oluşturmak ve paketleri .venv/bin/pip ile kurmaktır. Servis dosyasında da sanal ortamdaki Python yolunu kullanın.

Botun loglarını nasıl görürüm?

systemd ile çalışan botlarda journalctl -u discord-bot -f komutu logları canlı gösterir. pm2 ile çalışan botlarda pm2 logs discord-bot komutunu kullanın. Hata ayıklarken önce bu loglara bakın; botun neden durduğu çoğu zaman son satırlarda yazar.

Sunucu yeniden başlayınca bot açılmıyor, neden?

systemd kullanıyorsanız servisin enable komutuyla etkinleştirildiğinden emin olun. pm2 kullanıyorsanız pm2 save komutunu çalıştırmamış ya da pm2 startup komutunun ekrana yazdığı satırı root olarak çalıştırmamış olabilirsiniz. İki adımı tamamlayıp sunucuyu yeniden başlatarak test edin.

Sonuç: Bir kez kurun, unutun

Discord botu VDS kurulumu; ayrı bir kullanıcı, sanal ortam, güvenli bir .env dosyası ve bir süreç yöneticisinden ibarettir. Bu yapı bir kez kurulduğunda bot sunucu açılışında kendiliğinden başlar, çöktüğünde yeniden ayağa kalkar ve güncellemeler tek komutla yapılır.

Kuruluma hazır bir sunucuyla başlamak isterseniz Önem Bilişim Discord VDS paketlerini inceleyebilirsiniz. Sunucu yönetimi üzerine diğer rehberlerimizi Önem Bilişim blogunda bulabilirsiniz.

Discord VDS

Kurulum için hazır sunucu, 5–10 dakikada

Ubuntu, Debian ya da Windows Server seçerek sipariş verin; sunucunuz dakikalar içinde hazır. Bot kurulumu için Önem Bilişim ekibinden destek alabilirsiniz.

Paylaş:WhatsAppXFacebookLinkedInTelegram

Bunlar da ilginizi çekebilir