
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.
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şen | Görevi | Nerede çalışır |
|---|---|---|
| Panel | PHP ve React ile yazılmış web arayüzü. Kullanıcı, sunucu ve node kayıtlarını tutar | Web sunucusu olan makinede |
| Wings | Go ile yazılmış servis. Docker ile konuşur, oyun sunucularını gerçekten çalıştırır | Oyun 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ım | Sürümler |
|---|---|
| Ubuntu | 22.04, 24.04 |
| Debian | 11, 12, 13 |
| RHEL / Rocky Linux / AlmaLinux | 8, 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-virtAyrı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-serverComposer:
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer4. 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-autoloaderArdı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:makekey: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>&1Kuyruk 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.targetsudo systemctl enable --now pteroq.serviceBu 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/defaultSertifikayı 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.comYenileme 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 nginxSembolik 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 dockerDocker’ı 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/wingsServis 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.targetServisi 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:
- Node’un Configuration sekmesindeki kod bloğunu kopyalayıp
/etc/pterodactyl/config.ymldosyasına yapıştırmak - 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 wingsAllocation 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
| Port | Protokol | Kullanım |
|---|---|---|
| 80, 443 | TCP | Panel arayüzü |
| 8080 | TCP | Wings (HTTP) |
| 8443 | TCP | Wings (HTTPS) |
| 2022 | TCP | Sunucu dosyalarına SFTP erişimi |
| Allocation portları | TCP/UDP | Oyunun kendi trafiği |
sudo ufw allow 8080/tcp
sudo ufw allow 2022/tcp10. İ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).logNode 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:8080Panel 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.confZamanlanmış 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-cacheAynı 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:
- Panel: PHP-FPM, MariaDB, Redis ve NGINX. Küçük kurulumlarda 1 ile 2 GB RAM arasında bir yük demektir
- Wings ve Docker: Servisin kendisi hafiftir, asıl maliyet disktedir. Her egg kendi Docker imajını indirir ve imajlar birikince birkaç GB yer tutar
- 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 paket | Neden |
|---|---|---|
| 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 sunucu | ENT-4 (6 çekirdek, 8 GB RAM, 80 GB SSD) | Docker imajları ve sunucu dosyaları için disk payı rahatlar |
| Topluluk, 5-8 sunucu | ENT-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.