Pterodactyl panelinde modlu Minecraft sunucusu kurmak, doğru eggi (sunucu şablonu) seçmek ve Docker imajını Java 25 yapmakla başlar. Egg, panelin arka planda hangi dosyaları indireceğini, sunucuyu hangi komutla başlatacağını ve size hangi ayarları göstereceğini tanımlayan tariftir. Forge, NeoForge, Fabric, CurseForge ve Modrinth için ayrı ayrı egg’ler vardır; hepsi ücretsizdir ve tek bir JSON dosyasından ibarettir.
Bu rehberde egg’leri nereden indireceğinizi, panele nasıl aktaracağınızı, sunucu oluştururken hangi alanları dolduracağınızı, Forge’un unix_args.txt meselesini ve büyük modpacklerde kurulumu sessizce öldüren Wings limitlerini anlatıyoruz. Panelin kurulumunu henüz yapmadıysanız önce Pterodactyl panel kurulumu sayfasını tamamlayın.
Pterodactyl’de Modlu Sunucu Nasıl Çalışır?#
Pterodactyl iki parçadan oluşur: tarayıcıdan gördüğünüz Panel ve sunucuları Docker konteynerlerinde çalıştıran Wings daemon’u. Bir Minecraft sunucusu açtığınızda Wings, egg’in tanımladığı Docker imajından bir konteyner oluşturur, egg’in kurulum betiğini çalıştırır ve ardından başlatma komutunu uygular.
Modlu sunucuda bu akışın kritik iki noktası vardır. Birincisi Docker imajı: konteynerin içindeki Java sürümünü belirler. İkincisi startup komutu: modern Forge ve NeoForge tek parça bir sunucu jar’ı üretmediği için bu komut klasik -jar server.jar biçiminde değildir.
Hangi Egg’i Seçmelisiniz?#
Egg seçimini modpack belirler, kişisel tercihiniz değil. Kuracağınız paketin sayfasında hangi mod yükleyicisi yazıyorsa ona karşılık gelen egg’i alırsınız.
| Egg | Ne zaman kullanılır | Başlatma mantığı | Ek gereksinim |
|---|---|---|---|
| Forge | Forge tabanlı paketler, eski modpackler (1.12.2, 1.16.5, 1.20.1) | @unix_args.txt (1.17+) ya da -jar | - |
| NeoForge | 1.20.1 sonrası yeni paketler, 26.x için varsayılan tercih | Her zaman @unix_args.txt | - |
| Fabric | Hafif ve performans odaklı paketler | Klasik -jar server.jar | - |
| CurseForge Generic | Hazır modpack’i panele indirtmek | Pakete göre otomatik seçilir | API anahtarı gerekir |
| Modrinth Generic | Hazır .mrpack paketleri | Pakete göre otomatik seçilir | API anahtarı gerekmez |
Minecraft 26.2 için yeni kurulan modlu sunucularda varsayılan tercih NeoForge’dur; büyük modpack ekosistemi 1.20.2 sonrasında büyük ölçüde oraya kaydı. Forge hâlâ aktif geliştiriliyor ama ağırlıklı olarak eski paketlerde kullanılıyor. İki loader arasındaki farkı Forge ile modlu sunucu kurulumu sayfasında ayrıntılandırdık.
Egg’leri Nereden İndirirsiniz?#
Burada eski rehberlerin yanılttığı bir nokta var: uzun yıllar standart olan parkervcp/eggs deposu 14 Mayıs 2024’te arşivlendi ve salt okunur hâle geldi. Güncel Minecraft egg’leri artık pelican-eggs/minecraft deposundadır. Depodaki her klasörde iki dosya bulunur: Pelican için YAML/JSON, Pterodactyl için ayrı bir JSON. Pterodactyl yalnızca JSON formatını kabul eder.
-
Forge eggJSONİndir
-
NeoForge eggÖnerilenİndir
-
Fabric eggİndir
-
CurseForge Generic eggİndir
-
Modrinth Generic eggİndir
Bağlantılar resmî depoya gider. Forum ve Discord kanallarından paylaşılan egg dosyalarını içine bakmadan panele aktarmayın.
Egg’i Panele Aktarma (Import Egg)#
Egg aktarma işlemi admin yetkisi ister; müşteri panelinde bu ekran görünmez. Kendi sunucunuzda çalışıyorsanız yönetici hesabınızla giriş yapın.
-
Admin alanına geçin#
Sağ üstteki dişli simgesine tıklayarak yönetim paneline girin. Sol menüden Nests bölümünü açın.
-
Gerekirse yeni bir Nest oluşturun#
Egg’i mevcut Minecraft nest’ine ekleyebilirsiniz. Ayrı bir grup istiyorsanız Create New ile önce nest’i oluşturmanız gerekir; Pterodactyl her egg’i bir nest’in altına bağlar.
-
Import Egg düğmesiyle JSON dosyasını yükleyin#
Yeşil Import Egg düğmesine tıklayın, indirdiğiniz JSON dosyasını seçin, Associated Nest menüsünden hedef nest’i işaretleyin ve Import deyin.
-
Docker Images listesinde Java 25 olduğunu doğrulayın#
İçe aktardığınız egg’i açın ve Docker Images alanına bakın. Java 25 satırı yoksa elle ekleyin ve kaydedin.
Java 25|ghcr.io/pterodactyl/yolks:java_25 Java 21|ghcr.io/pterodactyl/yolks:java_21 Java 17|ghcr.io/pterodactyl/yolks:java_17
UnsupportedClassVersionError verir. Hatanın ayrıntısı için Java sürüm hatası sayfasına bakın.Sunucu Oluşturma ve Startup Alanlarını Doldurma#
Egg hazır olduğunda admin alanından Servers → Create New ile sunucuyu oluşturursunuz. Modlu sunucuda dikkat etmeniz gereken alanlar şunlardır:
- Memory
- Modlu sunucuda taban 16384 MB (16 GB). Büyük paketlerde 24576-32768 MB verin.
- Disk Space
- En az 100 GB. Modpack ZIP’i açıldığında beklediğinizin üç dört katı yer kaplar.
- Egg
- Forge, NeoForge, Fabric, CurseForge Generic veya Modrinth Generic.
- Docker Image
- 26.x için Java 25 imajı.
- MC_VERSION
- Minecraft sürümü, örneğin
26.2. - FORGE_VERSION / NEOFORGE_VERSION
- Boş bırakırsanız egg en uygun sürümü kendisi seçer. Modpack belirli bir sürüm istiyorsa tam numarayı yazın.
Forge egg’inde ayrıca BUILD_TYPE alanı vardır ve yalnızca iki değer kabul eder: recommended veya latest. Oyuncuların bulunduğu bir sunucuda recommended kanalında kalın. Minecraft 26.2 için Forge’un recommended sürümü 65.1.0, latest sürümü 65.1.2’dir; NeoForge tarafında güncel kararlı yapı 26.2.0.63’tür.
Startup Komutu ve unix_args.txt Meselesi#
Forge 1.17 ve sonrası kurulumdan sonra çalıştırılabilir tek bir forge-<sürüm>.jar üretmez. Bunun yerine run.sh, run.bat, user_jvm_args.txt ve libraries klasörü oluşur. Pterodactyl run.sh dosyasını çalıştırmaz; çünkü betik Java’yı alt süreç olarak başlatır ve panel konsolu sunucuya komut gönderemez hâle gelir.
Çözüm olarak egg’in kurulum betiği, sunucu kök dizinine bir sembolik bağ atar:
# Forge için
ln -sf libraries/net/minecraftforge/forge/*/unix_args.txt unix_args.txt
# NeoForge için
ln -sf libraries/net/neoforged/neoforge/*/unix_args.txt unix_args.txt
Startup komutu da bu dosyanın varlığına göre davranır. Forge egg’inin varsayılan komutu şudur:
java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s "-jar {{SERVER_JARFILE}}" || printf %s "@unix_args.txt" )
NeoForge egg’i her zaman unix_args.txt varsayar ve koşullu ifade içermez. Fabric egg’i ise klasik mantıkla çalışır: java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}.
Unable to access jarfile ya da argüman dosyası hatası görüyorsanız, dosya yöneticisinden kök dizine bakın. unix_args.txt yoksa sembolik bağ oluşmamıştır. Sunucuyu yeniden kurun ya da startup komutundaki @unix_args.txt ifadesini @libraries/net/neoforged/neoforge/26.2.0.63/unix_args.txt gibi tam yolla değiştirin.Bellek Ayarı: MaxRAMPercentage mi, Sabit Heap mi?#
Modlu egg’lerin çoğu sabit -Xmx yerine -XX:MaxRAMPercentage=95.0 kullanır; yani Java, konteynere verilen belleğin yüzde 95’ini heap olarak almaya çalışır. Bu değer modlu sunucuda risklidir, çünkü konteyner limiti heap dışındaki belleği de sayar: sınıf metadata’sı, iş parçacığı yığınları ve yerel bellek. Yüzde 95 heap veren bir modpack sunucusu, GC yükü arttığında konteyner sınırını aşıp öldürülür.
Güvenli yaklaşım, startup komutunda yüzdeyi kaldırıp sabit heap vermektir:
java -Xms14G -Xmx14G -XX:+UseZGC -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -XX:MaxMetaspaceSize=1g -Dterminal.jline=false -Dterminal.ansi=true @unix_args.txt
| Panel Memory değeri | Önerilen heap | Uygun paket boyutu |
|---|---|---|
| 8192 MB (8 GB) | -Xms6G -Xmx6G | Eklentili sunucu veya çok küçük Fabric paketi |
| 16384 MB (16 GB) | -Xms14G -Xmx14G | Modlu sunucu için taban |
| 24576 MB (24 GB) | -Xms20G -Xmx20G | 150-250 mod, orta oyuncu sayısı |
| 32768 MB (32 GB) | -Xms28G -Xmx28G | 300+ mod, kalabalık sunucu |
-XX:+AlwaysPreTouch bayrağını kullanmayın. Bu bayrak heap’in tamamına açılışta dokunur ve konteyner bellek limitine erken çarparak sunucunun daha açılmadan öldürülmesine yol açar. Ayrıca Java 25’te -XX:+ZGenerational bayrağı geçersizdir; yalnızca -XX:+UseZGC yazın. Bellek hatalarının tam listesi için Out of Memory hatası çözümü sayfasına bakın.Büyük Modpacklerde Wings ve NGINX Limitleri#
Buraya kadar her şeyi doğru yaptığınız hâlde 300 modluk bir paketin kurulumu sessizce ölüyorsa, sorun büyük ihtimalle sizin ayarlarınızda değil sunucunun kendi limitlerinde. Üç ayrı limiti kontrol edin.
1. Kurulum konteyneri belleği#
Wings, egg kurulum betiğini ayrı bir konteynerde çalıştırır ve bu konteynerin varsayılan bellek limiti yalnızca 1024 MB’dır. CurseForge egg’i onlarca modu paralel indirip açtığı için bu limit büyük paketlerde yetmez.
# /etc/pterodactyl/config.yml
docker:
installer_limits:
memory: 4096
cpu: 100
2. Yükleme boyutu limiti#
Tarayıcıdan büyük ZIP yüklerken 413 hatası alıyorsanız iki limiti birlikte yükseltin.
# /etc/nginx/sites-available/pterodactyl.conf
client_max_body_size 1000m;
client_body_timeout 300s;
# /etc/pterodactyl/config.yml
api:
upload_limit: 2048
Değişikliklerden sonra iki servisi de yeniden başlatın:
sudo systemctl restart nginx
sudo systemctl restart wings
3. Disk kotası#
Wings, bir arşivi açmadan önce içeriğinin sunucunun disk kotasına sığıp sığmayacağını hesaplar; sığmıyorsa açma işlemini reddeder. 800 MB’lık bir modpack ZIP’i açıldığında 3-4 GB olabileceği için sunucunun disk limitini buna göre ayarlayın.
Modpack’i Panele Kurdurma#
CurseForge Generic egg’i, modpack’in Project ID değerini ister. Bu numarayı modpack’in CurseForge sayfasındaki “About Project” bölümünde bulursunuz. Egg sırasıyla şunu yapar: API’den paket bilgisini çeker, sunucu paketine öncelik vererek dosyayı seçer, ZIP’i indirir, açar, manifest.json dosyasından mod yükleyicisini okur ve manifestteki her modu tek tek indirir.
Modrinth Generic egg’i aynı işi API anahtarı olmadan yapar ve 8 karakterlik proje kimliğini ister. Modrinth tarafını ayrıntılı anlatan Modrinth modpack sunucusu kurma sayfasına da göz atın.
Elinizde hazır bir sunucu paketi varsa egg kullanmadan doğrudan yükleyebilirsiniz; paketin nereden indirileceğini CurseForge server pack indirme sayfasında gösterdik. Büyük dosyalarda tarayıcı yerine SFTP tercih edin; bağlantı bilgileri panele FTP ve SFTP ile bağlanma sayfasında anlatılıyor.
Kurulum Sonrası Kontrol Listesi#
eula.txtdosyasındaeula=trueyazıyor mu?- Konsolda
Donesatırı çıktı mı, yoksa sunucu döngüye mi girdi? modsklasöründeki jar sayısı modpack’in vaat ettiğiyle uyuşuyor mu?- Docker imajı ile Minecraft sürümü eşleşiyor mu (26.x için Java 25)?
- Oyunculara dağıttığınız istemci paketi sunucudakiyle aynı sürüm mü?
Hâlâ açılmayan bir sunucunuz varsa hata mesajını modlu sunucu hataları ve çözümleri sayfasındaki listeyle karşılaştırın. Panelin günlük kullanımını (zamanlanmış görevler, alt kullanıcı yetkileri, yedekler) öğrenmek için Pterodactyl panel kullanım rehberi iyi bir devam noktasıdır.
Donanım Tarafı: Panel Yükü Nereye Biner?#
Pterodactyl’in kendisi hafiftir; asıl yük Wings’in çalıştırdığı Minecraft konteynerlerindedir. Modlu sunucu barındıracak bir düğüm (node) seçerken şu üçlüden şaşmayın: yüksek saat hızlı AMD Ryzen 9 7900X veya 7950X (alt sınır Ryzen 9 3900X), NVMe SSD ve modlu sunucu başına en az 16 GB ayrılabilir bellek. Minecraft’ın ana tick döngüsü tek çekirdekte çalıştığı için çekirdek sayısı değil frekans belirleyicidir.
Tek bir düğümde birden fazla modlu sunucu çalıştıracaksanız belleği toplayıp bölmeyin: her sunucu için ayrı ayrı 16 GB hesaplayın ve işletim sistemiyle Docker için pay bırakın. Kendi düğümünüzü kurmak istiyorsanız yüksek frekanslı Ryzen VDS paketleri bu iş için uygun bir başlangıçtır.
Özetle#
Pterodactyl’de modlu sunucu kurmanın özü şu: güncel depodan doğru egg’i indirin, admin alanından içe aktarın, Docker imajını 26.x için Java 25 yapın ve sunucuyu 16 GB’ın altında bir bellekle açmayın. Forge ve NeoForge tarafında unix_args.txt mantığını bilmek, açılmayan sunucuların büyük kısmını tek başına çözer.
Büyük paketlerde kurulum yarıda kesiliyorsa aklınıza ilk gelen şey Wings’in installer_limits ayarı olsun; bu tek satır, panelde en çok zaman kaybettiren sorunun kaynağıdır. Panel yerine kendi VDS’inizde elle kurulum yapmak isterseniz VDS üzerinde modlu sunucu kurma rehberi aynı işi komut satırından anlatıyor.