# Linux Adanmış Sunucu Barındırma

- **İngilizce aslı:** https://wiki.facepunch.com/gmod/Linux_Dedicated_Server_Hosting
- **Çeviri tarihi:** 2025-09-08

Bu makale, Linux üzerinde bir Garry's Mod sunucusu barındırma hakkında mümkün olduğunca çok konuyu ele alacaktır.

**Bu makale Debian ve türevleri (Ubuntu, ChromiumOS, Mint...) için yazılmıştır, bu nedenle diğer dağıtımlarda bazı dönüşümler yapmanız gerekebilir**

Dahili birçok araca sahip, birden fazla sunucu için kolay destek sunan vb. daha otomatik bir çözüm istiyorsanız, bunun yerine [https://linuxgsm.com/lgsm/gmodserver/](https://linuxgsm.com/lgsm/gmodserver/) kullanın.

## Gereksinimler

Başlamadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:

- Sunucuyu çalıştıracak bir kullanıcı ('steam' önerilir, ev dizini /home/steam)
- Yüklemek istediğiniz içerik için yeterli disk alanı
- 'steam' kullanıcısı olarak çalışan açık bir komut satırı terminali (`su - steam`) veya steam kullanıcısı olarak oturum açılmış bir SSH oturumu.
- Temel Linux komut satırı kullanımı konusunda deneyim.

## SteamCMD Kurulumu

SteamCMD, Garry's Mod sunucu dosyalarını indirmek ve güncellemek için gereklidir. SteamCMD'nin nasıl kurulacağına dair öneriler için [Valve Geliştirici Wiki](https://developer.valvesoftware.com/wiki/SteamCMD#Linux)'sini takip edin.

### 64-bit Sistemler

Eğer "*/linux32/steamcmd: No such file or directory" hatası alırsanız, bu büyük olasılıkla gerekli 32-bit kütüphanelere sahip olmadığınız içindir. Bunu nasıl düzelteceğiniz hakkında daha fazla bilgi için buraya gidin: [https://developer.valvesoftware.com/wiki/SteamCMD#32-bit_libraries_on_64-bit_Linux_systems](https://developer.valvesoftware.com/wiki/SteamCMD#32-bit_libraries_on_64-bit_Linux_systems)

## Garry's Mod Kurulumu

Aşağıdaki betik, tek bir komutla sizin için Garry's Mod'un en son sürümünü indirecektir.

İlk olarak, `update_gmod.sh` adında bir güncelleme betiği oluşturalım.

```lua
# !/bin/bash

# Bize biraz işten tasarruf ettirecek kullanışlı bir fonksiyon
update_server() {
	# Uygulama kimliğini ve dizini bir değişkene oku

	APP_ID=$1
	DIR=$2

	# Dizini oluştur ( eğer zaten mevcut değilse )
	if [ ! -d "$HOME/$DIR" ]; then
		mkdir -p "$HOME/$DIR"
	fi

	# Eyvah, hala bir dizinimiz yok gibi görünüyor. Bir hata bildir.
	if [ ! -d "$HOME/$DIR" ]; then
		# Neyin yanlış gittiğini açıkla
		echo "HATA! $HOME/$DIR dizini oluşturulamıyor!"

		# 1 durum koduyla çık ( bu bir hata belirtir )
		exit 1
	fi

	# Sağladığımız uygulama kimliği ile SteamCMD'yi çağır ve kurmasını söyle
	steamcmd +force_install_dir "$HOME/$DIR" +login anonymous +app_update $APP_ID validate +quit
}

# Şimdi betik, az önce yukarıda tanımladığımız update_server'ı, uygulamanın kimliği ( 4020 Garry's Mod'dur ) ve sunucunun barındırılmasını istediğimiz dizin adı ile çalıştırır:

update_server 4020 "server_1"

# Yukarıdaki işlemi farklı bir dizin adı kullanarak tekrarlayarak buraya ek sunucular ekleyin.

# 0 durum koduyla çık ( bu TAMAM anlamına gelir )
exit 0
```

Bu dosyayı çalıştırabilmeden önce, ona 'yürütme' hakları vermemiz gerekiyor. Bu, aşağıdaki komutla yapılır:

```lua
chmod +x ./update_gmod.sh
```

Doğru bir şekilde çalıştırabilmek için, dosyayı dos formatından unix formatına dönüştürmemiz gerekiyor:

```lua
dos2unix ./update_gmod.sh
```

Eğer steamcmd'yi depodan kurduysanız, betiğin güncellenmesi gerekir:

```lua
nano update_gmod.sh
```

25. satırın başlangıcını değiştirin:

```lua
./bin/steamcmd.sh -> /usr/games/steamcmd
```

25. satır şimdi şu şekilde görünmelidir:

```lua
/usr/games/steamcmd +force_install_dir "$HOME/$DIR" +login anonymous +app_update $APP_ID validate +quit
```

Kaydetmek için ctrl+O'ya, ardından nano'dan çıkmak için ctrl+X'e basın.

Şimdi, sunucuyu güncelleyelim

```lua
./update_gmod.sh
```

Sunucu şimdi gerekli içeriği indirecektir. Steam, indirme işlemindeki ilerleme yüzdesini size gösterecektir.

Eğer `/home/steam/update_gmod.sh: line 25: ./bin/steamcmd.sh: No such file or directory` gibi bir hata alırsanız, ./update_gmod.sh dosyasını bir düzenleyicide açın ve "# Call SteamCMD with the app ID we provided and tell it to install" altındaki satırı şu şekilde değiştirin:

```lua
steamcmd +login anonymous +force_install_dir "$HOME/$DIR" +app_update $APP_ID validate +quit
```

## İçerik Ekleme

Elbette, Team Fortress 2, Counter-Strike: Source ve diğer desteklenen oyunlardaki şeyleri kullanabilmek istiyoruz. Yukarıdaki betiği kullanarak bu basit bir işlemdir.

Ancak, indirme süresinden tasarruf etmek istediğimiz için, tüm bu içeriği ayrı bir klasöre koyacağız, böylece 5 sunucumuz varsa, bir içerik güncellemesi yayınlandığında içeriği yalnızca bir kez güncellememiz gerekir.

Şimdi yukarıda bahsedilen betiği değiştireceğiz. "`Add any additional servers here`" yazan yere aşağıdaki satırı ekleyin. Buraya Team Fortress 2'yi ekliyoruz.

```lua
update_server 232250 "content/tf2"
```

Şimdi, `update_gmod.sh`'yi çalıştırdığımızda, betik Garry's Mod'u doğrulayacak (ve gerekirse güncelleyecek) (çünkü onu yukarıdaki adımda indirmiştik) ve ardından Team Fortress 2'yi `~/content/tf2` dizinine kuracaktır.

Sunucular için ID listesi için [Valve Geliştirici Topluluğu sayfasına](https://developer.valvesoftware.com/wiki/Dedicated_Servers_List) göz atabilirsiniz. Unutmayın, teorik olarak ID'sini kullanarak herhangi bir oyunu buraya indirebilirsiniz, ancak bu adanmış sunucularla steam hesabınızı kullanarak giriş yapmanız gerekmez.

## Sunucuyu Başlatma

Sunucuyu başlatmak için, her sunucunun kök dizininde bulunan srcds_run adlı dosyayı çalıştırırız. Aşağıdaki komut, sunucuyu gm_flatgrass haritasında 12 oyuncu yuvasıyla başlatır.

```lua
~/server_1/srcds_run -game garrysmod +maxplayers 12 +map gm_flatgrass +sv_setsteamaccount <tokeniniz>
```

Betik (srcds_run), sunucu çökerse onu hayatta tutacaktır, ancak linux'u yeniden başlattığınızda yeniden başlamaz ve terminali kapatırsanız sunucu da kapanır. Bunu bu makalenin ilerleyen kısımlarında düzelteceğiz.

`sv_setsteamaccount` ile ilgili yardım için lütfen [Steam Oyun Sunucusu Hesapları](https://gmod.tr/wiki/Steam_Game_Server_Accounts) sayfasına bakın. Bu zorunludur.

İsteğe bağlı olarak, atölye eklentilerini adanmış sunucunuza otomatik olarak yüklemek için komut satırınıza `+host_workshop_collection <koleksiyonIDsi>` ekleyebilirsiniz. Adanmış sunucular için atölye yardımı için lütfen [Adanmış Sunucular için Atölye](https://gmod.tr/wiki/Workshop_for_Dedicated_Servers) sayfasına bakın.

## Sunucuyu Güncelleme

Sunucuyu veya içeriği güncellemek için, sadece indirme betiğimizi çağırırız. Sunucularınızın kapalı olduğundan emin olmalısınız, aksi takdirde güncelleme başarısız olur.

Betiklerimizi sadece bunu çağırarak güncelleyin (ev dizininden)

```lua
./update_gmod.sh
```

## Yeniden Başlatmanın Ardından Sunucuyu Hayatta Tutma

Sunucuyu hayatta tutmak için crontab kullanırız. crontab'a, sunucu yüklendiğinde srcds_run'ı çağıracak bir girdi ekleriz.

crontab'ı açın

```lua
crontab -e
```

Şimdi, sona aşağıdaki satırı ekleyin

```lua
@reboot /home/steam/server_1/srcds_run -game garrysmod +maxplayers 12 +map gm_flatgrass
```

Şimdi dosyayı kaydedin. Genellikle crontab nano'da açılır, bu yüzden komutlar yine ctrl+o, enter, ctrl+x olacaktır.

Şimdi, linux sunucusunu yeniden başlattıktan sonra, Garry's Mod Sunucusu otomatik olarak başlayacaktır.

### Ek Notlar

Elbette, sunucunuzu hayatta tutmanın daha iyi yolları vardır, ancak bunlar kısa sürede oldukça karmaşık hale gelebilir, bu yüzden burada tartışılmamaktadır. Daha fazlasını öğrenmek isterseniz, Google'da araştırın veya Facepunch'ta sorun.

## Sorun Giderme

### 32-bit İkili Dosyaları

Eğer 64-bit bir Linux sürümü kullanıyorsanız, 32-bit ikili dosyalara ihtiyacınız vardır, çünkü SteamCMD yalnızca 32-bit olarak mevcuttur.

Eğer şu hata mesajını alırsanız

```lua
./steamcmd.sh: line 29: /home/$USER/Steam/linux32/steamcmd: No such file or directory
```

o zaman büyük ihtimalle 64-bit bir sistem çalıştırıyorsunuz ve 32-bit kütüphaneleriniz eksik demektir.

Bunu yapmak için **ia32-libs** kurmanız gerekir. Bunu yapmak için aşağıdaki kod parçasını çalıştırın:

```lua
dpkg --add-architecture i386
apt-get update
apt-get install ia32-libs
or
apt-get install lib32ncurses5 lib32z1
```

Paket büyüktür (~200MB nadir değildir) ve birçok bağımlılığı vardır, bu yüzden biraz zaman alabilir.

Diğer linux dağıtımları için [Valve wiki makalesine](https://developer.valvesoftware.com/wiki/SteamCMD#32-bit_libraries_on_64-bit_Linux_systems) bakın

### 'GLIBC_2.15' bulunamadı

Eğer şu hata mesajını alırsanız

```lua
Failed to open dedicated_srv.so (/lib/i386-linux-gnu/libm.so.6: version `GLIBC_2.15' not found (required by bin/dedicated_srv.so))
```

Büyük olasılıkla güncel olmayan GLIBC kütüphaneleriniz var ve bunları güncellemeniz gerekecek.

Bu, Valve'in araçları oluşturmak için kullandığından farklı bir dağıtım (veya dağıtım sürümü) kullanmayı seçtiğiniz için meydana geldi. Bu araçlar, o Linux dağıtımından bileşenler beklemektedir. (Yukarıdaki nota bakın!)

Ubuntu 12.04 32-bit veya daha yenisine güncelleme yapmadan bu sorunu çözmek için aşağıdaki kod parçasını çalıştırın:

```lua
wget http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.15-0ubuntu10.11_i386.deb
dpkg -x libc6_2.15-0ubuntu10.11_i386.deb tmp/
cd tmp/lib/i386-linux-gnu/
cp * /garrysmod-dizininiz/bin/
```

CentOS için önce [EPEL Repo](http://www.rackspace.com/knowledge_center/article/installing-rhel-epel-repo-on-centos-5x-or-6x)'sunu ve dpkg'yi kurmanız gerekir:

```lua
yum install dpkg
```

Alternatif olarak şunlara geçebilirsiniz:

- Ubuntu Server 12.04+
- CentOS 7 Bu dağıtımların çalıştığı onaylanmıştır ve en çok desteklenenlerdir.

### Çalışmayan Eklentiler

Sunucunuzu kurup çalıştırırken belirli eklentilerin çalışmadığı bazı sorunlar fark edebilirsiniz. Bu sorun, büyük harf içeren klasörlere sahip eski eklentileri etkiliyor gibi görünüyor. Bu sorunu çözmek için tüm dizinleri küçük harfli adlara ve bu dizinlere işaret eden tüm Lua kodlarını buna göre değiştirmek gerekebilir.

### UYARI: 32-bit libtinfo.so.5 veya libncurses.so.5 yüklenemedi.

Eğer şu hata mesajını alırsanız

```lua
WARNING: Failed to load 32-bit libtinfo.so.5 or libncurses.so.5.
  Please install (lib32tinfo5 / ncurses-libs.i686 / equivalent) to enable readline.
```

O zaman büyük olasılıkla bir lib32tinfo5 eşdeğeri kurulu değildir, bunu kurma yöntemi dağıtımlar arasında farklılık gösterir.

#### Arch Linux

1. `multilib-devel` paket grubunu kurun. Ne kurulacağı sorulduğunda, varsayılan olarak sağlanan `all` değerini kullanın. Bu, bir sonraki adım için listelenmemiş bir derleme bağımlılığıdır.
2. `lib32-ncurses5-compat-libs` AUR paketini kurun
   Bu adımlardan sonra sunucu konsolunda ok tuşlarını kullanmak çalışmalıdır

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/Linux_Dedicated_Server_Hosting
