Linux’ta mcrcon kurulumu ve uzaktan komut gönderme, Minecraft sunucusuna konsola hiç dokunmadan komut yollamanın en pratik yoludur. RCON’u server.properties içinden açar, mcrcon istemcisini kaynaktan derler ve tek satırlık komutlarla save-all, say, stop gibi her şeyi çalıştırırsınız. Asıl kazanç ise otomasyondadır: yedekleme ve yeniden başlatma betikleriniz sunucuyla bu kanaldan konuşur.
Bir bash betiğinden Minecraft sunucusuna komut göndermek ilk bakışta zor görünür. Sunucu bir jar dosyasıdır, konsolu standart girdiden okur ve siz betikten oraya yazamazsınız. tmux ile send-keys hilesi var, systemd socket unit’i var, ama ikisi de dolaylı. RCON ise bu iş için tasarlanmış resmî protokoldür.
Bu rehber Ubuntu 24.04 LTS üzerinde, /opt/minecraft/server dizininde çalışan bir Paper 26.2 sunucusu üzerinden ilerliyor. Debian 12, AlmaLinux ve Rocky Linux için tek fark paket kurulum komutudur. Sunucunuz hazır değilse önce Linux üzerinde Minecraft sunucu kurulumu sayfasını tamamlayın.
RCON Nedir ve Neden mcrcon?#
RCON (Remote Console), Valve’ın oyun sunucuları için geliştirdiği basit bir TCP protokolüdür ve Minecraft sunucusu bunu doğrudan destekler. İstemci porta bağlanır, parolayla kimlik doğrular, komut paketi gönderir ve sunucunun cevabını okur. Hepsi bu.
mcrcon ise bu protokolü konuşan, tek dosyalık ve bağımlılığı olmayan bir C istemcisidir. Tiiffi tarafından geliştirilir, güncel yayını 0.7.2 sürümüdür. Proje uzun süredir yeni sürüm çıkarmıyor — bunun sebebi terk edilmiş olması değil, işini yapıyor olması. Protokol değişmiyor, istemcinin de değişmesine gerek kalmıyor. Linux dünyasında böyle küçük ve olgun araçlar hala en güvenilir olanlar.
| Yöntem | Betikten kullanım | Komut çıktısını görme | Ek kurulum |
|---|---|---|---|
| mcrcon (RCON) | Doğrudan, tek satır | Evet, terminale döner | Derleme gerekir |
| tmux send-keys | Mümkün ama kırılgan | Hayır, journald’a gider | tmux paketi |
| systemd socket / FIFO | Mümkün | Hayır, journald’a gider | Unit dosyası düzenleme |
| Web paneli konsolu | Elle kullanım içindir | Evet | Panel kurulumu |
server.properties İçinde RCON’u Açma#
Önce sunucuyu durdurun. RCON ayarları çalışırken okunmaz; dosyayı açık sunucuda değiştirirseniz sunucu kapanırken üzerine kendi kopyasını yazar ve emeğiniz boşa gider.
sudo systemctl stop minecraft
sudo -u minecraft nano /opt/minecraft/server/server.properties
Dosyada şu üç satırı bulun (yoksa ekleyin) ve düzenleyin:
enable-rcon=true
rcon.port=25575
rcon.password=cok-uzun-rastgele-bir-parola-yazin
broadcast-rcon-to-ops=false
Parolayı elle uydurmayın. Terminalde tek komutla güçlü bir parola üretebilirsiniz:
# 32 karakterlik rastgele parola uret
openssl rand -base64 24
# Alternatif: sistemin rastgeleliginden turet
tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32; echo
rcon.password alanı boş bırakılırsa RCON hiç başlamaz. Bu bir hata değil, Mojang’ın bilinçli koyduğu bir emniyet önlemidir: parolasız açık bir konsol portu, sunucunuzun tamamını isteyene teslim eder. Parolanız en az 16 karakter olsun ve başka hiçbir yerde kullandığınız bir parola olmasın.Sunucuyu tekrar başlatıp RCON’un gerçekten dinlediğini doğrulayın:
sudo systemctl start minecraft
# Loglarda RCON satirini ara
journalctl -u minecraft -n 100 --no-pager | grep -i rcon
# Portun dinlendigini dogrula
sudo ss -tulpn | grep 25575
Log çıktısında “RCON running on 0.0.0.0:25575” benzeri bir satır görmelisiniz. ss çıktısında da java süreci 25575 portunda LISTEN durumunda olmalı. İkisi de yoksa server.properties dosyasına geri dönün; büyük ihtimalle sunucu ayarları geri yazmıştır. server.properties’teki diğer tüm anahtarların ne işe yaradığını server.properties ayarları tam listesi sayfasında bulabilirsiniz.
RCON Portunu Dışarıya Kapatma#
Bu bölüm isteğe bağlı değil. RCON protokolü şifreleme kullanmaz; parola her bağlantıda ağ üzerinden düz metin olarak gider. Portu internete açtığınız anda sunucu konsolunuz, parolayı yakalayan veya kaba kuvvetle deneyen herkese açılmış olur.
En temiz yol, RCON’u yalnızca yerel arayüze bağlamak ve güvenlik duvarında portu hiç açmamaktır:
# UFW durumunu gor
sudo ufw status numbered
# 25575 icin acik bir kural varsa KALDIRIN
sudo ufw delete allow 25575/tcp
# Sadece oyun portu acik olmali
sudo ufw allow 25565/tcp
sudo ufw status
Uzaktan yönetim gerekiyorsa doğru araç SSH tünelidir. Yerel makinenizden şu komutu çalıştırdığınızda 25575 portu şifreli SSH bağlantısı üzerinden sunucuya taşınır:
# Yerel makinenizde calistirin
ssh -L 25575:127.0.0.1:25575 kullanici@sunucu-ip
# Tunel acikken ayri bir terminalde
mcrcon -H 127.0.0.1 -P 25575 -p parola -t
0.0.0.0 üzerinde açık bırakıp güvenlik duvarında da izin verirseniz, sunucu konsolunuz kelimenin tam anlamıyla internete açıktır. Ele geçirilen bir RCON oturumu op vermekten dünyayı silmeye kadar her şeyi yapabilir. Sunucunuz zaten ele geçirildiyse sunucu ele geçirildiyse ne yapmalı sayfasındaki adımları izleyin. UFW kurallarının ayrıntısı UFW ile port açma sayfasında.Belirli bir sabit IP’den erişim şartsa (örneğin ofis IP’niz) tünel yerine kısıtlı bir kural da yazabilirsiniz, ama bu ikinci tercihtir:
sudo ufw allow from 203.0.113.10 to any port 25575 proto tcp
mcrcon’u Kaynaktan Derleme#
mcrcon Ubuntu depolarında yok. Kaynaktan derlemek üç komut ve yaklaşık on saniye sürüyor; ayrıca en güncel sürümü almış oluyorsunuz.
-
Derleme araçlarını kurun#
mcrcon saf C ile yazılmış ve harici bağımlılığı yok; standart derleyici yeterli.
sudo apt update && sudo apt install -y git build-essential -
Depoyu klonlayın ve derleyin#
Derleme çıktısı tek bir
mcrconikili dosyasıdır.cd /tmp git clone https://github.com/Tiiffi/mcrcon.git cd mcrcon make -
Sistem geneline kurun#
make installikiliyi/usr/local/bin/altına ve kılavuz sayfasını yerine koyar.sudo make install which mcrcon mcrcon --version -
Derleme yapmak istemiyorsanız#
Resmî yayın sayfasındaki hazır statik Linux ikilisini indirip
/usr/local/bin/altına kopyalayabilirsiniz. Statik sürüm hiçbir kütüphaneye bağlı olmadığı için her dağıtımda çalışır.
Bağlantılar resmî kaynaklara gider. Üçüncü taraf sitelerden ikili dosya indirmeyin.
İlk Komutu Gönderme#
Kurulum bitti, sıra sınamaya geldi. mcrcon’un kullanımı mcrcon [SEÇENEKLER] [KOMUTLAR] biçimindedir.
# Tek komut gonder
mcrcon -H 127.0.0.1 -P 25575 -p 'parolaniz' "say Merhaba, bu mesaj RCON'dan geldi"
# Birden fazla komutu arka arkaya
mcrcon -H 127.0.0.1 -P 25575 -p 'parolaniz' "list" "time set day" "weather clear"
# Komutlar arasinda 5 saniye bekle
mcrcon -H 127.0.0.1 -P 25575 -p 'parolaniz' -w 5 "say Sunucu 5 saniye sonra kaydediliyor" save-all
# Interaktif terminal modu (canli konsol gibi)
mcrcon -H 127.0.0.1 -P 25575 -p 'parolaniz' -t
En sık kullanacağınız parametreler şunlar:
- -H
- Sunucu adresi. Varsayılan
localhost, aynı makinede çalışıyorsanız yazmanıza gerek yok. - -P
- RCON portu. Varsayılan 25575.
- -p
- RCON parolası. Betikte kullanırken ortam değişkenini tercih edin.
- -t
- Terminal modu. Canlı bir konsol açar, çıkmak için
Qyazın veyaCtrl+Dtuşlayın. - -w
- Komutlar arasında saniye cinsinden bekleme. Kapanış zincirlerinde çok işe yarar.
- -s
- Sessiz mod. Sunucunun cevabını bastırır, cron çıktısını temiz tutar.
- -c
- Renk kodlarını kaldırır. Log dosyasına yazarken okunaklılık sağlar.
-t) sunucunun canlı log akışını göstermez, yalnızca yazdığınız komutların cevabını verir. Yani list yazarsanız oyuncu listesini görürsünüz ama oyuncuların sohbetini görmezsiniz. Canlı log için ayrı bir pencerede journalctl -u minecraft -f çalıştırın.Parolayı Betikten Gizleme#
Komut satırına -p parola yazdığınızda parola ps aux çıktısında ve kabuk geçmişinde görünür. Makinede başka kullanıcılar varsa bu doğrudan bir sızıntıdır. mcrcon ortam değişkenlerini okuduğu için çözüm kolay.
# Izni kisitli bir ayar dosyasi olusturun
sudo -u minecraft nano /opt/minecraft/scripts/rcon.env
# /opt/minecraft/scripts/rcon.env
export MCRCON_HOST=127.0.0.1
export MCRCON_PORT=25575
export MCRCON_PASS='server.properties icindeki parolanin aynisi'
# Dosyayi sadece minecraft kullanicisi okuyabilsin
sudo chown minecraft:minecraft /opt/minecraft/scripts/rcon.env
sudo chmod 600 /opt/minecraft/scripts/rcon.env
# Kullanimi: betigin basinda source edin
source /opt/minecraft/scripts/rcon.env
mcrcon "say Parola artik komut satirinda gorunmuyor"
Bu yöntemle mcrcon çağrılarınız kısalır ve parola tek bir yerde durur. Parolayı değiştirdiğinizde hem server.properties hem bu dosya güncellenmeli; ikisi tutmazsa bağlantı sessizce başarısız olur. Destek taleplerinde gördüğümüz kadarıyla “betik dün çalışıyordu bugün çalışmıyor” vakalarının çoğu da bu.
Yedekleme ve Yeniden Başlatma Betiklerine Entegre Etme#
mcrcon’un asıl değeri burada ortaya çıkıyor. Otomatik yedekleme betiğinizin dünyayı arşivlemeden önce sunucuya save-off ve save-all göndermesi gerekir; yoksa yarım yazılmış bölge dosyalarını yedeklersiniz. Aşağıdaki betik bu işi yapıyor.
#!/bin/bash
# /opt/minecraft/scripts/yedek-rcon.sh
set -uo pipefail
source /opt/minecraft/scripts/rcon.env
SUNUCU_DIZIN="/opt/minecraft/server"
YEDEK_DIZIN="/opt/minecraft/backups"
DOSYA="$YEDEK_DIZIN/dunya-$(date +%Y-%m-%d_%H%M).tar.gz"
# save-on garantisi: betik nasil biterse bitsin calissin
geri_ac() { mcrcon -s save-on; }
trap geri_ac EXIT
mcrcon -s -w 2 "say Yedek aliniyor, kisa bir takilma olabilir" save-off save-all
sleep 5
nice -n 19 ionice -c3 tar -czf "$DOSYA" \
-C "$SUNUCU_DIZIN" world world_nether world_the_end server.properties plugins config
geri_ac
trap - EXIT
mcrcon -s "say Yedek tamamlandi"
echo "Yedek hazir: $DOSYA"
Yeniden başlatma betiği de aynı mantıkla çalışır, tek fark oyuncuları kademeli uyarmasıdır:
#!/bin/bash
# /opt/minecraft/scripts/restart.sh
source /opt/minecraft/scripts/rcon.env
mcrcon -s "say Sunucu 5 dakika icinde yeniden baslatilacak"
sleep 240
mcrcon -s "say Sunucu 1 dakika icinde yeniden baslatilacak"
sleep 50
mcrcon -s "say Sunucu 10 saniye icinde kapaniyor"
sleep 10
# Once kaydet, sonra kapat
mcrcon -s -w 3 save-all stop
# Java surecinin gercekten bitmesini bekle
while pgrep -u minecraft -f 'paper.*jar' >/dev/null; do sleep 2; done
sudo systemctl start minecraft
Bu betikleri chmod +x ile çalıştırılabilir yapın ve crontab’a ekleyin. Zamanlama sözdizimi ve saklama planı için cron ile otomatik yedekleme sayfasına, yeniden başlatma stratejileri için otomatik yeniden başlatma kurulumu sayfasına bakın.
sudo chmod +x /opt/minecraft/scripts/*.sh
sudo -u minecraft crontab -e
# Eklenecek satirlar:
# 0 * * * * /opt/minecraft/scripts/yedek-rcon.sh
# 0 5 * * * /opt/minecraft/scripts/restart.sh
systemctl restart minecraft ile de yapabilirsiniz. Ama sadece systemd’ye bırakırsanız oyuncular uyarı almadan düşer. Doğru yaklaşım ikisini birleştirmektir: uyarıları ve save-all komutunu mcrcon gönderir, süreç yönetimini systemd yapar.Sık Karşılaşılan Sorunlar#
| Belirti | Sebep | Çözüm |
|---|---|---|
Connection failed | RCON dinlemiyor veya port yanlış | ss -tulpn | grep 25575 ile kontrol edin |
Authentication failed | Parola uyuşmuyor | server.properties ile rcon.env aynı olmalı |
| Loglarda RCON satırı yok | enable-rcon false veya parola boş | Ayarı düzeltip sunucuyu yeniden başlatın |
| Ayar dosyası geri yazılıyor | Sunucu açıkken düzenlendi | Önce systemctl stop minecraft deyin |
mcrcon: command not found | Kurulum /usr/local/bin’e gitmemiş | sudo make install çalıştırın |
| Betik çalışıyor ama komut gitmiyor | cron’un PATH’i dar | Betikte tam yol kullanın: /usr/local/bin/mcrcon |
| Sohbet OP’lere komut spam’i yapıyor | broadcast-rcon-to-ops=true | Değeri false yapın |
Hata mesajı almadan sessizce başarısız olan durumlarda -s bayrağını geçici olarak kaldırın; mcrcon o zaman sunucunun cevabını ekrana basar ve sorunun nerede olduğu genelde hemen anlaşılır. Konsol komutlarının tam listesi için sunucu konsol komutları sayfası elinizin altında dursun.
Donanım ve Performans Notu#
RCON’un kendisi performansa dokunmaz; ağdan gelen tek bir TCP bağlantısı ve birkaç bayt veri söz konusu. Ama RCON ile tetiklediğiniz işler dokunur. save-all komutu bellekteki tüm chunk’ları diske yazar ve büyük bir dünyada bu, saniyeler süren yoğun bir disk yazma işidir. Aynı anda tar da okuma yapıyorsa disk kuyruğu tıkanır.
Bu yüzden NVMe SSD burada belirleyici. SATA SSD’de save-all anında görünür bir takılma olur, HDD’de sunucu resmen durur. Disk alanı olarak dünyanın kendisine en az 50 GB, modlu veya büyük haritalı sunucularda 100 GB ve üzeri planlayın.
İşlemci tarafında Minecraft’ın ana tick döngüsü tek çekirdekte çalıştığı için çekirdek sayısı değil saat hızı belirleyicidir; AMD Ryzen 9 7900X veya 7950X sınıfı işlemciler doğru tercihtir, alt sınır Ryzen 9 3900X’tir. RAM alt sınırınız 8 GB olsun; 10-30 oyunculu eklentili bir Paper sunucusunda 12 GB rahat eder. Root erişimli hazır bir makine arıyorsanız VDS paketleri bu sayfadaki tüm adımları uygulamanıza izin verir. Yedekleme ve komut otomasyonunu kurarken takılırsanız destek talebi açabilirsiniz.
Özetle#
Linux’ta mcrcon kurulumu iki aşamalıdır. Önce server.properties içinde enable-rcon=true, rcon.port=25575 ve güçlü bir rcon.password tanımlayıp sunucuyu yeniden başlatırsınız — bu ayarlar canlı okunmaz, düzenlemeyi sunucu kapalıyken yapın. Sonra git clone, make, sudo make install üçlüsüyle istemciyi derlersiniz.
Güvenlik tarafında tek kural var: RCON portunu dışarı açmayın. Protokol şifresizdir, parola düz metin gider. Yalnızca 127.0.0.1 üzerinden kullanın, uzaktan erişim gerekiyorsa SSH tüneli kurun. Parolayı komut satırına yazmak yerine izni 600 olan bir rcon.env dosyasında tutun.
Asıl kazanç otomasyonda: yedek betiğinize save-off + save-all + save-on zincirini, yeniden başlatma betiğinize kademeli say uyarılarını ve stop komutunu ekleyin. Bir sonraki adım için cron ile otomatik yedekleme sayfasındaki tam betiği kullanabilirsiniz.