Pterodactyl Panel Kurulumu: VDS Üzerinde Adım Adım

Pterodactyl Panel Kurulumu: VDS Üzerinde Adım Adım

Kendi VDS'inizde Pterodactyl Panel ve Wings kurulumu: gereksinimler, veritabanı, web sunucusu, Docker, node eşleştirme ve ilk oyun sunucusu.

White Bilişim
Paylaş
Yapay zekâya sor ChatGPT Claude

Pterodactyl Panel Kurulumu: VDS Üzerinde Adım Adım

Pterodactyl, oyun sunucularınızı tek bir web arayüzünden yönetmenizi sağlayan açık kaynaklı bir paneldir. Sunucularımız hazır bir oyun paneliyle değil işletim sistemi seviyesinde ve tam yetkiyle teslim edildiği için, panel isteyen kullanıcılar Pterodactyl’i kendi VDS sunucularına kendileri kurar. Bu rehber, resmi dokümantasyondaki kurulum akışını sırasıyla anlatır.

Panelin en büyük getirisi şu: tek bir sunucuda birden fazla oyun sunucusunu (Minecraft, Rust, Terraria, Discord botu) ayrı ayrı SSH oturumlarıyla değil, tek arayüzden başlatıp durdurabilir, konsolunu izleyebilir, dosyalarını düzenleyebilirsiniz.

1. Panel ve Wings Ayrımı

Pterodactyl tek bir program değil, birlikte çalışan iki parçadır.

BileşenGöreviNerede çalışır
PanelPHP ve React ile yazılmış web arayüzü. Kullanıcı, sunucu ve node kayıtlarını tutarWeb sunucusu olan makinede
WingsGo ile yazılmış servis. Docker ile konuşur, oyun sunucularını gerçekten çalıştırırOyun sunucularının duracağı makinede

Resmi dokümantasyonda node, “Wings örneğini çalıştıran fiziksel makine” olarak tanımlanır. Panel ile Wings aynı sunucuda olabilir; küçük ve orta ölçekli kurulumlarda en yaygın senaryo budur. Büyüdükçe Panel bir makinede kalır, oyun sunucuları için yeni node’lar eklenir.

Her oyun sunucusu izole bir Docker container içinde çalışır. CPU ve RAM sınırları container seviyesinde uygulanır, bu yüzden bir sunucunun taşması diğerlerini doğrudan etkilemez.

💡 Lisans: Pterodactyl MIT lisanslıdır ve ücretsizdir. Ticari kullanımda, yani panel üzerinden müşterilerinize sunucu satmanızda bir lisans engeli yoktur. Kaynak kodu değiştirip dağıtmak da MIT şartları altında serbesttir.

2. Gereksinimler

Resmi dokümantasyonun desteklediğini belirttiği işletim sistemleri:

DağıtımSürümler
Ubuntu22.04, 24.04
Debian11, 12, 13
RHEL / Rocky Linux / AlmaLinux8, 9

Panel tarafında gerekenler:

  • PHP 8.2 veya 8.3 (dokümantasyon 8.3’ü öneriyor); cli, openssl, gd, mysql, PDO, mbstring, tokenizer, bcmath, xml/dom, curl, zip eklentileri ve NGINX için fpm
  • Veritabanı: MySQL 5.7.22 ve üzeri (MySQL 8 öneriliyor) ya da MariaDB 10.2 ve üzeri
  • Redis
  • Web sunucusu: NGINX, Apache veya Caddy
  • curl, tar, unzip, git ve Composer v2

Wings tarafında gereken tek şey Docker container çalıştırabilen bir Linux sistemidir. Dokümantasyon burada önemli bir uyarı yapar: Virtuozzo, OpenVZ ve LXC genelde desteklenmez, KVM’in uyumlu olduğu garanti edilir. Sunucunuzun sanallaştırma türünü şöyle kontrol edin:

systemd-detect-virt

Ayrıca panele bir alan adı yönlendirmeniz gerekir. Panel SSL kullanıyorsa Wings’in FQDN’i için de sertifika oluşturulmalıdır.

3. Panel Bağımlılıklarının Kurulumu

Ubuntu için resmi dokümantasyondaki komut dizisi:

apt -y install software-properties-common curl apt-transport-https ca-certificates gnupg
LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
apt update
apt -y install php8.3 php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} mariadb-server nginx tar unzip git redis-server

Composer:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

4. Veritabanı ve Kullanıcı

Panel için ayrı bir veritabanı kullanıcısı açın:

CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'somePassword';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1';

Parolayı örnekteki gibi bırakmayın. Veritabanı Panel’den farklı bir makinedeyse 127.0.0.1 yerine ilgili IP adresini kullanmanız gerekir; dışarıdan bağlanacaksa my.cnf içinde bind-address=0.0.0.0 ayarı ve güvenlik duvarında 3306 portu devreye girer. Bu portu herkese açmak yerine yalnızca kendi node IP’lerinize açın.

5. Panel Dosyaları ve Kurulum Sihirbazı

mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/
cp .env.example .env
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader

Ardından yapılandırma ve ilk yönetici hesabı:

php artisan key:generate --force
php artisan p:environment:setup
php artisan p:environment:database
php artisan p:environment:mail
php artisan migrate --seed --force
php artisan p:user:make

key:generate ile üretilen APP_KEY değerini kaybetmeyin. .env dosyasındaki bu anahtar değişirse şifrelenmiş veriler açılamaz ve geri getirilemez.

Dosya sahipliği, kullandığınız web sunucusuna göre değişir:

# NGINX, Apache veya Caddy (RHEL tabanlı olmayan dağıtımlar)
chown -R www-data:www-data /var/www/pterodactyl/*
 
# RHEL / Rocky / AlmaLinux üzerinde NGINX
chown -R nginx:nginx /var/www/pterodactyl/*

6. Zamanlayıcı ve Kuyruk Servisi

Panelin zamanlanmış görevleri için crontab kaydı:

* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1

Kuyruk işçisi /etc/systemd/system/pteroq.service dosyasıyla tanımlanır:

[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service
 
[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
 
[Install]
WantedBy=multi-user.target
sudo systemctl enable --now pteroq.service

Bu servis çalışmazsa yedekleme ve zamanlanmış görevler sessizce çalışmaz. Kurulumdan sonra durumunu mutlaka kontrol edin.

7. Web Sunucusu ve SSL

Önce varsayılan NGINX yapılandırmasını kaldırın:

rm /etc/nginx/sites-enabled/default

Sertifikayı SSL yapılandırmasından önce oluşturun; dokümantasyon burada net bir uyarı veriyor: SSL yapılandırmasını kullanıyorsanız sertifikaları oluşturmadan web sunucusu başlamaz.

sudo apt update
sudo apt install -y certbot python3-certbot-nginx
certbot certonly --nginx -d example.com

Yenileme için günlük bir cron kaydı:

0 23 * * * certbot renew --quiet --deploy-hook "systemctl restart nginx"

Panel için hazır NGINX sunucu bloğunu resmi webserver configuration sayfasından kopyalayın. Yapılandırma HTTP’yi HTTPS’e yönlendiren bir blok, TLS 1.2/1.3 ayarları, PHP-FPM soketi ve 100 MB’lık yükleme sınırı içerir. Dosyayı etkinleştirme:

sudo ln -s /etc/nginx/sites-available/pterodactyl.conf /etc/nginx/sites-enabled/pterodactyl.conf
sudo systemctl restart nginx

Sembolik bağlantı adımı RHEL, Rocky Linux ve AlmaLinux’ta gerekmez.

Bu noktada alan adınıza girdiğinizde panel arayüzü açılmalı ve p:user:make ile oluşturduğunuz hesapla giriş yapabilmelisiniz. Henüz hiçbir oyun sunucusu çalıştıramazsınız; onun için Wings gerekir.

8. Wings Kurulumu

Docker’ı kurun ve açılışta başlayacak şekilde etkinleştirin:

curl -sSL https://get.docker.com/ | CHANNEL=stable bash
sudo systemctl enable --now docker

Docker’ı ilk kez kuruyorsanız temel kavramlar için VDS üzerinde Docker kurulumu yazımıza da bakabilirsiniz.

Linux çekirdeği 6.1 ve sonrasında swap hesaplaması varsayılan olarak açıktır. Daha eski çekirdeklerde /etc/default/grub içindeki GRUB_CMDLINE_LINUX_DEFAULT satırına swapaccount=1 eklenmeli, sonra sudo update-grub çalıştırılıp sunucu yeniden başlatılmalıdır.

Wings ikili dosyası:

sudo mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
sudo chmod u+x /usr/local/bin/wings

Servis dosyası /etc/systemd/system/wings.service:

[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service
PartOf=docker.service
 
[Service]
User=root
WorkingDirectory=/etc/pterodactyl
LimitNOFILE=4096
PIDFile=/var/run/wings/daemon.pid
ExecStart=/usr/local/bin/wings
Restart=on-failure
StartLimitInterval=180
StartLimitBurst=30
RestartSec=5s
 
[Install]
WantedBy=multi-user.target

Servisi başlatmadan önce yapılandırma dosyasını Panel’den almanız gerekir; sıradaki adım bu.

9. Node Oluşturma ve Eşleştirme

Panel arayüzünde yönetici bölümünden yeni bir node oluşturun. Node kaydı açıldıktan sonra iki yol var:

  1. Node’un Configuration sekmesindeki kod bloğunu kopyalayıp /etc/pterodactyl/config.yml dosyasına yapıştırmak
  2. Generate Token düğmesine basıp verilen bash komutunu sunucuda çalıştırmak

İkisi de aynı sonucu üretir: Wings’in Panel’e hangi adresten ve hangi anahtarla bağlanacağını yazan bir config.yml. Ardından önce elle deneyin, sonra servise alın:

sudo wings --debug
sudo systemctl enable --now wings

Allocation nedir

Dokümantasyonda allocation, “bir sunucuya atayabileceğiniz IP ve port birleşimi” olarak tanımlanır ve her sunucunun en az bir allocation’ı olmak zorundadır. Yani Minecraft için 25565, Rust için 28015 gibi portları node üzerinde önceden tanımlar, sunucu oluştururken bunlardan birini seçersiniz.

Allocation’da kullanacağınız IP’yi şöyle bulun:

hostname -I | awk '{print $1}'

Allocation için 127.0.0.1 kullanmayın; oyuncular o adrese bağlanamaz.

Açılması gereken portlar

PortProtokolKullanım
80, 443TCPPanel arayüzü
8080TCPWings (HTTP)
8443TCPWings (HTTPS)
2022TCPSunucu dosyalarına SFTP erişimi
Allocation portlarıTCP/UDPOyunun kendi trafiği
sudo ufw allow 8080/tcp
sudo ufw allow 2022/tcp

10. İlk Oyun Sunucusunu Oluşturma

Pterodactyl’in oyun tanımları iki kavram üzerine kurulur. Nest, genellikle bir oyun ya da servistir (Minecraft, Teamspeak, Terraria). Egg ise o oyunun belirli bir türevinin yapılandırmasıdır (Vanilla, Spigot, Bungeecord). Panel varsayılan olarak birkaç nest ile gelir; topluluk eggs deposunda çok daha fazlası var.

Yönetici bölümünden yeni sunucu oluştururken sırasıyla şunları belirlersiniz:

  • Sunucunun sahibi olacak kullanıcı
  • Çalışacağı node ve o node üzerindeki allocation
  • Nest ve egg seçimi, buna bağlı gelen Docker imajı
  • CPU, RAM ve disk sınırları
  • Egg’e özgü değişkenler (sürüm numarası, jar dosyası adı gibi)

Kaydettiğinizde Wings kurulum container’ını çalıştırır, oyun dosyalarını indirir ve sunucu kullanıma hazır hale gelir. Kurulum ilerlemesini sunucunun konsol sekmesinden izleyebilirsiniz.

💡 Docker imajı, sunucunun çalışması için gereken her şeyi taşır. Minecraft için Java’yı ayrıca kurmanıza gerek kalmaz; imaj içinde gelir. Bu yüzden panelde farklı Java sürümü isteyen sunucuları yan yana çalıştırabilirsiniz.

11. Sık Karşılaşılan Sorunlar

Panel hata veriyor, ekranda ayrıntı yok. Laravel günlüğüne bakın:

tail -n 100 /var/www/pterodactyl/storage/logs/laravel-$(date +%F).log

Node bağlanmıyor, konsol açılmıyor. Sırasıyla kontrol edin: systemctl status wings çalışıyor mu, Wings yapılandırması paneldeki node ayarlarıyla aynı mı, güvenlik duvarında 8080/8443 ve 2022 açık mı, sertifika süresi dolmuş mu. Bağlantıyı doğrudan deneyin:

curl https://example.com:8080

Panel ve Wings aynı şemayı kullanmalıdır; biri HTTPS diğeri HTTP ise bağlantı kurulmaz.

Invalid MAC hatası. .env içindeki APP_KEY değişmiştir. Eski anahtarı geri koymadan veriler açılamaz.

Container’ların internete çıkışı yok. Wings varsayılan olarak 1.1.1.1 ve 1.0.0.1 DNS sunucularını kullanır. Sunucunuzun kendi DNS’ini bulun ve /etc/pterodactyl/config.yml içinde bu değerlerin yerine yazın, üzerine eklemeyin:

resolvectl status
cat /etc/resolv.conf

Zamanlanmış görevler çalışmıyor. Kuyruk servisinin günlüğüne bakın, önbelleği temizleyin ve sistem, Panel .env, Wings config.yml saat dilimlerinin aynı olduğunu doğrulayın:

journalctl -xeu pteroq
systemctl restart pteroq
php /var/www/pterodactyl/artisan schedule:clear-cache

Aynı sunucuda Panel ve Wings varsa dokümantasyon /etc/hosts kaydı eklemeyi öneriyor; sunucu kendi alan adına dışarıdan dönmek yerine doğrudan kendine bağlanır.

12. Kaynak Planlaması ve Paket Seçimi

Pterodactyl kurulumunda kaynak hesabı üç kalemin toplamıdır:

  1. Panel: PHP-FPM, MariaDB, Redis ve NGINX. Küçük kurulumlarda 1 ile 2 GB RAM arasında bir yük demektir
  2. Wings ve Docker: Servisin kendisi hafiftir, asıl maliyet disktedir. Her egg kendi Docker imajını indirir ve imajlar birikince birkaç GB yer tutar
  3. Oyun sunucuları: Asıl tüketim buradadır. Panel bir sunucuya 4 GB verdiğinizde o 4 GB gerçekten ayrılır

Yani “panel için ne gerekir” sorusunun cevabı, panelin altında ne çalıştıracağınıza bağlıdır. Aşağıdaki eşleştirme, Panel ve Wings’in aynı makinede olduğu varsayımıyla yapılmıştır:

SenaryoÖnerilen paketNeden
Panel denemesi, 1-2 hafif sunucu (Terraria, küçük Minecraft)ENT-3 (4 çekirdek Xeon Gold 6230R, 6 GB RAM, 60 GB SSD)Panel yaklaşık 2 GB’ı alır, kalan 4 GB iki küçük sunucuya yeter
Arkadaş grubu, 3-4 sunucuENT-4 (6 çekirdek, 8 GB RAM, 80 GB SSD)Docker imajları ve sunucu dosyaları için disk payı rahatlar
Topluluk, 5-8 sunucuENT-7 (12 çekirdek, 16 GB RAM, 160 GB SSD)Aynı anda aktif birden fazla sunucuda çekirdek başına düşen yük azalır
Tek çekirdek hızına duyarlı oyunlar (Minecraft, Rust)PRO-3 (6 çekirdek Ryzen Threadripper PRO 5975WX, 8 GB RAM, 80 GB NVMe)Bu oyunlarda TPS’i belirleyen şey tek çekirdek performansıdır
Kalabalık ağ, panel üzerinden sunucu satışıPRO-6 (12 çekirdek Ryzen, 16 GB RAM, 160 GB NVMe)Çok sayıda container aynı anda aktifken hem çekirdek hem NVMe disk gerekir

Paketlerin güncel yapılandırmaları ve fiyatları için Xeon Enterprise VDS ve Ryzen Premium VDS sayfalarına bakabilirsiniz. Panel altında yalnızca Minecraft çalıştıracaksanız Minecraft sunucu kiralama sayfasındaki oyuncu sayısı eşleştirmesi de yol gösterir.

💡 Kaynak sınırlarını panelde ayarlarken toplamı fiziksel kapasitenin üzerine çıkarabilirsiniz, buna overallocation denir. Sunucuların hepsi aynı anda dolu çalışmadığı sürece işe yarar; ama akşam saatlerinde hepsi aynı anda dolarsa sunucu takas alanına düşer. Kendi kurulumunuzda bu payı dar tutun.

Sonuç

Pterodactyl kurulumu uzun görünse de akış nettir: Panel’i web sunucusuyla ayağa kaldırın, Wings’i Docker ile kurun, ikisini bir node ve allocation üzerinden eşleştirin. Karşılığında her oyun sunucusu için ayrı SSH oturumu açmaktan kurtulur, sunucularınızı tek arayüzden yönetirsiniz.

Panel sizin sunucunuzda, sizin denetiminizde çalışır. Biz altındaki donanımı ve ağı sağlıyoruz; hangi paneli kuracağınıza, hangi sürümü çalıştıracağınıza siz karar veriyorsunuz.

👉 Kurulum için oyun sunucusu paketlerimizi inceleyin. Panel altında birden fazla oyun barındıracaksanız Ryzen Premium VDS seçenekleri ölçeklendirmede daha rahat alan bırakır.