Ubuntu’da Paper Minecraft sunucusu kurulumu tamamen komut satırından, yaklaşık on beş dakikada tamamlanır. Sıra şudur: Java 25 kurulur, ayrı bir minecraft sistem kullanıcısı açılır, Paper jar’ı wget ile /opt/minecraft/server dizinine indirilir, EULA onaylanır ve start.sh betiğiyle sunucu ayağa kaldırılır.
Bu rehber Ubuntu 24.04 LTS için yazılmıştır; Ubuntu 22.04 ve Debian 12 üzerinde de aynı komutlar çalışır. Güncel kararlı Paper sürümü 26.2 build #112’dir ve Minecraft 26.2 “Chaos Cubed” ile uyumludur. Minecraft 26.1 ve sonrası Java 25 zorunlu kıldığı için Java 21 kurulu bir makinede sunucu hiç açılmaz.
Paper’ın genel mantığını ve yapılandırma dosyalarını işletim sisteminden bağımsız olarak Paper sunucu kurulumu ve yapılandırma sayfasında ele aldık. Burada odak noktamız Ubuntu terminali: her komut kopyalanıp yapıştırılabilir durumda.
Neden Paper?#
Paper, Spigot’un yüksek performanslı bir çatallamasıdır. Spigot ve Bukkit eklentilerinin tamamıyla uyumlu çalışır, üstüne asenkron chunk yükleme, geliştirilmiş varlık (entity) işleme ve yüzlerce hata düzeltmesi ekler. Aynı donanımda vanilla sunucuya göre belirgin biçimde daha yüksek TPS verir.
| Sunucu yazılımı | Eklenti desteği | Performans | 26.2 durumu |
|---|---|---|---|
| Vanilla (Mojang) | Yok | Düşük | Mevcut |
| Spigot | Var | Orta | BuildTools ile derlenir |
| Paper | Var | Yüksek | 26.2 build #112 |
| Purpur | Var | Yüksek + ek ayar | 26.2 build 2620 |
| Forge / Fabric | Mod, eklenti değil | Modpacke bağlı | Mevcut |
Eklenti değil mod kullanacaksanız Paper yerine Forge veya Fabric kurmanız gerekir; ikisi farklı ekosistemlerdir ve aynı sunucuda birlikte çalışmazlar.
Donanım ve Sistem Gereksinimleri#
Minecraft’ın ana tick döngüsü tek çekirdekte çalışır. Bu yüzden çekirdek sayısı değil işlemcinin saat hızı belirleyicidir. AMD Ryzen 9 7900X veya 7950X sınıfı işlemciler bu iş için doğru tercihtir; alt sınır olarak Ryzen 9 3900X kabul edilebilir.
| Oyuncu sayısı | RAM paketi | Java heap | İşlemci | Disk |
|---|---|---|---|---|
| 2-10, hafif eklentili | 8 GB | -Xms6G -Xmx6G | Ryzen 9 | 50 GB NVMe |
| 10-30, eklentili Paper | 10-12 GB | -Xms10G -Xmx10G | Ryzen 9 7900X | 50 GB NVMe |
| 30-60, çok dünyalı | 16 GB | -Xms14G -Xmx14G | Ryzen 9 7950X | 100 GB NVMe |
| 60+ veya sunucu ağı | 32 GB+ | -Xms28G -Xmx28G | Ryzen 9 7950X | 100 GB+ NVMe |
Adım 1: Sistemi Hazırlama ve Java 25 Kurulumu#
SSH ile sunucuya bağlanın ve aşağıdaki adımları sırayla uygulayın. Komutları root olarak değil, sudo yetkisi olan normal bir kullanıcıyla çalıştırın.
-
Paket listesini güncelleyin ve araçları kurun#
sudo apt update && sudo apt upgrade -y sudo apt install -y wget curl jq tar screen tmux apt-transport-https gpg -
Adoptium deposunu ekleyip Temurin 25 kurun#
Ubuntu depolarında Java 25 paketi bulunmadığı için Eclipse Temurin’in resmî deposunu ekliyoruz.
sudo mkdir -p /etc/apt/keyrings wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public \ | sudo gpg --dearmor -o /etc/apt/keyrings/adoptium.gpg echo "deb [signed-by=/etc/apt/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb \ $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" \ | sudo tee /etc/apt/sources.list.d/adoptium.list sudo apt update sudo apt install -y temurin-25-jre -
Java sürümünü doğrulayın#
java -version # openjdk version "25.0.4" ... çıktısını görmelisiniz which java # /usr/bin/javaDepo eklemek istemiyorsanız arşivi elle indirip
/opt/javaaltına açabilirsiniz; iki yöntem de Linux’a Java 25 kurulumu sayfasında ayrıntılı. -
Ayrı bir sistem kullanıcısı açın#
Minecraft’ı root olarak çalıştırmayın. Bir eklenti açığı doğrudan makinenin tamamının ele geçirilmesine dönüşür.
sudo adduser --system --group --home /opt/minecraft --shell /usr/sbin/nologin minecraft sudo mkdir -p /opt/minecraft/server sudo chown -R minecraft:minecraft /opt/minecraft
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin; değiştirilmiş jar’lar arka kapı barındırabilir.
Adım 2: Paper Jar’ını İndirme#
Paper’ın build numarası her yamada artar, bu yüzden sabit dosya adı yazmak yerine resmî Fill v3 API’sinden en güncel yapıyı çekmek en sağlam yöntemdir.
sudo -u minecraft bash
cd /opt/minecraft/server
MCVER="26.2"
URL=$(curl -s "https://fill.papermc.io/v3/projects/paper/versions/${MCVER}/builds/latest" \
| jq -r '.downloads."server:default".url')
wget -O paper.jar "$URL"
ls -lh paper.jar
Tek seferlik kurulum yapıyorsanız papermc.io/downloads/paper sayfasından jar’ı indirip scp veya SFTP ile sunucuya atmanız da yeterli. Dosya adını paper.jar olarak sabitlemek, ileride yazacağınız başlatma betiğini ve servis dosyasını her güncellemede düzenlemekten kurtarır.
API yanıtı indirme adresinin yanında SHA-256 özetini de verir. Güvenliğe önem veriyorsanız indirdiğiniz dosyayı doğrulayın: curl çıktısındaki .downloads."server:default".checksums.sha256 değerini sha256sum paper.jar sonucuyla karşılaştırın. İki değer birebir aynı değilse dosya eksik inmiş ya da araya girilmiş demektir; jar’ı silip yeniden indirin.
channel alanını kontrol edin; EXPERIMENTAL yazan yapıları üretim sunucusunda çalıştırmayın.Adım 3: İlk Çalıştırma ve EULA Onayı#
Sunucuyu ilk kez çalıştırdığınızda dünya oluşmaz. Paper yalnızca eula.txt ve temel yapılandırma dosyalarını üretip kapanır. Bu normaldir.
cd /opt/minecraft/server
java -Xms6G -Xmx6G -jar paper.jar --nogui
Konsolda “You need to agree to the EULA in order to run the server” satırını göreceksiniz. Mojang kullanıcı sözleşmesini kabul etmek için:
sed -i 's/eula=false/eula=true/' eula.txt
cat eula.txt | grep eula=
Şimdi sunucuyu tekrar başlatın. Bu kez dünya oluşturulur; boyutuna göre 30 saniye ile birkaç dakika arasında sürer. “Done (42.318s)! For help, type help” satırını gördüğünüzde sunucu hazırdır. Hata alırsanız EULA hatası çözümü sayfasına bakın.
world, world_nether, world_the_end, plugins, logs, cache ve config klasörleri oluştuysa kurulum başarılı demektir.Adım 4: server.properties Yapılandırması#
Sunucuyu durdurun (konsola stop yazın) ve yapılandırma dosyasını düzenleyin:
nano /opt/minecraft/server/server.properties
server-port=25565
server-ip=
motd=Batihost Test Sunucusu
max-players=40
online-mode=true
white-list=false
enforce-whitelist=false
view-distance=8
simulation-distance=6
spawn-protection=16
enable-command-block=false
network-compression-threshold=256
difficulty=normal
gamemode=survival
allow-flight=false
max-tick-time=60000
enable-rcon=false
En çok fark yaratan iki ayar view-distance ve simulation-distance. Varsayılan 10/10 değerleri kalabalık sunucularda gereksiz yük üretir; 8/6 çoğu survival sunucusu için doğru dengedir. Ayrıntı ve diğer tüm anahtarlar için server.properties ayarları tam listesi sayfasına bakın.
online-mode=false yapmayın. Bu ayar Mojang doğrulamasını devre dışı bırakır ve isteyen herkes başkasının nickiyle sunucunuza girebilir. Kırık istemci desteği vermeniz gerekiyorsa doğrulamayı proxy katmanında yapın ve arka uç sunucuyu dışarıya hiç açmayın.Adım 5: start.sh Başlatma Betiği#
Her seferinde uzun java komutunu yazmamak için bir başlatma betiği oluşturun.
nano /opt/minecraft/server/start.sh
#!/bin/bash
cd /opt/minecraft/server || exit 1
java -Xms10G -Xmx10G \
--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 \
-Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true \
-jar paper.jar --nogui
chmod +x /opt/minecraft/server/start.sh
/opt/minecraft/server/start.sh
Bu bayrak seti Aikar’s Flags olarak bilinir ve 26.x sunucularında hâlâ geçerlidir. 26.1’de duyurulan “G1GC yerine ZGC” değişikliği oyun istemcisinin JVM varsayılanıdır, sunucuyu ilgilendirmez; sunucunun çöp toplayıcısını tamamen sizin verdiğiniz bayraklar belirler. Bayraksız çalıştırılan bir 26.x sunucusu G1GC kullanır.
-XX:+UseZGC yazın. Java 25’te -XX:+ZGenerational bayrağı geçersizdir ve uyarı basar, eklemeyin. Karşılaştırma için RAM ayarları ve JVM flag’leri sayfasına bakın.Adım 6: Sunucuyu Arka Planda Çalıştırma#
start.sh betiğini doğrudan terminalde çalıştırırsanız SSH oturumu kapandığında sunucu da kapanır. İki çözüm var:
Geçici testler için tmux#
tmux new -s mc
/opt/minecraft/server/start.sh
# Oturumdan ayrılmak için: Ctrl+B ardından D
# Geri dönmek için:
tmux attach -t mc
Oturumdan ayrılırken Ctrl+C tuşlamayın; bu Java sürecini öldürür ve dünya kaydedilmeden kapanır. Kullanım ayrıntıları screen ve tmux ile arka planda çalıştırma sayfasında.
Kalıcı kurulum için systemd#
Üretim sunucusunda doğru yöntem systemd servisidir. Makine yeniden başladığında sunucu kendiliğinden açılır, çökmede otomatik toparlanır ve tüm loglar journald’a yazılır. Unit dosyasının tamamı systemd servisi ile otomatik başlatma sayfasında hazır durumda.
Adım 7: Güvenlik Duvarında Portu Açma#
Java Edition varsayılan portu 25565/TCP’dir. Ubuntu’da UFW etkinse portu açmadan hiç kimse bağlanamaz.
sudo ufw allow 22/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
sudo ufw status numbered
# Sunucunun gerçekten porta bağlandığını doğrulayın
sudo ss -tulpn | grep 25565
Sunucuya Bağlanma ve İlk Test#
Sunucu ayakta ve port açık; sıra bağlanmakta. Makinenin genel IP adresini öğrenmek için:
ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
# Sunucu arkasında NAT varsa hosting panelinizdeki genel IP’yi kullanın
Oyunda Çok Oyunculu > Sunucu Ekle ekranına IP_ADRESI:25565 yazın. Varsayılan port kullanıyorsanız :25565 kısmını yazmasanız da olur. İstemcinizin sürümü sunucununkiyle aynı olmalıdır; 26.2 sunucusuna 1.21.11 istemcisiyle bağlanmaya çalışırsanız “Outdated client” uyarısı alırsınız. Farklı sürümlerden oyuncu kabul etmek istiyorsanız ViaVersion ve ViaBackwards ikilisini kurmanız gerekir.
Sunucu listesinde yeşil bağlantı çubuğu ve oyuncu sayısı görünüyorsa her şey yolunda demektir. Kırmızı çarpı ve “Can’t connect to server” görüyorsanız sırayla şunları kontrol edin: sunucu süreci çalışıyor mu (ps aux | grep paper.jar), port dinleniyor mu (sudo ss -tulpn | grep 25565), UFW kuralı var mı (sudo ufw status) ve sağlayıcınızın ağ katmanında ayrı bir güvenlik duvarı bulunuyor mu.
IP yerine akılda kalıcı bir adres kullanmak isterseniz alan adınızın DNS bölgesine bir A kaydı ve varsayılan dışı port kullanıyorsanız bir SRV kaydı eklemeniz yeterli. SRV kaydı sayesinde oyuncular port numarası yazmadan bağlanabilir.
Adım 8: Eklenti Kurulumu#
Eklentiler /opt/minecraft/server/plugins klasörüne jar olarak atılır ve sunucu yeniden başlatılır. Komut satırından doğrudan indirebilirsiniz:
cd /opt/minecraft/server/plugins
wget -O LuckPerms.jar "<resmi-indirme-adresi>"
sudo chown minecraft:minecraft *.jar
sudo systemctl restart minecraft
26.2’ye geçerken eklenti uyumu en çok sorun çıkaran konudur. Doğrulanmış güncel durum:
| Eklenti | Sürüm | 26.2 durumu |
|---|---|---|
| LuckPerms | 5.5.57 | Tam destekli |
| WorldEdit | 7.4.5 | Tam destekli |
| WorldGuard | 7.0.18 | Tam destekli |
| PlaceholderAPI | 2.12.3 | 26.2 için zorunlu güncelleme |
| ViaVersion | 5.11.0 | Paper 1.8-26.2 |
| EssentialsX | 2.22.0 | Resmî destek 26.1.2’ye kadar |
| CoreProtect | 24.0 | 26.2 henüz desteklenmiyor |
Kurulum adımlarının tamamı, bağımlılık yönetimi ve eklenti çakışmalarının nasıl teşhis edileceği Minecraft sunucusuna plugin kurulumu rehberinde.
Otomatik Güncelleme Betiği#
Paper neredeyse her hafta yeni build yayınlar. Aşağıdaki betik sunucuyu durdurur, jar’ı yedekler, yeni yapıyı indirir ve servisi tekrar başlatır.
#!/bin/bash
# /opt/minecraft/update-paper.sh
set -e
MCVER="26.2"
DIR="/opt/minecraft/server"
STAMP=$(date +%Y%m%d-%H%M)
echo "[1/4] Sunucu durduruluyor..."
sudo systemctl stop minecraft
echo "[2/4] Mevcut jar yedekleniyor..."
cp "${DIR}/paper.jar" "/opt/minecraft/yedek/paper-${STAMP}.jar"
echo "[3/4] Yeni build indiriliyor..."
URL=$(curl -s "https://fill.papermc.io/v3/projects/paper/versions/${MCVER}/builds/latest" \
| jq -r '.downloads."server:default".url')
wget -q -O "${DIR}/paper.jar.new" "$URL"
mv "${DIR}/paper.jar.new" "${DIR}/paper.jar"
chown minecraft:minecraft "${DIR}/paper.jar"
echo "[4/4] Sunucu baslatiliyor..."
sudo systemctl start minecraft
echo "Guncelleme tamam."
sudo mkdir -p /opt/minecraft/yedek
sudo chmod +x /opt/minecraft/update-paper.sh
sudo /opt/minecraft/update-paper.sh
plugins ve world klasörleri dahil tüm dizinin yedeğini alın.Kurulum Sonrası Performans Ayarları#
Paper’ın kendi yapılandırma dosyaları config/paper-global.yml ve config/paper-world-defaults.yml yollarındadır. Kurulumdan hemen sonra elden geçirmeye değer birkaç başlık:
- Varlık aktivasyon mesafeleri:
spigot.ymliçindekientity-activation-rangedeğerlerini düşürmek kalabalık çiftliklerde ciddi kazanç sağlar. - Chunk yükleme sınırları:
paper-world-defaults.ymlaltındakichunk-loading-basicbölümü, oyuncu başına saniyede yüklenen chunk sayısını sınırlar. - Otomatik kaydetme aralığı:
bukkit.ymliçindekiticks-per.autosavedeğerini 6000 civarında tutun; çok sık kaydetme disk I/O’sunu boşa yorar.
Bu dosyaların satır satır açıklaması paper.yml, spigot.yml ve bukkit.yml optimizasyon rehberinde. TPS düşmeye başlarsa önce ölçüm yapın: spark profiler ile hangi eklentinin veya hangi chunk’ın yük ürettiğini görmek, körlemesine ayar değiştirmekten çok daha hızlı sonuç verir.
Kurulumun hemen ardından bir de yedek planı kurun. En basit yöntem, sunucu dizininin tamamını gece saatlerinde arşivleyen küçük bir cron görevidir:
# crontab -e ile ekleyin: her gece 04:30
30 4 * * * tar -czf /opt/minecraft/yedek/world-$(date +\%Y\%m\%d).tar.gz -C /opt/minecraft/server world world_nether world_the_end
# 14 günden eski arşivleri sil
0 5 * * * find /opt/minecraft/yedek -name 'world-*.tar.gz' -mtime +14 -delete
Arşivi aynı diskte tutmak yedek sayılmaz; disk arızasında ikisini birden kaybedersiniz. Kopyayı düzenli olarak farklı bir makineye veya nesne depolamaya taşıyın. Yedek alırken sunucunun save-off ve save-all komutlarıyla kısa süreliğine yazmayı durdurması, arşivin tutarlı olmasını sağlar. Ayrıntılı senaryolar Minecraft sunucu yedekleme rehberinde.
Sık Karşılaşılan Hatalar#
| Hata | Sebep | Çözüm |
|---|---|---|
UnsupportedClassVersionError | Java 21 veya daha eski kurulu | Temurin 25 kurun, Java sürüm hatası |
Unable to access jarfile paper.jar | Dosya adı veya dizin yanlış | ls -l ile adı ve dizini doğrulayın |
Failed to bind to port | 25565 başka bir süreçte | sudo ss -tulpn | grep 25565 |
| Sunucu açık ama bağlanılamıyor | UFW kuralı yok | sudo ufw allow 25565/tcp |
Permission denied (start.sh) | Çalıştırma izni verilmemiş | chmod +x start.sh |
| Dosyalar root sahipliğinde | Komutlar sudo ile çalıştırılmış | sudo chown -R minecraft:minecraft /opt/minecraft |
Buradaki listede olmayan bir hatayla karşılaşırsanız önce logs/latest.log dosyasının son 50 satırına bakın: tail -n 50 /opt/minecraft/server/logs/latest.log. Java yığın izi (stack trace) içeren satırlar hatanın kaynağını neredeyse her zaman doğrudan söyler; hangi eklentinin adı geçiyorsa önce onu plugins klasöründen çıkarıp sunucuyu tekrar açın.
Özetle#
Ubuntu’da Paper kurulumu, doğru sırayla ilerlediğinizde tek oturumda biten bir iştir: Temurin 25 kurulur, ayrı bir minecraft kullanıcısı ve /opt/minecraft/server dizini hazırlanır, Fill v3 API’si üzerinden en güncel Paper 26.2 build’i indirilir, eula.txt onaylanır, start.sh yazılıp chmod +x ile çalıştırılabilir yapılır ve 25565/TCP portu UFW’de açılır.
Kurulumu üretim düzeyine taşıyan üç şey kaldı: sunucuyu systemd servisine bağlamak, düzenli yedek almak ve eklentilerin 26.2 uyumunu güncellemeden önce doğrulamak. Debian 12 kullanıyorsanız komutların tamamı aynen geçerlidir; AlmaLinux veya Rocky Linux tarafında yalnızca paket yöneticisi dnf, güvenlik duvarı da firewalld olarak değişir. Kendi makinenizi yönetmek istemiyorsanız hazır kurulu Minecraft sunucu paketleri Paper 26.2 ile birlikte teslim edilir.