Ekran Kartlı Sunucu Satışları Başladı. İncele
Linux ve Ubuntu’da Sunucu Kurulumu

systemd Servisi ile Minecraft Sunucusunu Otomatik Başlatma

Sunucu yeniden başlatıldığında Minecraft’ın kendiliğinden açılması için systemd unit dosyası yazma, log takibi ve çökme sonrası yeniden başlatma.

  • 12 dk okuma
  • Güncelleme:
  • Yayın:
  • Batihost Teknik Ekibi

Kısaca Özet

  • systemd servisi ile Minecraft sunucunuz makine yeniden başladığında kendiliğinden açılır; SSH oturumunu kapatmanız sunucuyu düşürmez.
  • Unit dosyası /etc/systemd/system/minecraft.service yolunda oluşturulur, systemctl enable --now minecraft ile devreye alınır.
  • Konsola komut göndermek için ListenFIFO tabanlı bir socket unit’i veya tmux hibrit yöntemi kullanılır; screen ve tmux kullanımı sayfasında ayrıntısı var.
  • Log takibi journalctl -u minecraft -f, çökme sonrası kurtarma Restart=on-failure + RestartSec=15 ile yapılır.

systemd servisi ile Minecraft sunucusunu otomatik başlatmak, Linux üzerinde çalışan bir sunucuyu 7/24 ayakta tutmanın en sağlam yoludur. /etc/systemd/system/minecraft.service adında bir unit dosyası yazar, systemctl enable --now minecraft komutuyla devreye alırsınız; bundan sonra makine yeniden başlasa da, SSH oturumunuz kopsa da, sunucu çökse de Minecraft kendiliğinden ayağa kalkar.

screen veya tmux ile başlatılan bir sunucu yalnızca o oturum yaşadığı sürece çalışır. Sunucu makinesi çekirdek güncellemesi için yeniden başlatıldığında oyuncular kapıda kalır ve birinin SSH ile girip sunucuyu elle açması gerekir. systemd bu işi devralır: süreci izler, çıkış kodunu okur, gerekirse belirlediğiniz gecikmeyle yeniden başlatır ve tüm konsol çıktısını journald’a kaydeder.

Bu rehberde Ubuntu 24.04 LTS üzerinde çalışan bir Paper sunucusu örnek alınmıştır; aynı adımlar Debian 12, AlmaLinux ve Rocky Linux üzerinde de birebir geçerlidir. Vanilla, Purpur, Forge veya Fabric kullanıyorsanız yalnızca ExecStart satırındaki jar adı ve bayraklar değişir.

systemd Servisi Ne Kazandırır?#

Unit dosyası yazmak beş dakikalık bir iş ama getirisi büyük. En somut faydalar şunlar:

Senaryoscreen / tmuxsystemd servisi
Makine yeniden başladıSunucu kapalı kalırOtomatik açılır
Java süreci çöktüElle müdahale şart15 saniyede yeniden başlar
SSH oturumu koptuEtkilenmezEtkilenmez
Log kaydıEkran tamponu, uçucujournald, kalıcı ve filtrelenebilir
Canlı konsola yazmakDoğrudanSocket veya tmux gerekir
Kaynak sınırlama (CPU/RAM)Yokcgroup ile mümkün
screen/tmux ile systemd servisinin karşılaştırması
Bilgisystemd ile tmux birbirinin alternatifi değil, tamamlayıcısıdır. Aşağıda ikisini birleştiren hibrit yöntemi de anlatıyoruz; böylece hem otomatik başlatma hem canlı konsol elinizde olur.

Ön Hazırlık: Kullanıcı, Dizin ve Java#

Servisi yazmadan önce sunucunun root olmayan bir kullanıcı altında, sabit bir dizinde çalışıyor olması gerekir. Minecraft’ı root olarak çalıştırmayın; bir eklenti açığı doğrudan makinenin tamamını ele geçirmeye dönüşür.

  1. Ayrı bir sistem kullanıcısı açın#

    Kabuk girişi olmayan, yalnızca sunucuyu çalıştıracak bir hesap yeterlidir.

    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
  2. Java 25’i kurun ve yolunu öğrenin#

    Minecraft 26.1 ve sonrası Java 25 ister. Kurulum ayrıntıları için Linux’a Java 25 kurulumu sayfasına bakın.

    java -version
    which java
    # çıktı genelde: /usr/bin/java
  3. Sunucu jar’ını yerleştirip bir kez elle çalıştırın#

    Servis yazmadan önce sunucunun elle açıldığından, eula.txt dosyasının onaylandığından ve dünyanın oluştuğundan emin olun. Paper kurulumunun tamamı Ubuntu’da Paper sunucusu kurulumu sayfasında.

İndirmeniz gerekenler
  • Eclipse Temurin JDK 25LTS Linux x64.tar.gz / apt deposuÜcretsiz
    İndir
  • Paper 26.2 sunucu jarÖnerilen Her platform.jar
    İndir

Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden jar indirmeyin.

minecraft.service Unit Dosyasını Yazma#

Unit dosyasını /etc/systemd/system/ altına açın. /lib/systemd/system/ dizinine dokunmayın; orası paket yöneticisinin alanıdır ve güncellemede üzerine yazılır.

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

Aşağıdaki içerik 12 GB’lık bir pakette çalışan Paper sunucusu içindir. Bayraklar Aikar’s Flags setidir ve 26.x sunucularında hâlâ geçerlidir.

[Unit]
Description=Minecraft Paper Sunucusu
Documentation=https://docs.papermc.io
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server

ExecStart=/usr/bin/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

Restart=on-failure
RestartSec=15s
TimeoutStopSec=120
KillSignal=SIGTERM
SendSIGKILL=yes

StandardOutput=journal
StandardError=journal
SyslogIdentifier=minecraft

[Install]
WantedBy=multi-user.target
DikkatExecStart satırındaki jar adı dizindeki dosyayla birebir aynı olmalıdır. Paper’ın indirdiği dosya paper-26.2-112.jar gibi build numarası taşır; ya bu adı yazın ya da ln -s paper-26.2-112.jar paper.jar ile sabit bir sembolik bağ oluşturun. Aksi halde “Unable to access jarfile” hatası alırsınız.

Heap boyutunu paketinize göre ayarlayın#

Xms ve Xmx daima eşit verilir; JVM’in heap büyütüp küçültmesi tick içinde duraklama üretir. İşletim sistemine ve JVM’in heap dışı kullanımına 2 GB pay bırakın.

Sunucu paketiHeap ayarıUygun senaryo
8 GB-Xms6G -Xmx6G2-10 oyuncu, vanilla veya hafif eklentili
12 GB-Xms10G -Xmx10G10-30 oyuncu, eklentili Paper
16 GB-Xms14G -Xmx14G30-60 oyuncu, minigame veya modpack
32 GB-Xms28G -Xmx28G60+ oyuncu, proxy’li sunucu ağı
Pakete göre önerilen Java heap değerleri

16 GB üzeri heap kullanıyorsanız G1 yerine ZGC’yi değerlendirebilirsiniz; o durumda Aikar bayraklarını tamamen çıkarıp yalnızca -XX:+UseZGC yazarsınız. Java 25’te -XX:+ZGenerational bayrağı geçersizdir, eklemeyin. Bayrak seçiminin ayrıntısı RAM ayarları ve JVM flag’leri sayfasında.

Unit Dosyasındaki Satırlar Ne Yapıyor?#

Kopyalayıp geçmeden önce her direktifin ne işe yaradığını bilmek, ileride hata ayıklarken zaman kazandırır.

After / Wants=network-online.target
Ağ tamamen hazır olmadan Java başlamasın. Bu olmadan sunucu, IP henüz atanmadığı için porta bağlanamayabilir.
Type=simple
ExecStart’taki süreç ana süreçtir, arka plana düşmez. Minecraft jar’ı için doğru tip budur.
User / Group=minecraft
Süreci ayrıcalıksız hesapla çalıştırır. Dosya sahipliği de bu hesapta olmalıdır.
WorkingDirectory
Sunucu world, plugins, logs klasörlerini bu dizinde arar. Yanlışsa sunucu yeni ve boş bir dünya oluşturur.
Restart=on-failure
Sıfır dışı çıkış kodunda yeniden başlatır. Konsoldan stop yazıldığında (çıkış kodu 0) yeniden başlatmaz.
RestartSec=15s
Yeniden başlatmadan önce bekleme süresi. Çok kısa vermeyin; bozuk yapılandırmada saniyede onlarca kez döngüye girer.
TimeoutStopSec=120
Kapanış için tanınan süre. Büyük dünyalarda kayıt işlemi uzun sürer, varsayılan 90 saniye yetmeyebilir.
SyslogIdentifier
journald kayıtlarında satır başına yazılacak etiket. Filtrelemeyi kolaylaştırır.

Restart politikaları arasındaki fark#

DeğerDavranışMinecraft için
noHiç yeniden başlatmazTest kurulumları
on-failureSıfır dışı çıkış ve sinyalle ölümde başlatırÖnerilen
on-abnormalYalnızca sinyal, zaman aşımı ve watchdog durumundaOOM Killer senaryoları
alwaysHer koşulda, stop komutundan sonra bileKonsoldan durduramazsınız
systemd Restart direktifi değerleri
İpucuRestart=always kullanacaksanız StartLimitIntervalSec=300 ve StartLimitBurst=5 satırlarını [Unit] bölümüne ekleyin. Böylece 5 dakika içinde 5 başarısız denemeden sonra systemd durur ve bozuk bir kurulumu sonsuz döngüde çalıştırmaz.

Servisi Etkinleştirme ve Günlük Kullanım#

Dosyayı kaydettikten sonra systemd’ye yeni unit’i okuması söylenmelidir. Her düzenlemeden sonra daemon-reload zorunludur.

sudo systemctl daemon-reload
sudo systemctl enable --now minecraft
systemctl status minecraft

enable --now hem açılışta otomatik başlatmayı etkinleştirir hem de servisi hemen çalıştırır. Günlük kullanımda ihtiyacınız olan komutlar:

# Durdur / başlat / yeniden başlat
sudo systemctl stop minecraft
sudo systemctl start minecraft
sudo systemctl restart minecraft

# Açılışta otomatik başlatmayı kapat
sudo systemctl disable minecraft

# Canlı log akışı
journalctl -u minecraft -f

# Son 200 satır, sayfalama olmadan
journalctl -u minecraft -n 200 --no-pager

# Bugünkü hatalar
journalctl -u minecraft --since today -p err

Bu komutları sık kullanacaksınız; systemd ve journalctl sözdizimini tazelemek isterseniz Linux temel komutları sayfası elinizin altında dursun.

Sunucu Konsoluna Komut Gönderme#

systemd servisi olarak çalışan bir sunucunun en çok şikâyet edilen yanı, konsola doğrudan yazamamanızdır. Üç çözüm var; ikisini burada, üçüncüsünü aşağıda anlatıyoruz.

Yöntem 1: Socket unit ile adlandırılmış boru#

systemd, servise standart girdi olarak bir FIFO bağlayabilir. Önce socket unit’ini oluşturun:

sudo nano /etc/systemd/system/minecraft.socket
[Unit]
BindsTo=minecraft.service

[Socket]
ListenFIFO=/run/minecraft/stdin
Service=minecraft.service
SocketMode=0660
SocketUser=minecraft
SocketGroup=minecraft
RemoveOnStop=true

Ardından minecraft.service dosyasının [Service] bölümüne şu üç satırı ekleyin ve varsa StandardInput ile çakışan bir satırı kaldırın:

Sockets=minecraft.socket
StandardInput=socket
ExecStop=/bin/sh -c 'echo stop > /run/minecraft/stdin'
sudo systemctl daemon-reload
sudo systemctl restart minecraft

# Artık konsola komut gönderebilirsiniz
echo "say Sunucu 5 dakika sonra yeniden başlayacak" | sudo tee /run/minecraft/stdin
echo "save-all" | sudo tee /run/minecraft/stdin

Bu yöntemin avantajı hiçbir ek yazılım gerektirmemesidir. Dezavantajı çıktının boruya değil journald’a gitmesi; yani komutu yazıp cevabı journalctl -u minecraft -f penceresinden okursunuz.

Yöntem 2: tmux hibrit servisi#

Canlı, çift yönlü bir konsol istiyorsanız servisi tmux oturumu içinde başlatın. Bu, çoğu sunucu yöneticisinin tercih ettiği kurulumdur.

[Service]
Type=forking
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/server
ExecStart=/usr/bin/tmux new-session -d -s mc '/usr/bin/java -Xms10G -Xmx10G -XX:+UseG1GC -jar paper.jar --nogui'
ExecStop=/usr/bin/tmux send-keys -t mc "stop" Enter
ExecStop=/bin/sh -c 'while pgrep -u minecraft -f paper.jar > /dev/null; do sleep 2; done'
TimeoutStopSec=120
RemainAfterExit=no
# Canlı konsola bağlan
sudo -u minecraft tmux attach -t mc
# Çıkmak için (sunucuyu kapatmadan): Ctrl+B ardından D
Dikkattmux oturumundan çıkarken Ctrl+C tuşlamayın; bu Java sürecini öldürür ve dünya kaydedilmeden kapanır. Doğru çıkış Ctrl+B sonra D tuş dizisidir. tmux kullanımının ayrıntısı için screen ve tmux ile arka planda çalıştırma sayfasına bakın.

Yöntem 3: RCON#

server.properties içinde enable-rcon=true, rcon.port=25575 ve güçlü bir rcon.password tanımlayıp uzaktan komut gönderebilirsiniz. RCON portunu güvenlik duvarında dışarıya kesinlikle açmayın; yalnızca 127.0.0.1 üzerinden kullanın. Konsol komutlarının listesi sunucu konsol komutları sayfasında.

Güvenli Kapatma ve Veri Bütünlüğü#

Minecraft sunucusu SIGTERM sinyalini yakalayan bir kapanış kancası çalıştırır: oyuncuları düşürür, chunk’ları kaydeder ve eklentileri düzgün biçimde devre dışı bırakır. Yani systemctl stop dediğinizde veri kaybı yaşanmaz — bir şartla: systemd’nin sabrı yetmelidir.

Varsayılan TimeoutStopSec 90 saniyedir. 20 GB’lık bir dünyada, NVMe diskte bile kayıt işlemi bunu aşabilir. Süre dolunca systemd SIGKILL gönderir; kayıt yarıda kalır ve o bölgedeki chunk’lar bozulabilir. Bu yüzden değeri 120 saniyeye çekin, çok büyük dünyalarda 300 saniyeye kadar çıkın.

UyarıSunucuyu kill -9 veya systemctl kill -s SIGKILL ile asla kapatmayın. Bu, kayıt işlemini ortasından keser ve bölge dosyalarını (region/*.mca) bozar. Düzenli yedek almıyorsanız kayıp kalıcıdır; sunucu yedekleme rehberini mutlaka uygulayın.

Bakım öncesi otomatik uyarı#

Kapatmadan önce oyuncuları uyarmak isterseniz socket yöntemiyle birlikte ExecStop zincirini genişletebilirsiniz:

ExecStop=/bin/sh -c 'echo "say Sunucu 30 saniye icinde bakima giriyor" > /run/minecraft/stdin'
ExecStop=/bin/sleep 30
ExecStop=/bin/sh -c 'echo "save-all" > /run/minecraft/stdin'
ExecStop=/bin/sleep 5
ExecStop=/bin/sh -c 'echo "stop" > /run/minecraft/stdin'

systemd ExecStop satırlarını yazıldıkları sırayla çalıştırır. Toplam sürenin TimeoutStopSec değerini aşmadığından emin olun.

Birden Fazla Sunucu: Şablon Unit#

Aynı makinede survival, skyblock ve minigame sunucularını ayrı ayrı yönetmek için her biri adına unit dosyası açmanız gerekmez. Dosyayı minecraft@.service adıyla kaydedin ve %i değişkenini kullanın.

[Unit]
Description=Minecraft Sunucusu (%i)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft/%i
EnvironmentFile=/opt/minecraft/%i/service.env
ExecStart=/usr/bin/java $JAVA_MEM $JAVA_FLAGS -jar $SERVER_JAR --nogui
Restart=on-failure
RestartSec=15s
TimeoutStopSec=120
SyslogIdentifier=mc-%i

[Install]
WantedBy=multi-user.target

Her sunucunun dizinine bir service.env dosyası koyun:

# /opt/minecraft/survival/service.env
JAVA_MEM=-Xms10G -Xmx10G
JAVA_FLAGS=-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200
SERVER_JAR=paper.jar
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft@survival
sudo systemctl enable --now minecraft@skyblock
systemctl status 'minecraft@*'

Her örneğin server.properties dosyasında farklı bir server-port tanımlamayı ve bu portları UFW ile açmayı unutmayın. Sunucu ağı kuruyorsanız arka uçları dışarıya hiç açmayıp yalnızca proxy portunu yayınlamak daha doğrudur.

Servisi Sıkılaştırma ve Kaynak Sınırlama#

systemd, süreci çekirdek düzeyinde kısıtlayabilir. Aşağıdaki satırlar bir eklenti açığının zarar yüzeyini belirgin biçimde daraltır.

[Service]
NoNewPrivileges=true
PrivateTmp=true
PrivateDevices=true
ProtectSystem=strict
ProtectHome=true
ProtectKernelTunables=true
ProtectControlGroups=true
RestrictSUIDSGID=true
LockPersonality=true
ReadWritePaths=/opt/minecraft/server

# Kaynak sınırları
LimitNOFILE=1048576
OOMPolicy=continue
BilgiProtectSystem=strict tüm dosya sistemini salt okunur yapar; bu yüzden ReadWritePaths ile sunucu dizinini istisna tutmak zorundasınız. Dynmap gibi harici dizine yazan eklentileriniz varsa o yolları da eklemeniz gerekir, aksi halde eklenti “permission denied” verir.

MemoryMax direktifiyle cgroup düzeyinde bellek tavanı koymak cazip görünür ama dikkatli olun: JVM heap dışında metaspace, thread stack ve doğrudan bellek de kullanır. Tavanı -Xmx değerinin en az 2 GB üzerinde tutun, yoksa çekirdek OOM Killer süreci öldürür ve oyuncular ortada kalır.

Log Takibi ve Hata Ayıklama#

journald tüm konsol çıktısını saklar. Sunucu açılmıyorsa bakılacak ilk yer burasıdır.

# Son açılış denemesindeki hatalar
journalctl -u minecraft -b --no-pager | tail -n 80

# Belirli bir kelimeyi ara
journalctl -u minecraft --since "1 hour ago" | grep -i "exception"

# Servisin neden durduğunu gör
systemctl show minecraft -p ExecMainStatus -p Result
Hata / durumAnlamıÇözüm
status=203/EXECExecStart’taki program çalıştırılamadıwhich java ile tam yolu yazın
status=200/CHDIRWorkingDirectory yok veya erişilemiyorDizini ve chown minecraft:minecraft iznini kontrol edin
status=1/FAILURE, hemen çıkıyorGenelde EULA onaylanmamışeula.txt içinde eula=true yapın
UnsupportedClassVersionErrorJava sürümü eskiJava sürüm hatası çözümü
Failed to bind to port25565 zaten kullanımdasudo ss -tulpn | grep 25565 ile süreci bulun
Servis “active” ama oyuncu giremiyorPort güvenlik duvarında kapalısudo ufw allow 25565/tcp
systemd servisinde sık görülen hatalar

Sistem yeniden başlatıldıktan sonra servisin gerçekten kalkıp kalkmadığını test etmeden emin olmayın. Bakım penceresinde sudo reboot deyip iki dakika sonra systemctl is-enabled minecraft ve systemctl is-active minecraft çıktılarına bakın; ikisi de enabled ve active dönmelidir.

Otomatik Yeniden Başlatma Zamanlaması#

Uzun süre çalışan Minecraft sunucularında bellek parçalanması ve eklenti sızıntıları birikir. Günde bir kez planlı yeniden başlatma çoğu sunucuda TPS’i belirgin biçimde toparlar. Bunu cron yerine systemd timer ile yapmak daha temizdir:

# /etc/systemd/system/minecraft-restart.timer
[Unit]
Description=Minecraft sunucusunu her gece 05:00'te yeniden baslat

[Timer]
OnCalendar=*-*-* 05:00:00
Persistent=true

[Install]
WantedBy=timers.target
# /etc/systemd/system/minecraft-restart.service
[Unit]
Description=Minecraft yeniden baslatma islemi

[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl restart minecraft
sudo systemctl daemon-reload
sudo systemctl enable --now minecraft-restart.timer
systemctl list-timers minecraft-restart.timer

Yeniden başlatma saatini oyuncu sayısının en düşük olduğu ana koyun. Aynı zaman diliminde yedek de alıyorsanız iki işi çakıştırmayın; disk I/O’su aynı anda hem kayıt hem kopyalama yapınca kapanma süresi uzar.

Donanım Tarafı: Servis Sağlam, Peki Sunucu?#

systemd sunucunuzu ayakta tutar ama performansı belirlemez. Minecraft’ın ana tick döngüsü tek çekirdekte çalışır; bu yüzden çekirdek sayısı değil 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. Xeon E3/E5 ve düşük frekanslı çok çekirdekli sunucu işlemcileriyle aynı oyuncu sayısında belirgin şekilde daha düşük TPS alırsınız.

Disk tarafında NVMe SSD şarttır; chunk okuma/yazma gecikmesi doğrudan tick süresine yansır. En az 50 GB, modlu veya büyük dünyalı sunucularda 100 GB ve üzeri alan planlayın. RAM alt sınırınız 8 GB olsun; 10-30 oyuncu için 12 GB, modpack için 16 GB rahat çalıştırır. Kendi donanımınızı kurmak yerine hazır bir altyapı istiyorsanız yüksek frekanslı Ryzen VDS paketleri root erişimiyle gelir ve bu rehberdeki adımların tamamını uygulayabilirsiniz. Donanım seçimini derinlemesine karşılaştırmak için doğru donanım nasıl seçilir sayfasına bakın.

Özetle#

systemd servisi, Linux üzerindeki Minecraft sunucusunu manuel bakımdan kurtarır. /etc/systemd/system/minecraft.service dosyasında doğru kullanıcı, doğru çalışma dizini, tam Java yolu ve Restart=on-failure tanımlarsanız sunucunuz yeniden başlatmalarda kendiliğinden ayağa kalkar, çökmelerde 15 saniye içinde döner ve tüm logları journald’da toplanır.

Kritik üç ayar: TimeoutStopSec değerini 120 saniyeye çekerek dünya kaydının yarıda kesilmesini önleyin, her düzenlemeden sonra daemon-reload çalıştırın ve konsol erişimi için socket unit’i ya da tmux hibrit yöntemini kurun. Kurulumun tamamını sıfırdan yapıyorsanız Linux üzerinde Minecraft sunucu kurulumu rehberi bu sayfanın önceki adımlarını kapsıyor.

Sıkça Sorulan Sorular#

systemd servisi mi screen mi kullanmalıyım?

Kalıcı üretim sunucusu için systemd, tek başına en doğru seçimdir: makine yeniden başladığında sunucuyu otomatik açar, çökmede yeniden başlatır ve logları journald’a yazar. screen veya tmux ise anlık müdahale ve canlı konsol için pratiktir. En iyi kurulum ikisini birleştirir: systemd servisi tmux oturumu başlatır, siz de o oturuma bağlanıp komut yazarsınız.

systemd servisi kurunca sunucu konsoluna nasıl komut yazarım?

Üç yol var. Birincisi socket unit ile adlandırılmış boru oluşturup echo "say merhaba" > /run/minecraft/stdin yazmak. İkincisi servisi tmux üzerinden başlatıp tmux attach -t mc ile canlı konsola girmek. Üçüncüsü server.properties içinde RCON’u açıp uzaktan bir RCON istemcisiyle bağlanmak. En esnek olanı tmux hibrit yöntemidir.

Minecraft servisi sürekli yeniden başlıyor, nasıl durdururum?

Önce systemctl stop minecraft ile döngüyü kesin, ardından journalctl -u minecraft -n 100 --no-pager çıktısına bakın. En sık neden EULA onaylanmamış olmasıdır: sunucu açılır açılmaz çıkar. eula.txt içinde eula=true yazdığından, jar adının doğru olduğundan ve Java 25’in kurulu olduğundan emin olun.

systemd servisi sunucuyu kapatırken dünya kaydediliyor mu?

Evet, doğru yapılandırılırsa kaydediliyor. Minecraft sunucusu SIGTERM sinyalini yakalayan bir kapanış kancası (shutdown hook) çalıştırır ve dünyayı diske yazar. Yine de TimeoutStopSec=120 vermeniz şart; büyük dünyalarda varsayılan 90 saniye yetmeyip systemd SIGKILL gönderir ve o anda chunk bozulması yaşanabilir.

Aynı makinede birden fazla Minecraft sunucusunu tek unit dosyasıyla yönetebilir miyim?

Evet, şablon unit kullanın. Dosyayı minecraft@.service adıyla kaydedip içinde %i değişkenini kullanırsanız systemctl start minecraft@survival ve systemctl start minecraft@skyblock komutlarıyla ayrı örnekler çalıştırırsınız. Her örnek kendi dizininde, kendi portunda ve kendi bellek ayarıyla açılır.

Unit dosyasını değiştirdim ama etkisi olmadı, neden?

systemd unit dosyalarını önbelleğe alır. Her düzenlemeden sonra sudo systemctl daemon-reload çalıştırıp ardından sudo systemctl restart minecraft demeniz gerekir. Sadece restart yeterli değildir; daemon-reload yapılmadan systemd eski ExecStart satırını kullanmaya devam eder ve değişiklik görünmez.

Servis “status=203/EXEC” hatası veriyor, çözümü ne?

203/EXEC, systemd’nin ExecStart satırındaki programı çalıştıramadığı anlamına gelir. Genellikle Java yolu yanlıştır. which java ile gerçek yolu bulun ve ExecStart satırına tam yolu (/usr/bin/java) yazın; systemd PATH kullanmaz. İkinci olası neden WorkingDirectory dizininin bulunmaması veya minecraft kullanıcısının okuma izninin olmamasıdır.

systemd servisi Minecraft’ın performansını etkiler mi?

Hayır, systemd yalnızca süreci başlatıp izler; tick döngüsüne müdahale etmez. Ölçülebilir tek fark, konsol çıktısının journald’a yazılmasıdır ve bu ihmal edilebilir düzeydedir. Performansı belirleyen şey işlemcinin saat hızı, JVM bayrakları ve disk gecikmesidir. Sunucu optimizasyonu rehberine bakabilirsiniz.

Linux ve Ubuntu’da Sunucu Kurulumu — Tüm Rehberler#

  1. Linux ve Ubuntu Üzerinde Minecraft Sunucu Kurulumu
  2. Linux’a Java 25 Kurulumu (Ubuntu, Debian, AlmaLinux)
  3. screen ve tmux ile Minecraft Sunucusunu Arka Planda Çalıştırma
  4. systemd Servisi ile Minecraft Sunucusunu Otomatik Başlatma
  5. Ubuntu’da Paper Minecraft Sunucusu Kurulumu
  6. Ubuntu’da Forge Modlu Minecraft Sunucusu Kurulumu
  7. Ubuntu’da Fabric Minecraft Sunucusu Kurulumu
  8. Debian Üzerinde Minecraft Sunucu Kurulumu
  9. AlmaLinux / Rocky Linux Üzerinde Minecraft Sunucu Kurulumu
  10. UFW ile Minecraft Sunucu Portunu Açma
  11. Ubuntu’da Minecraft Bedrock Dedicated Server Kurulumu
  12. Docker ile Minecraft Sunucusu Kurma ve Yönetme

Bu rehber Batihost teknik ekibi tarafından hazırlanmış ve tarihinde güncellenmiştir. Eksik veya hatalı bulduğunuz bir bilgi varsa bize bildirin.

Başa dön