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ı | RAM | CPU | Disk | Bant Genişliği |
|---|---|---|---|---|
| 1-10 | 2 GB | 2 vCPU | 20 GB SSD | 100 Mbps |
| 10-30 | 4 GB | 2-4 vCPU | 40 GB SSD | 200 Mbps |
| 30-60 | 6-8 GB | 4 vCPU | 60 GB NVMe | 500 Mbps |
| 60-100 | 10-12 GB | 6 vCPU | 80 GB NVMe | 1 Gbps |
| 100+ | 16+ GB | 8+ vCPU | 120+ GB NVMe | 1 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ım | Sürüm | Not |
|---|---|---|
| Ubuntu | 22.04 / 24.04 LTS | En yaygın, geniş topluluk desteği |
| Debian | 12 (Bookworm) | Kararlı, minimal |
| Rocky Linux | 9 | RHEL tabanlı, kurumsal ortamlar için |
| AlmaLinux | 9 | CentOS 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_ADRESIAlternatif 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_ADRESISSH Anahtar Doğrulama (Önerilen)
Parola yerine SSH anahtar çifti kullanmak hem daha güvenli hem daha pratiktir:
# 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_ADRESIJava 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 Java | Paket Adı (Ubuntu/Debian) |
|---|---|---|
| 1.20.5 ve üzeri | Java 21 | openjdk-21-jre-headless |
| 1.17.1 – 1.20.4 | Java 17 | openjdk-17-jre-headless |
| 1.16.5 ve altı | Java 8-16 | openjdk-16-jre-headless |
Ubuntu / Debian Kurulumu
# 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 -versionBeklenen çı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 javaKullanı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.
# 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 ~/serverBundan 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ım | Tür | Plugin Desteği | Performans | Açıklama |
|---|---|---|---|---|
| Vanilla | Resmi | Yok | Düşük | Mojang'ın resmi sunucusu, sade deneyim |
| CraftBukkit | Modifiye | Bukkit API | Orta | İlk plugin destekli sunucu, artık kullanılmıyor |
| Spigot | Modifiye | Bukkit + Spigot API | İyi | CraftBukkit'in optimize edilmiş hali |
| Paper | Modifiye | Bukkit + Spigot + Paper API | Çok İyi | Spigot fork'u, en yaygın tercih |
| Purpur | Modifiye | Tüm Paper API + ekstra | Çok İyi | Paper fork'u, ekstra yapılandırma seçenekleri |
| Fabric | Modlu | Fabric Mods | İyi | Hafif mod loader, teknik oyuncular için |
| Forge | Modlu | Forge Mods | Orta | Ağı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
# 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.jarEULA Onaylama
Minecraft sunucusu ilk kez başlatıldığında Mojang EULA (Son Kullanıcı Lisans Sözleşmesi) kabul edilmelidir:
# İ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.txtDizin Yapısı
İlk başlatma sonrasında sunucu dizininde şu dosya ve klasörler oluşur:
~/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:
#!/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} --noguiScripti çalıştırılabilir yapın:
chmod +x start.shscreen vs systemd Karşılaştırması
Sunucuyu arka planda çalıştırmanın iki yaygın yolu vardır:
| Özellik | screen | systemd |
|---|---|---|
| Kurulum zorluğu | Kolay | Orta |
| Konsola erişim | screen -r minecraft | journalctl -u minecraft |
| Otomatik başlatma | Yok (crontab gerekir) | Yerleşik (enable) |
| Çökme sonrası yeniden başlatma | Yok | Restart=on-failure |
| Log yönetimi | Manuel | journald ile otomatik |
| Önerilen kullanım | Test / geliştirme | Production sunucular |
screen ile Çalıştırma
# 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 -lssystemd 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
# /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.targetBu dosyayı oluşturmak için:
sudo nano /etc/systemd/system/minecraft.serviceServisi Etkinleştirme ve Başlatma
# 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 minecraftSık Kullanılan systemd Komutları
| Komut | Açı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:
| Ayar | Varsayılan | Önerilen | Açıklama |
|---|---|---|---|
| <code>server-port</code> | 25565 | 25565 | Sunucunun dinleyeceği TCP/UDP portu |
| <code>max-players</code> | 20 | 50 | Maksimum eşzamanlı oyuncu sayısı |
| <code>view-distance</code> | 10 | 7 | Oyuncuya gönderilen chunk yarıçapı (düşük = daha az bant genişliği) |
| <code>simulation-distance</code> | 10 | 5 | Aktif olarak işlenen chunk yarıçapı (düşük = daha az CPU) |
| <code>online-mode</code> | true | true | Mojang hesap doğrulaması (false = cracked) |
| <code>motd</code> | A Minecraft Server | Özelleştirin | Sunucu listesinde görünen açıklama |
| <code>difficulty</code> | easy | normal | Oyun zorluğu (peaceful/easy/normal/hard) |
| <code>gamemode</code> | survival | survival | Varsayılan oyun modu |
| <code>spawn-protection</code> | 16 | 16 | Spawn noktası etrafında koruma yarıçapı (blok) |
| <code>enable-command-block</code> | false | false | Command block kullanımı (gerekmedikçe kapalı) |
| <code>max-tick-time</code> | 60000 | 60000 | Watchdog timeout (ms) — sunucu donma algılama |
| <code>network-compression-threshold</code> | 256 | 256 | Paket sıkıştırma eşiği (byte) |
# Ö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=trueFirewall 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ı:
# 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 verboseRCON Portu (İsteğe Bağlı)
RCON, sunucu konsoluna uzaktan erişim sağlar. Kullanacaksanız:
# 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_PAROLAPort Özeti
| Port | Protokol | Hizmet | Durum |
|---|---|---|---|
| 22 | TCP | SSH | Açık (zorunlu) |
| 25565 | TCP/UDP | Minecraft | Açık (zorunlu) |
| 25575 | TCP | RCON | İsteğe bağlı (kısıtlı) |
| Diğer tüm portlar | — | — | Kapalı (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:25565yazın (port 25565 ise:25565kısmı opsiyoneldir) - Done ve ardından Join Server tıklayın
Bağlantı Sorunları ve Çözümleri
| Sorun | Olası Neden | Çözüm |
|---|---|---|
| Connection timed out | Firewall portu kapalı | <code>ufw status</code> ile 25565 portunu kontrol edin |
| Connection refused | Sunucu çalışmıyor | <code>systemctl status minecraft</code> kontrol edin |
| io.netty.channel... hata | Sürüm uyumsuzluğu | Minecraft istemci sürümünüz sunucu sürümüyle aynı olmalı |
| Authentication failed | online-mode sorunu | Orijinal Minecraft hesabıyla giriş yapın |
| java.net.UnknownHostException | DNS çözümlenemedi | IP adresi yerine doğrudan sayısal IP deneyin |
| Internal Exception | Bozuk 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ı:
# Oyuncuya OP yetkisi ver
op OyuncuAdi
# Beyaz liste yönetimi
whitelist add OyuncuAdi
whitelist on
# Sunucuyu güvenle durdur
stopSonraki Adımlar
Sunucunuz çalışıyor — tebrikler! Şimdi sıra optimizasyon ve eklenti kurulumunda. Aşağıdaki rehberlerle devam edin: