Minecraft otomatik restart, sunucunun belirlediğiniz saatte kendiliğinden kapanıp tekrar açılmasıdır. Amacı basit: saatler boyunca biriken çöpü sıfırlamak. Uzun süre açık kalan bir Paper sunucusunda yerdeki eşyalar, ölü chunk referansları ve eklentilerin bıraktığı nesneler birikir; günlük bir yeniden başlatma bunların hepsini tek hamlede temizler.
Ama restart bir tedavi değil, bakım işidir. Bu sayfada hem neden işe yaradığını hem de neyi çözmediğini anlatıyoruz; sonra dört farklı kurulum yöntemini karşılaştırıp size uygun olanı seçmenizi sağlıyoruz. Sunucu yazılımı olarak Paper 26.2 üzerinden ilerliyoruz, ama anlatılan mantık Purpur ve Fabric için de aynıdır.
Günlük Restart Neden İşe Yarar?#
Yeniden başlatmanın kazanç sağladığı üç somut mekanizma var. Hepsi zamanla birikir ve hiçbiri kendiliğinden geri dönmez.
Heap parçalanması ve çöp toplayıcı yükü#
Java sunucusu çalıştıkça heap içinde bir sürü küçük, dağınık boşluk oluşur. Çöp toplayıcı bunları toparlamak için giderek daha uzun duraklamalar yapar. Sabah 20 milisaniyede biten bir toplama, akşam 200 milisaniye sürebilir; bu 4 tick’in kaybolması demektir. Restart heap’i sıfırdan tahsis eder ve bu duraklamalar başa döner. Heap ve JVM bayrakları doğru ayarlanmışsa etki daha yavaş büyür ama tamamen kaybolmaz.
Sızıntı yapan eklentiler#
Kötü yazılmış bir eklenti, oyuncu çıktıktan sonra da o oyuncuya ait nesneleri bellekte tutabilir. Aynı şey iptal edilmeyen zamanlayıcılar ve kapatılmayan veritabanı bağlantıları için de geçerli. Bu tür sızıntılar saatte birkaç megabayt gibi görünür, kimse fark etmez, sonra gece yarısı OutOfMemoryError ile karşılaşırsınız. Restart, sızıntıyı düzeltmez ama biriken tarafı temizler.
Biriken varlıklar ve chunk’lar#
Oyuncular oynadıkça yere eşya düşer, mob çiftlikleri çalışır, minecart ve armor stand birikir, keşfe çıkan herkes yeni chunk yükletir. Saatler sonunda tick başına işlenen varlık sayısı katlanır. Bunu kısmen entity temizleme eklentileriyle yönetebilirsiniz ama chunk tarafını temizlemenin en ucuz yolu hâlâ yeniden başlatmaktır.
Restart Tek Başına Çözüm Değildir#
Destek taleplerinde en sık gördüğümüz kalıp şudur: sunucu akşam saatlerinde donuyor, sahibi restart sıklığını artırıyor, sorun birkaç gün sessizleşiyor, sonra geri geliyor. Restart sıklığı bir teşhis aracıdır aslında. Ne kadar sık restart gerekiyorsa sorun o kadar büyüktür.
| Gereken restart sıklığı | Ne anlama gelir | Yapılması gereken |
|---|---|---|
| Günde 1 kez | Normal bakım | Bu rutini kurun, üstüne gitmeyin |
| 12 saatte 1 | Yoğun sunucu, kabul edilebilir | Entity ve chunk ayarlarını gözden geçirin |
| 6 saatte 1 | Bir yerde sızıntı var | spark ile bellek profili alın |
| 2-3 saatte 1 | Ciddi sorun | Eklentileri tek tek eleyin, heap boyutunu kontrol edin |
Dört Yöntem: Hangisi Size Uygun?#
Otomatik restart kurmanın dört yolu var ve hepsinin farklı bir zayıf noktası bulunuyor. Aşağıdaki tabloyla başlayın, sonra seçtiğiniz yöntemin bölümüne geçin.
| Yöntem | Kurulum | Çökmede kendi kalkar | Oyun içi sayaç | Kime uygun |
|---|---|---|---|---|
| systemd + timer | Orta | Evet | Betikle eklenir | Kendi VDS’sini yöneten Linux kullanıcısı |
| Bash döngü betiği | Kolay | Evet | Betikle eklenir | screen/tmux ile çalışanlar |
| Panelden zamanlanmış görev | Çok kolay | Evet (panel yönetir) | Panelin komut alanıyla | Pterodactyl / web panel kullanıcısı |
| Eklenti zamanlayıcısı | Kolay | Hayır | Yerleşik | Sunucu sürecine erişimi olmayanlar |
Tablodaki en kritik sütun üçüncüsü. Eklenti, kapanan Java sürecini geri başlatamaz — çünkü süreç kapandığında eklenti de kapanmıştır. Bu yüzden eklenti yöntemi tek başına yeterli değildir, mutlaka alttaki katmanlardan biriyle birlikte kullanılır.
Yöntem 1: systemd Servisi ve Timer#
Linux tarafında en sağlam kurulum budur. Sunucuyu bir servis hâline getirirsiniz, ayrı bir timer birimi de her gün belirlenen saatte önce oyuncuları uyarır, sonra servisi yeniden başlatır. Önce servis dosyası:
# /etc/systemd/system/minecraft.service
[Unit]
Description=Minecraft Paper Sunucusu
After=network.target
[Service]
Type=simple
User=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms10G -Xmx10G -XX:+UseG1GC -jar paper-26.2-112.jar --nogui
Restart=on-failure
RestartSec=15
[Install]
WantedBy=multi-user.target
Restart=on-failure tercihi bilinçlidir. stop komutuyla düzgün kapanan sunucu 0 koduyla çıkar ve systemd onu geri açmaya çalışmaz; böylece planlı restartla süreç yönetimi birbirine girmez. Çökme durumunda ise çıkış kodu farklı olacağı için servis 15 saniye içinde tekrar ayağa kalkar.
Şimdi timer’ı ve tetiklediği tek seferlik birimi tanımlayın:
# /etc/systemd/system/minecraft-restart.timer
[Unit]
Description=Minecraft sunucusunu her gun 05:30 da yeniden baslatir
[Timer]
OnCalendar=*-*-* 05:30:00
Persistent=true
[Install]
WantedBy=timers.target
# /etc/systemd/system/minecraft-restart.service
[Unit]
Description=Minecraft gunluk yeniden baslatma
[Service]
Type=oneshot
ExecStart=/opt/minecraft/restart-uyari.sh
ExecStart=/bin/systemctl restart minecraft.service
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft.service
sudo systemctl enable --now minecraft-restart.timer
systemctl list-timers minecraft-restart.timer
Son komut bir sonraki tetiklenme zamanını gösterir; kurulumun doğru olduğunu buradan teyit edersiniz. Persistent=true satırı da önemlidir: sunucu bakım yüzünden tetiklenme saatinde kapalıysa, systemd açılışta kaçırılan görevi çalıştırır.
Yöntem 2: Bash Döngü Betiği#
systemd ile uğraşmak istemiyorsanız veya sunucuyu screen ya da tmux oturumunda çalıştırıyorsanız sonsuz döngü betiği en hızlı yoldur. Mantığı tek cümlede özetlenir: Java süreci hangi sebeple kapanırsa kapansın, döngü onu tekrar başlatır.
#!/bin/bash
# /opt/minecraft/dongu.sh
cd /opt/minecraft || exit 1
while true; do
java -Xms10G -Xmx10G -XX:+UseG1GC -jar paper-26.2-112.jar --nogui
echo "Sunucu kapandi. 10 saniye sonra yeniden baslatiliyor..."
echo "Tamamen durdurmak icin bu pencerede Ctrl+C tuslayin."
sleep 10
done
chmod +x /opt/minecraft/dongu.sh
screen -S mc /opt/minecraft/dongu.sh
stop yazdığınızda sunucu kapanmaz, 10 saniye sonra geri açılır. Bakım yapmak için önce Ctrl+C ile döngüyü kırmanız, sonra stop komutunu vermeniz gerekir. Bunu bilmeyen ekip arkadaşınız sunucuyu kapatamayınca panikliyor, sonra süreci zorla öldürüyor — dünya bozulması buradan çıkıyor.Günlük restart için bu betiği cron ile birleştirebilirsiniz: cron belirlenen saatte uyarı betiğini çalıştırır, o da stop gönderir, döngü sunucuyu geri açar.
Yöntem 3: Panelden Zamanlanmış Görev#
Pterodactyl ve benzeri panellerde restart kurmak için hiçbir dosyaya dokunmanıza gerek yok. Panel zaten süreci kendi yönetiyor, tek yapmanız gereken zamanlanmış bir görev tanımlamak.
-
Zamanlamalar sekmesine girin#
Sunucunuzu seçin, "Schedules" (Zamanlamalar) sekmesine geçin ve yeni bir zamanlama oluşturun. Cron alanına saat ve dakikayı girin: her gün 05:30 için
30 5 * * *. -
Uyarı görevlerini sıraya ekleyin#
İlk görev bir konsol komutu olsun:
say Sunucu 5 dakika icinde yeniden baslatilacak.Ardından gecikme (offset) alanına 240 saniye verip ikinci uyarıyı ekleyin. -
Kaydetme ve güç eylemini ekleyin#
Son iki görev sırasıyla
save-allkonsol komutu ve "Power Action: Restart" olmalı. Panelin restart eylemi süreci düzgün kapatıp geri açar.
Panel arayüzündeki alan adları sürümden sürüme küçük farklılıklar gösterebilir; ekran adımlarının tamamı web panelde zamanlanmış görev oluşturma sayfasında var. Panel yönteminin en büyük avantajı, süreç yönetimini zaten panelin yapıyor olmasıdır — ayrıca bir servis dosyası yazmanıza gerek kalmaz.
Yöntem 4: Eklenti ile Zamanlayıcı#
Sunucu dosyalarına veya süreç yöneticisine erişiminiz yoksa geriye eklenti kalır. Hangar ve SpigotMC üzerinde "auto restart" araması yaptığınızda çıkan zamanlayıcı eklentileri hep aynı işi yapar: yapılandırma dosyasına saat listesi girersiniz, eklenti o saatlere yaklaşınca sohbete ve boss bar’a geri sayım basar, süre dolunca sunucuyu kapatır.
Burada bilinmesi gereken kritik ayrıntı şu: eklentilerin çoğu sunucuyu gerçekten "yeniden başlatmaz", Spigot’un yerleşik /restart mekanizmasını tetikler. O mekanizma da spigot.yml içindeki betiği çalıştırır:
# spigot.yml
settings:
restart-on-crash: true
restart-script: ./start.sh
restart-script yolu yanlışsa ya da betik çalıştırılabilir değilse sunucu kapanır ve bir daha açılmaz. Sabaha kadar kapalı kalan sunucuların büyük kısmı tam olarak bu yüzden kapalı kalıyor. Eklenti kurmadan önce bu satırı doğrulayın ve bir kez elle test edin.
Restart Öncesi Duyuru, save-all ve Kapatma Zinciri#
Otomatik restart kurulumlarında en çok atlanan kısım burası. Sunucuyu haber vermeden kapatmak teknik olarak sorunsuzdur, oyuncu açısından felakettir: elmas kazarken kopan biri geri girdiğinde envanterini kaybettiğini düşünür, sonra Discord’da mesaj patlar.
Doğru zincir üç adımdır. Önce sayaçlı duyuru, sonra save-all, en son stop. Aralarına sleep koyarak bunu tek betikte toplayabilirsiniz:
#!/bin/bash
# /opt/minecraft/restart-uyari.sh
export MCRCON_HOST=127.0.0.1
export MCRCON_PORT=25575
export MCRCON_PASS='uzun-rastgele-parola-en-az-16-karakter'
mcrcon "say Sunucu 5 dakika icinde yeniden baslatilacak."
sleep 120
mcrcon "say Sunucu 3 dakika icinde yeniden baslatilacak."
sleep 120
mcrcon "say Sunucu 1 dakika icinde yeniden baslatilacak. Esyalarinizi sandiga koyun."
sleep 50
mcrcon "say Sunucu 10 saniye icinde kapaniyor."
sleep 10
mcrcon "save-all"
sleep 5
mcrcon "stop"
save-all ile stop arasındaki beş saniyelik boşluk gereksiz görünüyor olabilir ama büyük dünyalarda kaydetme işlemi anlık bitmez. Bu küçük payı bırakmak, yarım yazılmış bölge dosyası riskini ortadan kaldırır. RCON’u henüz açmadıysanız RCON kurulumu ve güvenli kullanım sayfasını izleyin; parolayı betiğin içine gömmek yerine ortam değişkeninde tutmak, betiği yanlış kişiyle paylaştığınızda sizi kurtarır.
-
mcrcon istemcisiÖnerilenİndir
-
Hangar (PaperMC resmî eklenti deposu)İndir
-
Paper 26.2 sunucu jarİndir
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin.
Restart Saatini Oyuncu Yoğunluğuna Göre Seçmek#
Doğru saati seçmek, kullandığınız yöntemden daha önemli. Yanlış saatte kurulmuş kusursuz bir sistem, her akşam otuz kişiyi sunucudan atar.
Yaklaşım şu: panelin grafik ekranından ya da bir istatistik eklentisinden saatlik ortalama oyuncu sayısını çıkarın, bir hafta boyunca izleyin, en düşük noktayı bulun. Türkiye kitlesi olan sunucularda bu nokta neredeyse her zaman sabah 04:00 ile 06:00 arasına düşer. Yurt dışından oyuncu alan bir ağda ise iki farklı dip nokta oluşur, o zaman restartı toplam oyuncu sayısının en düşük olduğu ana koyarsınız.
- Tek dünyalı survival
- Günde 1 restart, 05:00-05:30 arası. Yeniden başlatma 30-60 saniye sürer.
- Eklentili yoğun sunucu
- Günde 1-2 restart. İkincisi öğle saatlerinde, düşük yoğunlukta.
- Modlu sunucu
- Açılış 2-5 dakika sürebilir; duyuru süresini uzun tutun ve gece yapın.
- Proxy’li ağ
- Alt sunucuları sırayla başlatın; hepsini aynı anda kapatırsanız oyuncular proxy’den de düşer.
Oyuncu sayısını düzenli takip etmek için oyuncu istatistikleri takip rehberi işinizi görür. Bir de şunu ekleyelim: restart saatini duyurun. MOTD’sine veya Discord kanalına "her gün 05:30’da bakım" yazan sunucularda kimse şaşırmıyor, kimse "sunucu çöktü mü" diye sormuyor. Duyurulmamış bir bakım, oyuncu için çökmeden farksızdır.
Kurulumdan Sonra Doğrulama#
Kurduğunuz mekanizmayı bir kez elle test etmeden güvenmeyin. Test için gece beklemeyin; zamanlamayı geçici olarak birkaç dakika sonrasına alın ve şu üç şeyi izleyin:
- Oyun içinde sayaç mesajları göründü mü, süreleri doğru mu?
- Sunucu kapandıktan sonra kaç saniyede geri geldi? 60 saniyeyi aşıyorsa açılış logunu inceleyin.
- Açılışta
logs/latest.logdosyasında yeni bir hata satırı var mı?
journalctl -u minecraft.service --since "10 min ago"
grep -E '/(ERROR|FATAL)\]' logs/latest.log
tail -n 40 logs/latest.log
Paper varsayılan olarak yalnızca logs/latest.log ve logs/YYYY-AA-GG-N.log.gz arşivlerini yazar; ayrı bir debug.log üretmez (o davranış Forge ve NeoForge tarafındadır). Log satırlarını nasıl okuyacağınız log okuma rehberinde anlatılıyor. Restart sırasında yedek de almak istiyorsanız zinciri yedekleme rehberindeki adımlarla birleştirin — sunucu kapalıyken alınan yedek her zaman daha temizdir.
Özetle#
Otomatik restart, biriken varlıkları ve heap parçalanmasını sıfırlayan ucuz bir bakım rutinidir. İşe yarar, ama sızıntının kendisini düzeltmez; günde birden fazla restart gerekiyorsa restart sıklığını artırmak yerine sebebi arayın.
Yöntem seçiminde şu sıra işinizi görür: kendi sunucunuzu yönetiyorsanız systemd servisi ve timer, hızlı bir çözüm istiyorsanız bash döngü betiği, panel kullanıyorsanız zamanlanmış görev, sürece erişiminiz yoksa eklenti (ama mutlaka alt katmanla birlikte). Hangisini seçerseniz seçin kapatma zinciri aynıdır: sayaçlı duyuru, save-all, stop. Saati oyuncu yoğunluğunun en düşük olduğu ana koyun ve kurulumu bir kez elle test edin.
Sunucunuz restart sonrası ilk saatte iyi, akşam saatlerinde kötü çalışıyorsa sorun donanımda olabilir; tek çekirdek hızı yüksek Minecraft sunucu paketleri bu tabloyu belirgin şekilde değiştirir. Kurulum sırasında takılırsanız destek talebi açmanız yeterli.