Gereksinimler

Minecraft sunucusu kurmadan önce donanım ve yazılım gereksinimlerini doğru belirlemek, ileride yaşanacak performans sorunlarını önler. Aşağıdaki tablo, oyuncu sayısına göre önerilen minimum kaynakları gösterir:

Oyuncu SayısıRAMCPUDiskBant Genişliği
1-102 GB2 vCPU20 GB SSD100 Mbps
10-304 GB2-4 vCPU40 GB SSD200 Mbps
30-606-8 GB4 vCPU60 GB NVMe500 Mbps
60-10010-12 GB6 vCPU80 GB NVMe1 Gbps
100+16+ GB8+ vCPU120+ GB NVMe1 Gbps

İşletim Sistemi Seçimi

Minecraft sunucusu için Linux dağıtımları önerilir. Windows sunucu da çalışır ancak performans ve kaynak yönetimi açısından Linux tercih edilmelidir.

DağıtımSürümNot
Ubuntu22.04 / 24.04 LTSEn yaygın, geniş topluluk desteği
Debian12 (Bookworm)Kararlı, minimal
Rocky Linux9RHEL tabanlı, kurumsal ortamlar için
AlmaLinux9CentOS alternatifi

VPS Seçimi

Minecraft sunucusu için paylaşımlı hosting yeterli değildir. En az bir VPS (Virtual Private Server) gerekir. VPS seçerken dikkat etmeniz gerekenler:

  • CPU tek çekirdek performansı — Minecraft büyük ölçüde tek çekirdek kullanır, yüksek saat hızı önemlidir
  • NVMe SSD — Chunk yükleme ve dünya kaydetme hızı için kritik
  • DDoS koruması — Oyun sunucuları sık hedef alınır
  • Konum — Oyuncularınıza yakın datacenter seçin (Türkiye için Avrupa)
  • Anlık ölçeklendirme — İhtiyaç arttığında RAM/CPU yükseltebilmelisiniz

Önerimiz: 4 GB RAM / 4 vCPU plan ile başlayın. 30-50 oyuncu rahatlıkla taşınır, gerektiğinde yükseltilebilir.

SSH Bağlantısı

VPS'inize SSH (Secure Shell) protokolü ile bağlanacaksınız. Bu, sunucu üzerinde komut çalıştırmanızı sağlayan uzak terminal erişimidir.

Windows ile Bağlantı

Windows 10/11'de yerleşik OpenSSH istemcisi bulunur. Komut İstemi veya PowerShell açın:

ssh root@SUNUCU_IP_ADRESI

Alternatif olarak PuTTY kullanabilirsiniz: Host Name alanına IP adresini yazın, Port 22 olsun ve Open'a tıklayın.

Mac / Linux ile Bağlantı

Terminal'i açın ve doğrudan SSH komutu çalıştırın:

ssh root@SUNUCU_IP_ADRESI

SSH Anahtar Doğrulama (Önerilen)

Parola yerine SSH anahtar çifti kullanmak hem daha güvenli hem daha pratiktir:

bash
# 1. Yerel bilgisayarınızda anahtar oluşturun
ssh-keygen -t ed25519 -C "minecraft-sunucu"

# 2. Anahtarı sunucuya kopyalayın
ssh-copy-id root@SUNUCU_IP_ADRESI

# 3. Artık parolasız bağlanabilirsiniz
ssh root@SUNUCU_IP_ADRESI

Java Kurulumu

Minecraft sunucusu Java ile çalışır. Hangi Java sürümünü kuracağınız, Minecraft sürümünüze bağlıdır:

Minecraft SürümüGereken JavaPaket Adı (Ubuntu/Debian)
1.20.5 ve üzeriJava 21openjdk-21-jre-headless
1.17.1 – 1.20.4Java 17openjdk-17-jre-headless
1.16.5 ve altıJava 8-16openjdk-16-jre-headless

Ubuntu / Debian Kurulumu

bash
# Paket listesini güncelle
sudo apt update && sudo apt upgrade -y

# Java 21 kur
sudo apt install openjdk-21-jre-headless -y

# Kurulumu doğrula
java -version

Beklenen çıktı: openjdk version "21.x.x" gibi bir satır görmelisiniz.

Birden Fazla Java Sürümü

Sunucuda birden fazla Java sürümü varsa varsayılan sürümü seçebilirsiniz:

sudo update-alternatives --config java

Kullanıcı Oluşturma

Minecraft sunucusunu root kullanıcısı ile çalıştırmak ciddi bir güvenlik riskidir. Sunucu yazılımında bir açık bulunması durumunda saldırgan sisteme tam erişim elde eder.

bash
# minecraft adında yeni kullanıcı oluştur
sudo adduser minecraft

# Kullanıcıya geç
sudo su - minecraft

# Sunucu dizinini oluştur
mkdir -p ~/server && cd ~/server

Bundan sonraki tüm adımları minecraft kullanıcısı ile yapacağız. sudo gerektiren komutlar için kısaca root'a geçip geri dönebilirsiniz.

Sunucu Yazılımı Seçimi

Minecraft sunucu yazılımları farklı amaçlara hizmet eder. Hangisini seçeceğiniz ihtiyaçlarınıza bağlıdır:

YazılımTürPlugin DesteğiPerformansAçıklama
VanillaResmiYokDüşükMojang'ın resmi sunucusu, sade deneyim
CraftBukkitModifiyeBukkit APIOrtaİlk plugin destekli sunucu, artık kullanılmıyor
SpigotModifiyeBukkit + Spigot APIİyiCraftBukkit'in optimize edilmiş hali
PaperModifiyeBukkit + Spigot + Paper APIÇok İyiSpigot fork'u, en yaygın tercih
PurpurModifiyeTüm Paper API + ekstraÇok İyiPaper fork'u, ekstra yapılandırma seçenekleri
FabricModluFabric ModsİyiHafif mod loader, teknik oyuncular için
ForgeModluForge ModsOrtaAğır modpack'ler için standart

Paper Kurulumu

Paper, PaperMC ekibi tarafından geliştirilen ve Spigot tabanlı, optimize edilmiş bir Minecraft sunucu yazılımıdır. Binlerce Bukkit/Spigot plugini ile uyumludur.

Paper JAR İndirme

bash
# minecraft kullanıcısına geç
sudo su - minecraft
cd ~/server

# Paper 1.21.4 son build'i indir
wget https://api.papermc.io/v2/projects/paper/versions/1.21.4/builds/latest/downloads/paper-1.21.4.jar

EULA Onaylama

Minecraft sunucusu ilk kez başlatıldığında Mojang EULA (Son Kullanıcı Lisans Sözleşmesi) kabul edilmelidir:

bash
# İlk başlatma — EULA dosyası ve yapılandırma dosyaları oluşur
java -Xms2G -Xmx2G -jar paper-1.21.4.jar nogui

# Sunucu EULA hatası vererek duracak
# eula.txt dosyasını düzenleyin
echo "eula=true" > eula.txt

Dizin Yapısı

İlk başlatma sonrasında sunucu dizininde şu dosya ve klasörler oluşur:

text
~/server/
├── paper-1.21.4.jar        # Sunucu JAR dosyası
├── eula.txt                # EULA onay dosyası
├── server.properties       # Ana yapılandırma
├── bukkit.yml              # Bukkit ayarları
├── spigot.yml              # Spigot ayarları
├── config/
│   ├── paper-global.yml    # Paper genel ayarları
│   └── paper-world-defaults.yml  # Dünya ayarları
├── plugins/                # Eklenti klasörü
├── world/                  # Overworld dünyası
├── world_nether/           # Nether dünyası
├── world_the_end/          # End dünyası
├── logs/                   # Sunucu logları
└── cache/                  # Önbellek dosyaları

Başlatma Scripti

Sunucuyu her seferinde uzun Java komutunu yazmak yerine bir başlatma scripti oluşturun. Bu script Aikar's Flags ile optimize edilmiş JVM parametrelerini içerir:

bash
#!/bin/bash
# start.sh — Minecraft Paper Sunucu Başlatma Scripti

JAR="paper-1.21.4.jar"
MIN_RAM="4G"
MAX_RAM="4G"

java -Xms${MIN_RAM} -Xmx${MAX_RAM} \
  -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 ${JAR} --nogui

Scripti çalıştırılabilir yapın:

chmod +x start.sh

screen vs systemd Karşılaştırması

Sunucuyu arka planda çalıştırmanın iki yaygın yolu vardır:

Özellikscreensystemd
Kurulum zorluğuKolayOrta
Konsola erişimscreen -r minecraftjournalctl -u minecraft
Otomatik başlatmaYok (crontab gerekir)Yerleşik (enable)
Çökme sonrası yeniden başlatmaYokRestart=on-failure
Log yönetimiManueljournald ile otomatik
Önerilen kullanımTest / geliştirmeProduction sunucular

screen ile Çalıştırma

bash
# screen kur (kurulu değilse)
sudo apt install screen -y

# Yeni screen oturumu oluştur ve sunucuyu başlat
screen -S minecraft ./start.sh

# screen'den çıkmak için: Ctrl+A ardından D
# Geri dönmek için:
screen -r minecraft

# Aktif screen oturumlarını listele
screen -ls

systemd Service

systemd ile Minecraft sunucunuz sistem servisi olarak çalışır: otomatik başlatma, çökme sonrası yeniden başlatma ve merkezi log yönetimi sağlar.

Service Dosyası Oluşturma

ini
# /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Paper Server
After=network.target
Wants=network-online.target

[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/home/minecraft/server
ExecStart=/home/minecraft/server/start.sh
ExecStop=/usr/bin/screen -S minecraft -X stuff "stop\n"
Restart=on-failure
RestartSec=10
StandardInput=null
StandardOutput=journal
StandardError=journal
SyslogIdentifier=minecraft

[Install]
WantedBy=multi-user.target

Bu dosyayı oluşturmak için:

sudo nano /etc/systemd/system/minecraft.service

Servisi Etkinleştirme ve Başlatma

bash
# systemd'yi yeniden yükle
sudo systemctl daemon-reload

# Servisi etkinleştir (sistem başlangıcında otomatik çalışsın)
sudo systemctl enable minecraft

# Servisi başlat
sudo systemctl start minecraft

# Durumu kontrol et
sudo systemctl status minecraft

Sık Kullanılan systemd Komutları

KomutAçıklama
<code>systemctl start minecraft</code>Sunucuyu başlat
<code>systemctl stop minecraft</code>Sunucuyu durdur
<code>systemctl restart minecraft</code>Yeniden başlat
<code>systemctl status minecraft</code>Durum bilgisi göster
<code>journalctl -u minecraft -f</code>Canlı log takibi
<code>journalctl -u minecraft --since '10 min ago'</code>Son 10 dakikanın logları

server.properties Ayarları

server.properties dosyası Minecraft sunucusunun ana yapılandırma dosyasıdır. Aşağıda performans ve oyun deneyimi açısından en önemli ayarlar detaylı olarak açıklanmıştır:

AyarVarsayılanÖnerilenAçıklama
<code>server-port</code>2556525565Sunucunun dinleyeceği TCP/UDP portu
<code>max-players</code>2050Maksimum eşzamanlı oyuncu sayısı
<code>view-distance</code>107Oyuncuya gönderilen chunk yarıçapı (düşük = daha az bant genişliği)
<code>simulation-distance</code>105Aktif olarak işlenen chunk yarıçapı (düşük = daha az CPU)
<code>online-mode</code>truetrueMojang hesap doğrulaması (false = cracked)
<code>motd</code>A Minecraft ServerÖzelleştirinSunucu listesinde görünen açıklama
<code>difficulty</code>easynormalOyun zorluğu (peaceful/easy/normal/hard)
<code>gamemode</code>survivalsurvivalVarsayılan oyun modu
<code>spawn-protection</code>1616Spawn noktası etrafında koruma yarıçapı (blok)
<code>enable-command-block</code>falsefalseCommand block kullanımı (gerekmedikçe kapalı)
<code>max-tick-time</code>6000060000Watchdog timeout (ms) — sunucu donma algılama
<code>network-compression-threshold</code>256256Paket sıkıştırma eşiği (byte)
properties
# Önerilen server.properties yapılandırması
server-port=25565
max-players=50
view-distance=7
simulation-distance=5
online-mode=true
difficulty=normal
gamemode=survival
motd=\u00a7b\u00a7lKEYDAL \u00a7fMinecraft Sunucusu
spawn-protection=16
enable-command-block=false
max-tick-time=60000
network-compression-threshold=256
white-list=false
enforce-whitelist=false
allow-flight=false
spawn-npcs=true
spawn-animals=true
spawn-monsters=true
pvp=true

Firewall Ayarları

Sunucunuzun güvenliği için yalnızca gerekli portları dışarıya açmalısınız. UFW (Uncomplicated Firewall) ile basit ve etkili bir firewall yapılandırması:

bash
# UFW kur (kurulu değilse)
sudo apt install ufw -y

# SSH erişimi (bunu MUTLAKA önce açın!)
sudo ufw allow 22/tcp

# Minecraft sunucu portu
sudo ufw allow 25565/tcp

# Firewall'u etkinleştir
sudo ufw enable

# Durumu kontrol et
sudo ufw status verbose

RCON Portu (İsteğe Bağlı)

RCON, sunucu konsoluna uzaktan erişim sağlar. Kullanacaksanız:

bash
# RCON portunu aç (sadece belirli IP'den)
sudo ufw allow from YEREL_IP_ADRESINIZ to any port 25575 proto tcp

# server.properties'te RCON ayarları:
# enable-rcon=true
# rcon.port=25575
# rcon.password=GUCLU_BIR_PAROLA

Port Özeti

PortProtokolHizmetDurum
22TCPSSHAçık (zorunlu)
25565TCP/UDPMinecraftAçık (zorunlu)
25575TCPRCONİsteğe bağlı (kısıtlı)
Diğer tüm portlarKapalı (varsayılan)

İlk Bağlantı Testi

Sunucu çalışıyor ve firewall ayarlandıysa, artık bağlanma zamanı:

  • Minecraft Java Edition'ı açın
  • Multiplayer > Add Server tıklayın
  • Server Address alanına SUNUCU_IP_ADRESI:25565 yazın (port 25565 ise :25565 kısmı opsiyoneldir)
  • Done ve ardından Join Server tıklayın

Bağlantı Sorunları ve Çözümleri

SorunOlası NedenÇözüm
Connection timed outFirewall portu kapalı<code>ufw status</code> ile 25565 portunu kontrol edin
Connection refusedSunucu çalışmıyor<code>systemctl status minecraft</code> kontrol edin
io.netty.channel... hataSürüm uyumsuzluğuMinecraft istemci sürümünüz sunucu sürümüyle aynı olmalı
Authentication failedonline-mode sorunuOrijinal Minecraft hesabıyla giriş yapın
java.net.UnknownHostExceptionDNS çözümlenemediIP adresi yerine doğrudan sayısal IP deneyin
Internal ExceptionBozuk paket / eklenti hatasıSunucu loglarını (<code>logs/latest.log</code>) inceleyin

Sunucu Konsolundan Kontrol

Bağlantı başarılıysa sunucu konsolunda oyuncu giriş mesajını göreceksiniz. Temel konsol komutları:

text
# Oyuncuya OP yetkisi ver
op OyuncuAdi

# Beyaz liste yönetimi
whitelist add OyuncuAdi
whitelist on

# Sunucuyu güvenle durdur
stop

Sonraki Adımlar

Sunucunuz çalışıyor — tebrikler! Şimdi sıra optimizasyon ve eklenti kurulumunda. Aşağıdaki rehberlerle devam edin: