Minecraft Sunucu Kurma: Linux VPS'te Adım Adım (Java Edition)
Arkadaşlarınızla oynayabileceğiniz bir Minecraft Java Edition sunucusunu Ubuntu 24.04'te sıfırdan kurun: Java 21, server.jar veya Paper, bellek ayarları, güvenlik duvarı, systemd servisi ve dünya yedekleri.
Kendi Minecraft sunucunuz olduğunda kuralları siz koyarsınız: kimin girebileceğini, hangi eklentilerin çalışacağını, dünyanın ne zaman yedekleneceğini. Ev bilgisayarında sunucu açmak mümkündür, ama bilgisayar kapandığında oyun da kapanır ve modeminizde port yönlendirmesiyle uğraşmanız gerekir. Bir Linux VPS ise gece gündüz açık kalır ve sabit bir IP adresiyle gelir.
Bu rehberde Ubuntu 24.04 üzerinde bir Minecraft: Java Edition sunucusu kuracağız. Bedrock Edition (telefon, konsol ve Windows sürümü) için ayrı bir sunucu yazılımı gerekir; burada anlatılan adımlar Java Edition içindir.
1. Java 21'i kurun
SSH ile sunucuya bağlanın. Minecraft 1.20.5 ve sonraki sürümler en az Java 21 ister. Ubuntu 24.04 depolarında bu sürüm hazır gelir; sunucuda grafik arayüz olmadığı için "headless" paketi yeterlidir:
sudo apt update && sudo apt upgrade -y
sudo apt install -y openjdk-21-jre-headless
java -version
Çıktıda openjdk version "21... görmelisiniz. İleride çıkacak Minecraft sürümleri daha yeni bir Java isteyebilir. Sunucu açılırken UnsupportedClassVersionError hatası alırsanız, sürüm notlarında gereken Java sürümünü kontrol edin ve apt search openjdk ile depoda hangi sürümlerin bulunduğuna bakın.
Komut satırına yeniyseniz önce temel Linux komutları yazımıza göz atabilirsiniz.
2. Ayrı bir kullanıcı oluşturun
Sunucuyu root ile çalıştırmayın. Bir eklentide veya sunucu yazılımında açık bulunursa saldırgan yalnızca bu kullanıcının dosyalarına erişebilsin:
sudo adduser --system --group --home /opt/minecraft minecraft
sudo -u minecraft mkdir -p /opt/minecraft/server
3. Sunucu dosyasını indirin
İki yaygın seçenek var:
- Resmî sunucu (vanilla): Mojang'ın yayımladığı, değiştirilmemiş sunucu. minecraft.net üzerindeki "Download Minecraft: Java Edition Server" sayfasına gidin ve
server.jarbağlantısını kopyalayın. Bağlantı her sürümde değiştiği için burada sabit bir adres vermiyoruz. - Paper: papermc.io adresinden indirilen, performans iyileştirmeleri yapılmış ve Bukkit/Spigot eklentilerini çalıştırabilen bir sunucu yazılımı. Eklenti kullanmak istiyorsanız veya oyuncu sayınız arttıkça performans önemliyse çoğu kişi Paper'ı tercih eder. Paper'ın indirme sayfasından istediğiniz sürümün bağlantısını kopyalayın.
Kopyaladığınız bağlantıyla dosyayı indirin ve server.jar adıyla kaydedin:
cd /opt/minecraft/server
sudo -u minecraft wget -O server.jar "KOPYALADIGINIZ_BAGLANTI"
KOPYALADIGINIZ_BAGLANTI yerine kopyaladığınız bağlantıyı yapıştırın.
4. İlk çalıştırma ve EULA
Sunucuyu bir kez elle çalıştırın. İlk açılışta gerekli dosyaları oluşturur ve EULA kabul edilmediği için kapanır:
sudo -u minecraft java -Xms1G -Xmx1G -jar server.jar nogui
Minecraft Son Kullanıcı Lisans Sözleşmesi'ni (EULA) okuduktan sonra kabul edin:
sudo -u minecraft sed -i 's/eula=false/eula=true/' eula.txt
5. Bellek ayarları: -Xms ve -Xmx
-Xmx Java'nın kullanabileceği en fazla belleği, -Xms başlangıçta ayıracağı belleği belirler. Sunucularda ikisini aynı değere ayarlamak yaygın bir yaklaşımdır. Dikkat etmeniz gereken nokta, sunucunun tüm RAM'ini Minecraft'a vermemektir: işletim sistemi ve Java'nın kendi ek yükü için 1–1,5 GB kadar pay bırakın. Örneğin 4 GB RAM'li bir sunucuda -Xms2G -Xmx2G veya en fazla -Xms3G -Xmx3G makul olur.
Gereğinden fazla bellek vermek de iyi değildir; çöp toplayıcı (garbage collector) daha büyük bir alanı temizlemek zorunda kalır ve anlık takılmalar artabilir.
6. server.properties temel ayarları
/opt/minecraft/server/server.properties dosyası sunucunun ana ayar dosyasıdır:
sudo -u minecraft nano /opt/minecraft/server/server.properties
Önce bakmanız gereken satırlar:
motd=Arkadaslarla Minecraft
max-players=10
online-mode=true
white-list=true
enforce-whitelist=true
difficulty=normal
view-distance=10
simulation-distance=8
motd: Sunucu listesinde görünen açıklama.online-mode=true: Oyuncuların gerçek Minecraft hesabıyla doğrulanmasını sağlar. Bunufalseyaparsanız herkes istediği kullanıcı adıyla (sizinki dahil) girebilir; kapatmayın.white-listveenforce-whitelist: Yalnızca izin verdiğiniz oyuncular girebilir. Herkese açık bir sunucu kurmayacaksanız en etkili korumadır.view-distancevesimulation-distance: Oyuncu çevresinde kaç chunk yükleneceğini belirler. Sunucu zorlanıyorsa ilk düşüreceğiniz değerler bunlardır.
Oyuncuları beyaz listeye sunucu konsolundan whitelist add OyuncuAdi komutuyla eklersiniz. Konsola nasıl komut göndereceğinizi aşağıda göreceğiz.
7. Güvenlik duvarında portu açın
Minecraft Java Edition varsayılan olarak 25565/TCP portunu kullanır:
sudo ufw allow OpenSSH
sudo ufw allow 25565/tcp
sudo ufw enable
SSH kuralını ufw enable komutundan önce eklediğinizden emin olun; aksi hâlde bağlantınız kesilebilir. Sunucunun genel güvenliği için Linux sunucu güvenliği rehberimizdeki adımları da uygulayın.
8. systemd servisi: screen olmadan kalıcı çalıştırma
screen veya tmux içinde çalıştırmak deneme için yeterlidir, ama sunucu yeniden başladığında oyun kendiliğinden açılmaz. systemd ile hem otomatik başlatma hem de düzgün kapatma sağlayacağız. Konsola komut gönderebilmek için de bir FIFO (adlandırılmış boru) kullanacağız; sunucunun girişi bu dosyaya bağlanacak.
Önce soket birimi:
sudo nano /etc/systemd/system/minecraft.socket
[Unit]
Description=Minecraft konsol girisi
[Socket]
ListenFIFO=/run/minecraft.stdin
SocketUser=minecraft
SocketGroup=minecraft
SocketMode=0660
[Install]
WantedBy=sockets.target
Sonra servis birimi:
sudo nano /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Java sunucusu
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
Sockets=minecraft.socket
StandardInput=socket
StandardOutput=journal
StandardError=journal
ExecStart=/usr/bin/java -Xms2G -Xmx2G -jar server.jar nogui
ExecStop=/bin/sh -c 'if kill -0 $MAINPID 2>/dev/null; then echo stop > /run/minecraft.stdin; while kill -0 $MAINPID 2>/dev/null; do sleep 1; done; fi'
TimeoutStopSec=120
SuccessExitStatus=0 1 143
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
ExecStop satırı, sunucu hâlâ çalışıyorsa ona stop komutunu gönderir ve dünyanın kaydedilip sürecin kapanmasını bekler. Böylece systemctl stop veya sunucu yeniden başlatıldığında dünya yarım kaydedilmiş hâlde kalmaz. StandardOutput=journal satırı önemlidir: girişi FIFO'ya bağladığımız için çıktının günlüğe yazılmasını açıkça belirtmemiz gerekir.
Servisleri etkinleştirip başlatın:
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft.socket minecraft.service
systemctl status minecraft
Konsola komut göndermek ve çıktıyı izlemek için:
echo "whitelist add OyuncuAdi" | sudo tee /run/minecraft.stdin > /dev/null
journalctl -u minecraft -f
Aynı yöntemle say, op, save-all gibi tüm konsol komutlarını gönderebilirsiniz.
9. Dünyayı yedekleyin
Dünya verisi sunucu klasöründeki world klasöründedir. Paper, Nether ve End boyutlarını ayrı olarak world_nether ve world_the_end klasörlerinde tutar. Sunucu çalışırken tutarlı bir yedek almak için otomatik kaydı geçici olarak kapatın, verileri diske yazdırın, arşivleyin ve kaydı tekrar açın:
sudo mkdir -p /var/backups/minecraft
echo "save-off" | sudo tee /run/minecraft.stdin > /dev/null
echo "save-all flush" | sudo tee /run/minecraft.stdin > /dev/null
sleep 15
sudo tar czf /var/backups/minecraft/dunya-$(date +%F-%H%M).tar.gz -C /opt/minecraft/server world world_nether world_the_end
echo "save-on" | sudo tee /run/minecraft.stdin > /dev/null
Vanilla sunucuda yalnızca world klasörü olduğundan tar satırından diğer iki klasörü çıkarın. Bu komutları bir betiğe koyup root'un crontab'ına ekleyerek günlük yedek alabilirsiniz. Yedekleri düzenli olarak sunucu dışına da kopyalayın; yalnızca aynı diskte duran yedek, disk sorunu yaşandığında sizi kurtarmaz.
Ne kadar RAM ve işlemci gerekir?
Kesin bir rakam vermek zordur; eklenti sayısı, keşfedilen alan, kurulan çiftlikler ve görüş mesafesi bellek ihtiyacını doğrudan etkiler. Kaba bir başlangıç tahmini olarak:
- 2–5 oyuncu, eklentisiz: Minecraft'a 2 GB ayırmak çoğu zaman yeterlidir (sunucuda toplam 3–4 GB RAM).
- 5–15 oyuncu veya birkaç eklenti: 3–4 GB ayırmak daha rahattır.
- Mod paketleri veya daha kalabalık sunucular: 6 GB ve üzeri gerekebilir.
Minecraft sunucusunun ana oyun döngüsü büyük ölçüde tek bir işlemci çekirdeğinde çalışır; bu yüzden çekirdek sayısından çok tek çekirdek performansı ve kaynakların istikrarlı olması önemlidir. Kaynakları başkalarıyla paylaşılmayan bir VDS, kalabalık sunucularda daha tutarlı bir deneyim sunar. Kurulumla uğraşmak istemiyorsanız oyun sunucusu paketlerimize bakabilirsiniz: AMD EPYC 7642 vCPU, DDR4 ECC RAM ve NVMe disk ile gelir; ödemeden sonra ekibimiz sunucuyu kurup size teslim eder.
Sık Sorulan Sorular
Bedrock Edition oyuncuları bu sunucuya girebilir mi?
Doğrudan giremez; Java ve Bedrock farklı protokoller kullanır. Paper kullanıyorsanız Geyser gibi bir eklentiyle Bedrock oyuncularının Java sunucusuna bağlanması sağlanabilir. Bunun için Bedrock'un kullandığı UDP portunu da güvenlik duvarında açmanız gerekir.
Sunucu "Unable to access jarfile" hatası veriyor, neden?
Dosya adı veya klasör yanlıştır. ls -l /opt/minecraft/server ile server.jar dosyasının orada olduğunu ve systemd servisindeki WorkingDirectory ile aynı klasörde bulunduğunu kontrol edin.
Oyuncular bağlanamıyor, nereye bakmalıyım?
Önce systemctl status minecraft ile servisin çalıştığını, sudo ufw status ile 25565/tcp kuralının olduğunu kontrol edin. Beyaz liste açıksa oyuncuyu listeye eklediğinizden ve oyuncunun sunucuyla aynı Minecraft sürümünü kullandığından emin olun.
Sunucuyu yeni bir Minecraft sürümüne nasıl güncellerim?
Önce dünyanın yedeğini alın, ardından sudo systemctl stop minecraft ile sunucuyu durdurun, yeni server.jar dosyasını eskisinin yerine indirin ve servisi yeniden başlatın. Eklenti kullanıyorsanız eklentilerin yeni sürümle uyumlu olup olmadığını önceden kontrol edin.
Alan adıyla bağlanmak mümkün mü?
Evet. Alan adınızda VPS'in IP adresini gösteren bir A kaydı oluşturduğunuzda oyuncular IP yerine mc.ornek.com gibi bir adresle bağlanabilir. Varsayılan port 25565 olduğu için port yazmalarına gerek kalmaz.
Bunları da okuyun
512 MB veya 1 GB RAM'li bir VPS'te uygulamalarınız kapanıyorsa swap alanı ilk yardımdır. Ubuntu 24.04'te swap...
Bilgisayarınız kapanınca botunuz da susmasın. Python Telegram botunu Ubuntu 24.04 VPS'te systemd ile 7/24 çalı...
Metin2 sunucusu kuracaksınız ama VPS mi VDS mi alacağınızdan emin değil misiniz? Kaynak paylaşımı, RAM, disk,...