Oyun Sunucusu Otomatik Başlatma: systemd ve Watchdog
Oyun sunucunuzu systemd ile otomatik başlatma, watchdog script, restart policy ve tmux/screen kullanımı rehberi.
İçindekiler
Giriş
Oyun sunucuları 7/24 çalışması gereken servislerdir. Sunucu çökmesi, sistem yeniden başlatması veya beklenmeyen hatalar durumunda sunucunun otomatik olarak yeniden başlaması kritik öneme sahiptir. Bu rehberde systemd service yapılandırması, watchdog scriptleri, tmux/screen kullanımı ve restart policy ayarlarını detaylı olarak anlatacağız.
systemd Service Oluşturma
Temel Service Dosyası
sudo nano /etc/systemd/system/gameserver.service
[Unit]
Description=Game Dedicated Server
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/gameserver
ExecStartPre=/home/steam/steamcmd/steamcmd.sh +force_install_dir /home/steam/gameserver +login anonymous +app_update APP_ID +quit
ExecStart=/home/steam/gameserver/start.sh
ExecStop=/bin/kill -SIGINT $MAINPID
Restart=on-failure
RestartSec=30
StartLimitIntervalSec=300
StartLimitBurst=5
TimeoutStartSec=180
TimeoutStopSec=60
StandardOutput=journal
StandardError=journal
SyslogIdentifier=gameserver
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
Service Yönetimi
# Service'i etkinleştir (boot'ta otomatik başlat)
sudo systemctl daemon-reload
sudo systemctl enable gameserver
# Service yönetimi
sudo systemctl start gameserver
sudo systemctl stop gameserver
sudo systemctl restart gameserver
sudo systemctl status gameserver
# Logları görüntüle
sudo journalctl -u gameserver -f
sudo journalctl -u gameserver --since "1 hour ago"
Restart Policy Ayarları
Restart Seçenekleri
| Seçenek | Açıklama |
|---|---|
| no | Yeniden başlatma |
| on-success | Sadece başarılı çıkışta |
| on-failure | Hata durumunda (exit code != 0) |
| on-abnormal | Signal veya timeout durumunda |
| on-watchdog | Watchdog timeout durumunda |
| on-abort | Signal ile sonlandırıldığında |
| always | Her durumda yeniden başlat |
Önerilen Yapılandırma
[Service]
Restart=always
RestartSec=15
StartLimitIntervalSec=600
StartLimitBurst=10
Bu yapılandırma:
- Sunucu her durumda yeniden başlar
- Yeniden başlatma arasında 15 saniye bekler
- 600 saniye içinde en fazla 10 kez yeniden başlatır
- Limit aşılırsa service failed durumuna geçer
Başarısız Service'i Sıfırlama
# Failed durumunu sıfırla
sudo systemctl reset-failed gameserver
# Tekrar başlat
sudo systemctl start gameserver
Watchdog Script
Basit Watchdog
nano ~/watchdog.sh
#!/bin/bash
SERVICE="gameserver"
LOG="/home/steam/watchdog.log"
while true; do
if ! systemctl is-active --quiet $SERVICE; then
echo "$(date): $SERVICE çalışmıyor, yeniden başlatılıyor..." >> $LOG
sudo systemctl restart $SERVICE
sleep 30
fi
sleep 60
done
chmod +x ~/watchdog.sh
Gelişmiş Watchdog (Port Kontrolü)
nano ~/watchdog_advanced.sh
#!/bin/bash
SERVICE="gameserver"
PORT=27015
LOG="/home/steam/watchdog.log"
MAX_RETRIES=3
RETRY_COUNT=0
check_port() {
ss -tuln | grep -q ":$PORT "
return $?
}
check_process() {
systemctl is-active --quiet $SERVICE
return $?
}
while true; do
if ! check_process; then
echo "$(date): Process çalışmıyor, yeniden başlatılıyor..." >> $LOG
sudo systemctl restart $SERVICE
RETRY_COUNT=$((RETRY_COUNT + 1))
sleep 60
elif ! check_port; then
echo "$(date): Port $PORT yanıt vermiyor, kontrol ediliyor..." >> $LOG
RETRY_COUNT=$((RETRY_COUNT + 1))
if [ $RETRY_COUNT -ge $MAX_RETRIES ]; then
echo "$(date): $MAX_RETRIES deneme başarısız, sunucu yeniden başlatılıyor..." >> $LOG
sudo systemctl restart $SERVICE
RETRY_COUNT=0
fi
sleep 30
else
RETRY_COUNT=0
fi
sleep 60
done
chmod +x ~/watchdog_advanced.sh
Watchdog'u systemd ile Çalıştırma
sudo nano /etc/systemd/system/gameserver-watchdog.service
[Unit]
Description=Game Server Watchdog
After=gameserver.service
Requires=gameserver.service
[Service]
Type=simple
User=steam
ExecStart=/home/steam/watchdog_advanced.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable gameserver-watchdog
sudo systemctl start gameserver-watchdog
tmux ile Sunucu Yönetimi
tmux Kurulumu
sudo apt install tmux -y
tmux ile Sunucu Başlatma
nano ~/start_tmux.sh
#!/bin/bash
SESSION="gameserver"
# Mevcut session varsa kapat
tmux kill-session -t $SESSION 2>/dev/null
# Yeni session oluştur ve sunucuyu başlat
tmux new-session -d -s $SESSION
tmux send-keys -t $SESSION "cd ~/gameserver && ./start.sh" C-m
echo "Sunucu tmux session '$SESSION' içinde başlatıldı."
echo "Bağlanmak için: tmux attach -t $SESSION"
chmod +x ~/start_tmux.sh
tmux Temel Komutları
# Session'a bağlan
tmux attach -t gameserver
# Session'dan ayrıl (sunucu çalışmaya devam eder)
# Ctrl+B, ardından D
# Session listesi
tmux list-sessions
# Session'ı kapat
tmux kill-session -t gameserver
screen ile Sunucu Yönetimi
screen Kurulumu
sudo apt install screen -y
screen ile Sunucu Başlatma
nano ~/start_screen.sh
#!/bin/bash
SCREEN_NAME="gameserver"
# Mevcut screen varsa kapat
screen -S $SCREEN_NAME -X quit 2>/dev/null
# Yeni screen oluştur ve sunucuyu başlat
screen -dmS $SCREEN_NAME bash -c "cd ~/gameserver && ./start.sh"
echo "Sunucu screen '$SCREEN_NAME' içinde başlatıldı."
echo "Bağlanmak için: screen -r $SCREEN_NAME"
chmod +x ~/start_screen.sh
screen Temel Komutları
# Screen'e bağlan
screen -r gameserver
# Screen'den ayrıl
# Ctrl+A, ardından D
# Screen listesi
screen -ls
# Screen'i kapat
screen -S gameserver -X quit
Otomatik Güncelleme ve Yeniden Başlatma
nano ~/auto_update_restart.sh
#!/bin/bash
SERVICE="gameserver"
LOG="/home/steam/update.log"
echo "$(date): Güncelleme başlatılıyor..." >> $LOG
# Sunucuyu durdur
sudo systemctl stop $SERVICE
sleep 10
# Güncelleme
~/steamcmd/steamcmd.sh +force_install_dir ~/gameserver +login anonymous +app_update APP_ID +quit >> $LOG 2>&1
# Sunucuyu başlat
sudo systemctl start $SERVICE
echo "$(date): Güncelleme tamamlandı." >> $LOG
chmod +x ~/auto_update_restart.sh
crontab -e
0 4 * * * /home/steam/auto_update_restart.sh
Sonuç
systemd service yapılandırması, watchdog scriptleri ve tmux/screen kullanımı ile oyun sunucunuzun 7/24 kesintisiz çalışmasını sağlayabilirsiniz. Doğru restart policy ayarları ve otomatik güncelleme mekanizmaları ile sunucu yönetimini otomatikleştirin. REXE VDS'in güvenilir altyapısı ile sunucunuz her zaman erişilebilir olur.
İlgili Makaleler
FiveM Sunucusu Kurulumu: VDS'de Adım Adım Rehber
REXE VDS üzerinde FiveM sunucusu kurulumu, txAdmin yapılandırması, port ayarları ve performans optimizasyonu. GTA V roleplay sunucunuzu dakikalar içinde kurun.
Minecraft Sunucusu Kurulumu: Paper ile Adım Adım Rehber
REXE VDS üzerinde Paper/Spigot Minecraft sunucusu kurulumu, Java ayarları, plugin yönetimi ve performans optimizasyonu. Kendi Minecraft sunucunuzu kurun.
CS2 Sunucusu Kurulumu: SteamCMD ile Adım Adım Rehber
REXE VDS üzerinde Counter-Strike 2 dedicated sunucu kurulumu, SteamCMD, GSLT token ve sunucu yapılandırması. CS2 sunucunuzu hızlıca kurun.