Debian üzerinde Minecraft sunucu kurulumu, ayrıcalıksız bir minecraft kullanıcısı açmak, Java 25 kurmak, sunucu jar’ını /opt/minecraft/server altına yerleştirmek ve bir systemd servisiyle 7/24 ayakta tutmaktan ibarettir. Aşağıdaki adımlar Debian 12 “Bookworm” ve Debian 13 “Trixie” üzerinde birebir aynı şekilde çalışır; tek değişken, deponuzda Java 25 paketinin bulunup bulunmadığıdır.
Debian, oyun sunucusu barındırmak için sevilen bir dağıtım çünkü paket seti sade, arka planda çalışan gereksiz servis sayısı düşük ve kararlı dal yıllarca aynı davranışı sürdürüyor. Bunun karşılığı ise depo paketlerinin muhafazakâr olmasıdır: Minecraft 26.2’nin istediği Java 25’i çoğu zaman Eclipse Temurin arşivinden elle kurmanız gerekir. Bu rehber tam olarak o noktayı da kapsıyor.
Daha genel bir bakış arıyorsanız Linux ve Ubuntu üzerinde Minecraft sunucu kurulumu sayfası tüm dağıtımları kapsayan ana rehberdir; buradaki içerik Debian’a özgü farkları anlatır.
Debian 12 mi, Debian 13 mü? Sürüm seçimi#
Yeni bir sunucu kuruyorsanız Debian 13 “Trixie” daha yeni bir çekirdek ve daha güncel bir araç zinciri sunar. Elinizde çalışan bir Debian 12 “Bookworm” varsa yükseltmek için acele etmenize gerek yok; Bookworm hâlâ güvenlik güncellemesi alıyor ve Minecraft sunucusu için hiçbir eksiği yok. Bu rehberdeki komutların hiçbiri iki sürüm arasında değişmiyor.
Hangi sürümde olduğunuzu cat /etc/os-release ile görebilirsiniz. Debian’ın kararlı dalı paketleri bilerek geride tutar; bu, bir web sunucusunda avantajken Minecraft tarafında Java sürümünü elle yönetmenizi gerektirir. Backports deposunu açmak isterseniz kaynak listesine tek satır eklemeniz yeterli:
echo "deb http://deb.debian.org/debian bookworm-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
apt-cache policy openjdk-25-jre-headless
Backports’ta aradığınız paket çıkmazsa bu bir sorun değil; aşağıdaki Temurin yöntemi her Debian sürümünde çalışır ve sürüm kontrolünü tamamen size bırakır.
sudo paketi gelmez. Root olarak giriş yaptıysanız önce apt install -y sudo deyip kendi kullanıcınızı usermod -aG sudo kullanici ile sudo grubuna ekleyin, ardından oturumu kapatıp yeniden açın.Donanım gereksinimleri ve doğru paket seçimi#
Minecraft’ın ana tick döngüsü tek bir çekirdekte çalışır. Bu yüzden çekirdek sayısı değil, çekirdek başına saat hızı belirleyicidir. Yüksek frekanslı AMD Ryzen 9 işlemcili bir yüksek frekanslı VDS paketi, aynı fiyattaki çok çekirdekli ama düşük frekanslı bir sunucudan belirgin biçimde daha yüksek TPS verir. Disk tarafında chunk okuma/yazma gecikmesi doğrudan oyun içi takılmaya dönüştüğü için NVMe SSD şarttır.
| Sunucu tipi | RAM | İşlemci | Disk | JVM heap |
|---|---|---|---|---|
| 2-10 oyuncu, vanilla veya hafif eklentili | 8 GB | Ryzen 9 3900X ve üzeri | 50 GB NVMe | -Xms6G -Xmx6G |
| 10-30 oyuncu, eklentili Paper | 12 GB | Ryzen 9 7900X | 75 GB NVMe | -Xms10G -Xmx10G |
| 30-60 oyuncu, minigame veya çok dünyalı | 16 GB | Ryzen 9 7900X | 100 GB NVMe | -Xms14G -Xmx14G |
| Forge / Fabric modpack | 16-32 GB | Ryzen 9 7950X | 100 GB+ NVMe | -Xms14G / -Xms28G |
| 60+ oyuncu veya proxy’li sunucu ağı | 32 GB ve üzeri | Ryzen 9 7950X | 200 GB NVMe | -Xms28G -Xmx28G |
Tabloda 8 GB’ın altında bir satır yok, çünkü 26.x sunucuları bellek açısından eski sürümlerden daha talepkâr. Dar bir heap ile açılan sunucu ilk kalabalıkta çöp toplayıcı duraklamalarına takılır ve TPS düşer.
Sunucuya bağlanma ve sistemi hazırlama#
Debian sunucunuza SSH ile bağlanın. Bağlantı yöntemi ve anahtar tabanlı giriş için SSH ile sunucuya bağlanma rehberine göz atın. Bağlandıktan sonra ilk iş paket listesini tazelemek ve kurulum boyunca ihtiyaç duyacağınız araçları yüklemek:
sudo apt update && sudo apt upgrade -y
sudo apt install -y wget curl tar unzip jq tmux nftables ca-certificates
jq paketini Paper’ın indirme API’sinden en güncel yapıyı çekmek için, tmux’ı ise sunucu konsoluna sonradan bağlanabilmek için kuruyoruz. Terminal çoklayıcıların ayrıntısı için screen ve tmux ile sunucuyu arka planda çalıştırma sayfası işinizi görür.
-
Ayrıcalıksız bir minecraft kullanıcısı açın#
Sunucuyu asla root ile çalıştırmayın. Parolasız, yalnızca servis için kullanılacak bir hesap oluşturun:
sudo adduser --disabled-password --gecos "" minecraft sudo mkdir -p /opt/minecraft/server sudo chown -R minecraft:minecraft /opt/minecraft -
Zaman dilimini ayarlayın#
Log dosyalarındaki saatlerin anlamlı olması için sunucunun saat dilimini düzeltin:
sudo timedatectl set-timezone Europe/Istanbul timedatectl -
Dosya tanıtıcı sınırını yükseltin#
Kalabalık sunucularda varsayılan sınır yetmeyebilir. systemd servisine ileride
LimitNOFILE=1048576ekleyeceğiz; şimdilik mevcut değeri görün:ulimit -n
Debian’a Java 25 kurulumu#
Minecraft 26.1 ve sonrası Java 25 zorunlu kılar. Eski bir Java ile 26.2 jar’ını çalıştırmaya kalkarsanız UnsupportedClassVersionError alır ve sunucu hiç açılmaz. Hangi Minecraft sürümünün hangi Java’yı istediğini şu tablo özetler:
| Minecraft sürümü | Gerekli Java | Durum |
|---|---|---|
| 26.1, 26.1.1, 26.1.2, 26.2 | Java 25 | Güncel |
| 1.20.5 – 1.21.11 | Java 21 | Destekleniyor |
| 1.17 – 1.20.4 | Java 17 | Eski |
| 1.16.5 ve öncesi | Java 8 | Çok eski |
Önce deponuzda paket var mı diye bakın. Debian 12’de bu paket çoğunlukla ana depoda bulunmaz, backports veya elle kurulum gerekir:
apt-cache policy openjdk-25-jre-headless
Çıktıda bir aday sürüm görüyorsanız sudo apt install -y openjdk-25-jre-headless yeterlidir. Görmüyorsanız veya sürümü kendi kontrolünüzde tutmak istiyorsanız Eclipse Temurin arşivini kurun. Bu yöntem her Debian sürümünde çalışır ve depo güncellemelerinden etkilenmez.
-
Eclipse Temurin JDK 25LTS · Önerilenİndir
-
Paper 26.2 sunucu jarÖnerilenİndir
-
Purpur 26.2 (alternatif sunucu yazılımı)İndir
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin.
Temurin JDK 25 arşivini elle kurma#
Adoptium indirme sayfasından “Linux x64” ve “JDK” seçeneğini işaretleyip .tar.gz bağlantısını kopyalayın, sonra sunucuda şu adımları izleyin:
cd /tmp
wget -O temurin25.tar.gz "KOPYALADIGINIZ_TAR_GZ_ADRESI"
sudo mkdir -p /opt/java
sudo tar -xzf temurin25.tar.gz -C /opt/java
ls /opt/java
ls çıktısında jdk-25.0.4+7 benzeri bir klasör göreceksiniz. Sürüm yükseltmelerinde yolu tek noktadan değiştirebilmek için bir sembolik bağ oluşturun ve Java’yı sisteme tanıtın:
sudo ln -sfn /opt/java/jdk-25.0.4+7 /opt/java/current
sudo update-alternatives --install /usr/bin/java java /opt/java/current/bin/java 2500
echo 'export JAVA_HOME=/opt/java/current' | sudo tee /etc/profile.d/java.sh
java -version
Son komutun çıktısında openjdk version "25.x" yazmalı. Dağıtımlara göre farklılaşan Java kurulum yöntemlerinin tamamı için Linux’a Java 25 kurulumu sayfasına bakabilirsiniz.
Paper 26.2 sunucu jar’ını indirme#
Vanilla sunucu jar’ı yerine Paper öneriyoruz: aynı oyun deneyimini belirgin biçimde daha yüksek TPS ile verir ve eklenti desteği getirir. Paper’ın build numarası sık değiştiği için dosya adını sabitlemek yerine resmî Fill API’sinden en güncel yapıyı çekin:
sudo -u minecraft -s
cd /opt/minecraft/server
URL=$(curl -s https://fill.papermc.io/v3/projects/paper/versions/26.2/builds/latest | jq -r '.downloads."server:default".url')
wget -O paper.jar "$URL"
ls -lh paper.jar
Elle indirmeyi tercih ederseniz papermc.io indirme sayfasından 26.2 hattının en güncel yapısını alıp dosyayı paper.jar adıyla /opt/minecraft/server içine koyun. Modlu bir sunucu kuracaksanız Paper yerine Forge ya da Fabric installer’ı kullanmanız gerekir; eklenti tabanlı bir sunucuda Paper doğru tercihtir.
start.sh dosyası ve ilk çalıştırma#
Sunucuyu her seferinde uzun bir komutla başlatmamak için bir başlatma betiği yazın. 8 GB’lık bir pakette heap değeri -Xms6G -Xmx6G olmalı; Xms ile Xmx daima eşit verilir ki JVM heap’i sürekli büyütüp küçültmekle uğraşmasın.
nano /opt/minecraft/server/start.sh
İçeriği şu şekilde doldurun. Aşağıdaki bayrak seti Paper’ın resmî olarak önerdiği Aikar’s Flags setidir ve 26.x sunucularında hâlâ geçerlidir:
#!/bin/bash
cd /opt/minecraft/server
exec /opt/java/current/bin/java \
-Xms6G -Xmx6G \
--add-modules=jdk.incubator.vector \
-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 \
-XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch \
-XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M \
-XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 \
-XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 \
-XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 \
-XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 \
-jar paper.jar --nogui
chmod +x /opt/minecraft/server/start.sh
./start.sh
İlk çalıştırmada sunucu eula.txt dosyasını oluşturup kapanır. Lisans sözleşmesini okuyup kabul ediyorsanız değeri true yapın:
sed -i 's/eula=false/eula=true/' /opt/minecraft/server/eula.txt
./start.sh
Bu adımda takılırsanız Minecraft EULA hatası sayfası tam olarak bu durumu ele alıyor. İkinci çalıştırmada dünya üretilir ve konsolda Done (xx.xxxs)! For help, type "help" satırını görürsünüz.
Heap büyüdükçe bayrakları güncelleyin#
12 GB’ın üzerinde heap kullanıyorsanız Aikar setinde dört değeri değiştirin: G1NewSizePercent=40, G1MaxNewSizePercent=50, G1HeapRegionSize=16M ve InitiatingHeapOccupancyPercent=20. 16 GB ve üzeri heap ya da ağır modlu sunucularda G1 yerine -XX:+UseZGC denenebilir; ZGC kullanacaksanız G1’e özgü bayrakların tamamını kaldırın. Ayrıntı için RAM ayarları ve JVM flag’leri sayfasına bakın.
-XX:+ZGenerational bayrağı obsolete’tir ve uyarı basar; ZGC için yalnızca -XX:+UseZGC yazın. Ayrıca 26.1’le gelen “G1GC yerine ZGC” değişikliği oyun istemcisinin JVM varsayılanıdır, sunucuyu ilgilendirmez. Bayraksız çalıştırılan bir 26.x sunucusu hâlâ G1GC kullanır.server.properties temel ayarları#
Sunucu ilk kez açıldıktan sonra /opt/minecraft/server/server.properties dosyasını düzenleyin. Debian’da nano ile açmak yeterlidir. Aşağıdaki değerler Türkiye lokasyonlu, 8-12 GB’lık bir sunucu için makul bir başlangıçtır:
server-port=25565
motd=§bBatihost §fMinecraft Sunucusu
max-players=40
online-mode=true
view-distance=8
simulation-distance=6
enable-command-block=false
spawn-protection=16
network-compression-threshold=256
view-distance değeri TPS üzerinde en büyük etkiye sahip ayarlardan biridir; 10’un üzerine çıkmak kalabalık sunucularda gözle görülür yük bindirir. Tüm anahtarların anlamı için server.properties ayarları tam listesi sayfasına bakabilirsiniz. Değişikliklerden sonra sunucuyu yeniden başlatın.
systemd servisi ile 7/24 çalıştırma#
SSH oturumunu kapattığınızda sunucunun kapanmaması için servis tanımlayın. Root kabuğuna dönüp dosyayı oluşturun:
sudo nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Paper Sunucusu
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/opt/minecraft/server/start.sh
Restart=on-failure
RestartSec=15s
LimitNOFILE=1048576
KillSignal=SIGINT
TimeoutStopSec=90
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
systemctl status minecraft --no-pager
journalctl -u minecraft -f
KillSignal=SIGINT satırı önemlidir: systemd servisi durdururken Paper’a düzgün kapanma sinyali gider, dünya kaydedilir. Konsola komut yazabilmek için servisi tmux oturumu içinde çalıştırmak ya da RCON açmak gerekir; iki yöntemin de kurulumu systemd servisi ile otomatik başlatma sayfasında anlatılıyor.
Güvenlik duvarı: nftables ve UFW ile 25565 portu#
Debian’ın yerel paket filtreleme arka ucu nftables’tır ve iptables komutu da aslında nftables’a yazar. İki seçeneğiniz var.
Doğrudan nftables ile#
/etc/nftables.conf dosyasını düzenleyip kalıcı bir kural seti yazın:
sudo nano /etc/nftables.conf
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif lo accept
ip protocol icmp accept
tcp dport 22 accept
tcp dport 25565 accept
}
chain forward { type filter hook forward priority 0; policy drop; }
chain output { type filter hook output priority 0; policy accept; }
}
sudo nft -f /etc/nftables.conf
sudo systemctl enable --now nftables
sudo nft list ruleset
policy drop yazan bir kural setini uygularken 22/TCP satırını unutursanız SSH bağlantınız anında kopar ve sunucuya erişemezsiniz. Kuralı uygulamadan önce ikinci bir SSH oturumu açık tutun, sağlayıcınızın konsol erişimini de hazırda bulundurun.UFW ile daha basit yol#
nftables sözdizimiyle uğraşmak istemiyorsanız UFW aynı işi tek satırda yapar:
sudo apt install -y ufw
sudo ufw allow OpenSSH
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status verbose
Geyser veya Bedrock uyumluluğu kullanacaksanız 19132/UDP portunu da açmanız gerekir. Kural yönetiminin ayrıntısı için UFW ile Minecraft portu açma ve sunucu güvenlik duvarı yapılandırması sayfalarına bakın.
Yedekleme ve bakım#
Dünya klasörü bir Minecraft sunucusunda yeri doldurulamayan tek veridir. Günlük bir tar yedeği alıp yedi günden eskileri silen basit bir betik çoğu sunucu için yeterlidir:
sudo -u minecraft mkdir -p /opt/minecraft/backups
sudo -u minecraft nano /opt/minecraft/backup.sh
#!/bin/bash
TARIH=$(date +%Y-%m-%d_%H%M)
cd /opt/minecraft/server
tar -czf /opt/minecraft/backups/dunya_$TARIH.tar.gz world world_nether world_the_end
find /opt/minecraft/backups -name "dunya_*.tar.gz" -mtime +7 -delete
chmod +x /opt/minecraft/backup.sh
sudo -u minecraft crontab -e
# Dosyanın sonuna ekleyin:
30 4 * * * /opt/minecraft/backup.sh
Yedeği aynı diskte tutmak tek başına yeterli değildir; en az bir kopyayı başka bir makinede saklayın. Strateji için Minecraft sunucu yedekleme rehberine bakın. Sistem güncellemelerini de ihmal etmeyin:
sudo apt update && sudo apt upgrade -y
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Sunucuyu test etme ve oyuncuları bağlama#
Servis çalışır duruma geldikten sonra üç şeyi sırayla doğrulayın. Önce sunucunun portu gerçekten dinlediğini görün:
sudo ss -tulpn | grep 25565
systemctl is-active minecraft
tail -n 20 /opt/minecraft/server/logs/latest.log
Çıktıda 0.0.0.0:25565 satırını görüyorsanız sunucu tüm arayüzlerden bağlantı kabul ediyor demektir. Yalnızca 127.0.0.1:25565 görünüyorsa server.properties içindeki server-ip satırı doldurulmuş demektir; boşaltıp sunucuyu yeniden başlatın.
Ardından oyun istemcisinde “Çok Oyunculu” ekranından sunucunuzun IP adresini 1.2.3.4:25565 biçiminde ekleyin. Varsayılan port kullanıyorsanız port kısmını yazmasanız da olur. Sunucu listesinde MOTD ve oyuncu sayısı görünüyorsa ağ tarafı tamamdır; “Bağlantı reddedildi” yazıyorsa sorun neredeyse her zaman güvenlik duvarı ya da sağlayıcı tarafındaki ağ filtresidir.
Son olarak kendinizi yetkili yapın. Sunucu konsolunda op KullaniciAdiniz komutunu çalıştırın; systemd altında konsola erişemiyorsanız sunucuyu durdurup ops.json dosyasını elle düzenlemek yerine tmux oturumuna geçmeniz daha güvenli olur.
Debian’a özgü sık karşılaşılan sorunlar#
- sudo: command not found
- Minimal kurulumda sudo gelmez. Root ile
apt install -y sudoçalıştırıp kullanıcınızıusermod -aG sudo kullaniciile gruba ekleyin, sonra yeniden giriş yapın. - java: command not found (servis içinde)
- systemd, kabuk profillerini okumaz.
start.shiçinde Java’yı/opt/java/current/bin/javagibi tam yolla çağırın;javayazıp geçmeyin. - Permission denied çalıştırma hatası
chmod +x /opt/minecraft/server/start.shkomutunu unutmuş olabilirsiniz. Dosya sahipliğini de kontrol edin:chown -R minecraft:minecraft /opt/minecraft.- Failed to bind to port
- Aynı porta bağlanmış eski bir süreç var demektir.
sudo ss -tulpn | grep 25565ile bulun,systemctl stop minecraftile durdurun ya daserver-portdeğerini değiştirin. - Sunucu açık ama dışarıdan bağlanılamıyor
- Önce
server.propertiesiçindekiserver-ipsatırının boş olduğunu doğrulayın, sonra güvenlik duvarı kurallarını kontrol edin. Sağlayıcı panelindeki ağ filtresi de portu kapatıyor olabilir.
journalctl -u minecraft -n 100 --no-pager komutu son 100 satır konsol çıktısını gösterir. Bir çökme sonrası ilk bakılacak yer burasıdır; latest.log dosyası /opt/minecraft/server/logs/ altındadır.Kendi sunucunuzu mu kuracaksınız, hazır paket mi?#
Debian üzerinde her şeyi elle kurmak size tam kontrol verir; bunun için Türkiye lokasyonlu, Ryzen 9 tabanlı bir VDS paketi yeterlidir. Sistem yönetimiyle uğraşmak istemiyor, doğrudan panel üzerinden sunucu açmak istiyorsanız hazır Minecraft sunucu paketleri Java sürümü, port yönetimi ve yedekleme gibi işleri sizin yerinize halleder. Modlu bir sunucu planlıyorsanız 16 GB ve üzeri RAM’li paketlere bakın.
Özetle#
Debian üzerinde Minecraft sunucu kurulumu beş adıma iner: ayrıcalıksız bir minecraft kullanıcısı açmak, Java 25 kurmak, Paper 26.2 jar’ını /opt/minecraft/server altına indirmek, start.sh ile Aikar bayraklarını vermek ve bir systemd servisiyle sunucuyu kalıcı hale getirmek. Güvenlik duvarında 25565/TCP portunu açmayı ve günlük dünya yedeğini kurmayı atlamayın.
Donanım tarafında 8 GB RAM, yüksek saat hızlı Ryzen 9 işlemci ve NVMe SSD alt sınırınız olsun; heap değerini paketinizin 2 GB altında tutun. Ubuntu, AlmaLinux veya Rocky Linux kullanıyorsanız RHEL tabanlı dağıtımlarda kurulum ve genel Linux kurulum rehberi sayfalarında aynı yapının dağıtıma uyarlanmış hâlini bulabilirsiniz.