VPS Üzerine TeamSpeak Sunucusu Nasıl Kurulur (Ubuntu/CentOS Kılavuzu)
TeamSpeak, Linux üzerinde bağımsız bir sunucu daemon’ı olarak çalışan, kendi barındırdığınız, düşük gecikmeli bir sesli iletişim platformudur. Bir VPS üzerine kurulması, üçüncü taraf altyapısına veya kullanım sınırlarına bağlı kalmadan kanallar, izinler, codec’ler ve güvenlik politikaları üzerinde tam yönetimsel kontrol sağlar.
Bu kılavuz, Ubuntu üzerinde TeamSpeak 3 Server’ın tam kurulumunu (CentOS/RHEL varyantları için notlar dahil) kapsamakta olup kullanıcı izolasyonu, systemd servis yapılandırması, yönetici parolası güçlendirmesi ve istemci bağlantısını içermektedir. Her komut, temiz bir 22.04 LTS ortamında üretim için hazır ve test edilmiştir.
Neden VPS Üzerinde TeamSpeak Kendi Barındırılır
Discord gibi ticari sesli platformlar, kuruluşların geçersiz kılamayacağı veri saklama politikaları, algoritmik moderasyon ve hız sınırları uygular. Kendi barındırdığınız bir TeamSpeak örneği bu kısıtlamaları tamamen ortadan kaldırır. Şunları kontrol edersiniz:
- Codec kalitesi (Opus Voice, Opus Music) ve kanal başına bit hızı
- Ayrıntılı sunucu grubu ve kanal grubu ACL’leri ile izin sistemi
- Sinyal için TLS ve isteğe bağlı ses şifrelemesi aracılığıyla şifreleme
- Veri yerleşimi — ses trafiğiniz hiçbir zaman üçüncü taraf bir aktarıcıdan geçmez
- Çalışma süresi SLA’sı — paylaşımlı bir bulut hizmetine değil, doğrudan VPS sağlayıcınıza bağlıdır
Oyun klanları, e-spor organizasyonları, uzak geliştirme ekipleri ve kurumsal iletişim için bu, ölçülebilir güvenilirlik ve uyumluluk avantajlarına dönüşür.
Minimum Sistem Gereksinimleri
TeamSpeak 3 Server son derece hafiftir. Aşağıdaki özellikler, ses kalitesi bozulmadan yaklaşık 50–100 eş zamanlı kullanıcıyı destekler:
| Kaynak | Minimum | Önerilen (100+ kullanıcı) |
|---|
| — | — | — |
|---|
| CPU Çekirdekleri | 1 vCPU | 2 vCPU |
|---|
| RAM | 512 MB | 1 GB |
|---|
| Disk Alanı | 1 GB | 5 GB (günlükler + DB) |
|---|
| Ağ | 10 Mbps | 100 Mbps |
|---|
| İşletim Sistemi | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
|---|
| Mimari | x86_64 (amd64) | x86_64 (amd64) |
|---|
1 vCPU ve 512 MB RAM’e sahip bir VPS Hosting planı küçük bir topluluk için yeterlidir. Eş zamanlı kullanıcı sayınız arttıkça dikey olarak ölçeklendirin.
Güvenlik duvarınızda açılacak önemli portlar:
- `9987/UDP` — ses verisi (varsayılan)
- `10011/TCP` — ServerQuery (ham veya SSH)
- `30033/TCP` — dosya transferi
Adım 1: Sunucuyu Hazırlayın
VPS’inize root olarak bağlanın:
“`bash
ssh root@your_server_ip -p your_ssh_port
“`
Yeni yazılım eklemeden önce bilinen güvenlik açıklarını gidermek için tüm sistem paketlerini güncelleyin:
“`bash
sudo apt update && sudo apt upgrade -y
“`
TeamSpeak arşivini çıkarmak için gerekli olan `bzip2`’i yükleyin:
“`bash
sudo apt install bzip2 -y
“`
CentOS/AlmaLinux/Rocky Linux’ta yukarıdakini şununla değiştirin:
“`bash
sudo dnf update -y && sudo dnf install bzip2 wget -y
“`
Adım 2: Özel Bir Sistem Kullanıcısı Oluşturun
TeamSpeak’i root olarak çalıştırmak kritik bir güvenlik hatasıdır. Süreç istismar edilirse, bir saldırgan tüm ana makineye anında root erişimi kazanır. Her zaman ayrıcalıksız bir kullanıcı altında izole edin:
“`bash
sudo adduser teamspeak
“`
Parola belirlemek için istemleri takip edin. Bu kullanıcı tüm TeamSpeak ikili dosyalarına, yapılandırma dosyalarına ve SQLite veritabanına sahip olacaktır.
> Güvenlik notu: Güçlendirilmiş ortamlar için, tüm işlemler için `–disabled-login` ile kullanıcı oluşturmayı ve `sudo -u teamspeak` kullanmayı düşünün; bu, etkileşimli kabuk erişimini tamamen engeller.
Adım 3: TeamSpeak Sunucu İkili Dosyasını İndirin ve Çıkarın
`teamspeak` kullanıcı bağlamına geçin:
“`bash
sudo su – teamspeak
“`
64-bit Linux için en son kararlı TeamSpeak 3 Server sürümünü indirin. Bu komutu çalıştırmadan önce resmi TeamSpeak indirme sayfasında her zaman güncel sürüm numarasını doğrulayın; sürüm dizesi her sürümde değişir:
“`bash
wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2 -O teamspeak-server.tar.bz2
“`
Arşivi çıkarın ve tüm dosyaların doğrudan mevcut çalışma dizinine (`/home/teamspeak/`) yerleşmesi için üst düzey dizini kaldırın:
“`bash
tar xvfj teamspeak-server.tar.bz2 –strip-components 1
“`
Gerekli işaretleyici dosyayı oluşturarak TeamSpeak lisans sözleşmesini kabul edin. Sunucu daemon’ı bu dosya olmadan başlamayı reddedecektir:
“`bash
touch ~/.ts3server_license_accepted
“`
Root kullanıcısına geri dönün:
“`bash
exit
“`
Adım 4: Bir systemd Servis Birimi Oluşturun
TeamSpeak’i systemd aracılığıyla yönetmek, sürecin yeniden başlatma veya çökmeden sonra otomatik olarak yeniden başlamasını sağlar, merkezi günlük kaydı için `journald` ile entegre olur ve önyükleme sırasında uygun bağımlılık sıralamasına uyar.
Yeni bir servis birimi dosyası açın:
“`bash
nano /etc/systemd/system/teamspeak.service
“`
Aşağıdaki tam birim yapılandırmasını yapıştırın:
“`ini
[Unit]
Description=TeamSpeak 3 Server
After=network.target
[Service]
WorkingDirectory=/home/teamspeak/
User=teamspeak
Group=teamspeak
Type=forking
ExecStart=/home/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini
ExecStop=/home/teamspeak/ts3server_startscript.sh stop
PIDFile=/home/teamspeak/ts3server.pid
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
“`
Temel direktifler açıklandı:
- `After=network.target` — ağ yığını hazır olmadan önce başlatmayı önler, `9987/UDP` üzerinde bağlama hatalarını engeller
- `Type=forking` — arka planda bir süreç çatallayan TeamSpeak başlatma betiği için doğrudur
- `Restart=on-failure` — manuel müdahale olmadan beklenmedik çökmelerden otomatik olarak kurtarır
- `RestartSec=10s` — hızlı çökme döngülerini önlemek için yeniden başlatma girişimlerinden önce kısa bir gecikme ekler
Dosyayı kaydedin (`Ctrl+S`, ardından `Ctrl+X`), ardından yeni birimi kaydetmek için systemd daemon’ını yeniden yükleyin:
“`bash
systemctl daemon-reload
“`
Servisi önyüklemede başlayacak şekilde etkinleştirin ve hemen başlatın:
“`bash
systemctl enable –now teamspeak
“`
Servisin aktif ve çalışır durumda olduğunu doğrulayın:
“`bash
systemctl status teamspeak
“`
Beklenen çıktı, geçerli bir PID ile `Active: active (running)` içerir. Durum `failed` gösteriyorsa, günlükleri hemen inceleyin:
“`bash
journalctl -u teamspeak -n 50 –no-pager
“`
Adım 5: Yönetici Ayrıcalık Anahtarını (Token) Alın
TeamSpeak Server ilk kez başladığında, günlük dosyalarında bir ayrıcalık anahtarı (token) oluşturur. Bu token, bağlanan ilk istemciye tam sunucu yöneticisi hakları verir. Başka biri bağlanmadan önce almanız gerekir.
“`bash
grep -i token /home/teamspeak/logs/*
“`
Çıktı şuna benzer bir satır içerecektir:
“`
token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ
“`
Bu token’ı kopyalayın. TeamSpeak istemcisi aracılığıyla ilk kez bağlandığınızda, girmeniz istenecektir. Bunu yapmak istemcinizi `Server Admin` sunucu grubuna yükseltir.
> Kritik: Bu token tek kullanımlıktır ve ilk kullanımda tüketilir. Kullanmadan önce kaybederseniz, yeni bir yönetici parolasını manuel olarak ayarlamanız gerekir (bkz. Adım 6). Güvenli bir şekilde saklayın.
Adım 6: ServerAdmin Parolasını Ayarlayın veya Sıfırlayın
`serveradmin` hesabı, ServerQuery erişimi için kullanılır — betikli yönetim, bot entegrasyonu ve YaTQA veya ts3admin gibi uzaktan yönetim araçlarına olanak tanıyan ham TCP veya SSH arayüzü.
Bu parolayı ayarlamak veya sıfırlamak için servisi geçici olarak durdurmanız, sunucu ikili dosyasını doğrudan parola argümanıyla başlatmanız, ardından tekrar durdurmanız ve systemd aracılığıyla yeniden başlatmanız gerekir:
“`bash
systemctl stop teamspeak.service
“`
Teamspeak kullanıcısına geçin ve parolayı ayarlayın:
“`bash
su – teamspeak
./ts3server_startscript.sh start serveradmin_password=YourStrongPassword
“`
Sunucunun tam olarak başlatılmasını bekleyin (çıktıda `TeamSpeak 3 Server started successfully`’i izleyin), ardından durdurun:
“`bash
./ts3server_startscript.sh stop
exit
“`
Yönetilen servisi yeniden başlatın:
“`bash
systemctl start teamspeak.service
“`
Parola gereksinimleri: Büyük/küçük harf, rakam ve semboller içeren en az 16 karakterlik bir parola kullanın. ServerQuery arayüzü TCP port `10011`’de açıktır ve zayıf bir parola bırakılırsa yaygın bir kaba kuvvet hedefidir.
Adım 7: Güvenlik Duvarını Yapılandırın
Sunucunuzda `ufw` aktifse, gerekli portları açın:
“`bash
ufw allow 9987/udp comment "TeamSpeak voice"
ufw allow 10011/tcp comment "TeamSpeak ServerQuery"
ufw allow 30033/tcp comment "TeamSpeak file transfer"
ufw reload
“`
`firewalld` için (CentOS/AlmaLinux):
“`bash
firewall-cmd –permanent –add-port=9987/udp
firewall-cmd –permanent –add-port=10011/tcp
firewall-cmd –permanent –add-port=30033/tcp
firewall-cmd –reload
“`
> Güçlendirme ipucu: Genel ServerQuery erişimine ihtiyacınız yoksa, `10011` portunu yalnızca belirli yönetim IP’leriyle kısıtlayın. Standart ses sunucusu işlemi için bunu herkese açık bırakmak gereksizdir.
Adım 8: TeamSpeak İstemcisinden Bağlanın
- Masaüstü işletim sisteminiz için TeamSpeak 3 İstemcisini indirin ve yükleyin (Windows, macOS, Linux).
- İstemciyi açın ve Bağlantılar > Bağlan‘a gidin.
- VPS IP adresinizi Sunucu Takma Adı veya Adresi olarak girin.
- `ts3server.ini`’de değiştirmediyseniz portu `9987` olarak bırakın.
- İlk bağlantıda, istemci ayrıcalık anahtarını (token) girmenizi isteyecektir. Adım 5’te alınan token’ı yapıştırın.
- İstemciniz artık sunucu yöneticisidir.
İsteğe Bağlı: Otomatik Kurulum Betiğini Kullanın
Hızlı dağıtım için AlexHost, bağımlılık kurulumu, kullanıcı oluşturma, ikili dosya indirme ve servis yapılandırmasını tek bir çalıştırmada gerçekleştiren otomatik bir kurulum betiği sağlar:
“`bash
ssh root@your_server_ip -p your_ssh_port
wget https://bill.alexhost.com/downloads/teamspeak_install.sh
chmod +x teamspeak_install.sh
./teamspeak_install.sh
“`
Sisteminizde ne gibi değişiklikler yaptığını anlamak için çalıştırmadan önce betik içeriğini inceleyin. Otomatik betikler kullanışlıdır ancak üretim altyapısında körü körüne çalıştırılmamalıdır.
TeamSpeak ve Alternatifler: Kendi Barındırılan Sesli Platformlar
| Özellik | TeamSpeak 3 | Mumble | Discord (bulut) |
|---|
| — | — | — | — |
|---|
| Kendi barındırma | Evet | Evet | Hayır |
|---|
| RAM kullanımı (boşta) | ~30 MB | ~15 MB | N/A |
|---|
| Gecikme | Çok düşük | Çok düşük | Düşük–Orta |
|---|
| Şifreleme | TLS (sinyal) | DTLS + SRTP | Tescilli |
|---|
| İzin sistemi | Gelişmiş ACL | Orta | Rol tabanlı |
|---|
| İstemci kullanılabilirliği | Win/Mac/Linux/Mobil | Win/Mac/Linux | Win/Mac/Linux/Mobil |
|---|
| Lisans (sunucu) | 32 slota kadar ücretsiz | Açık kaynak | N/A |
|---|
| Codec | Opus | Opus/CELT | Opus |
|---|
| ServerQuery API | Evet (TCP/SSH) | Hayır | Yalnızca REST API |
|---|
TeamSpeak’in ServerQuery API’si, programatik sunucu yönetimine ihtiyaç duyan kuruluşlar için önemli bir farklılaştırıcıdır — otomatik kanal oluşturma, bot entegrasyonu veya CI/CD tetiklemeli izin değişiklikleri.
Yaygın Kurulum Sorunları ve Çözümleri
Sunucu başlatılamıyor — “9987 portuna bağlanılamadı”
Başka bir süreç UDP 9987’yi kullanıyor veya servis ağ hazır olmadan önce başladı. `ss -ulnp | grep 9987` ile kontrol edin ve servis biriminizde `After=network.target` direktifinin mevcut olduğunu doğrulayın.
Lisans dosyası bulunamadı hatası
`.ts3server_license_accepted` dosyası, süreci çalıştıran kullanıcının ana dizininde (`/home/teamspeak/`) mevcut olmalıdır. `ls -la /home/teamspeak/.ts3server_license_accepted` ile doğrulayın.
Günlüklerde token bulunamadı
Günlük dizini varsayılan olarak `/home/teamspeak/logs/`’dir. Arşivi farklı bir yola çıkardıysanız, grep komutunu buna göre ayarlayın. Token’lar yalnızca ilk başlatmadan itibaren günlükte görünür — veritabanı zaten mevcutsa yeni token oluşturulmaz.
ServerQuery bağlantısı reddedildi
`10011/TCP` portunun güvenlik duvarınızda açık olduğunu ve sunucu sürecinin çalıştığını doğrulayın. `telnet 127.0.0.1 10011` ile yerel olarak test edin — başarılı bir bağlantı `TS3` başlığı döndürür.
Çok sayıda kullanıcıyla yüksek CPU kullanımı
TeamSpeak ses karıştırma için tek iş parçacıklıdır. Tek bir sanal sunucu örneğinde ~200 eş zamanlı kullanıcıyı aşarsanız, birden fazla sanal sunucu dağıtmayı veya garantili CPU saat hızı ve gürültülü komşu çakışması olmayan bir Dedicated Servers planına yükseltmeyi düşünün.
TeamSpeak Dağıtımınızı Güvenli Hale Getirme
Yukarıda ele alınan kullanıcı izolasyonu ve güvenlik duvarı kurallarının ötesinde, şu güçlendirme önlemlerini uygulayın:
- Otomatik tarama maruziyetini azaltmak için `ts3server.ini`’deki varsayılan portları değiştirin. Güvenlik duvarı kurallarını buna göre güncelleyin.
- Güvenlik duvarı kaynak filtrelemesi kullanarak ServerQuery’yi (`10011/TCP`) yönetim IP’leriyle kısıtlayın.
- VPS’inizde SSH anahtar kimlik doğrulamasını etkinleştirin ve parola tabanlı root girişini devre dışı bırakın. SSH anahtar yönetimi seçenekleri için VPS kontrol panelinize bakın.
- Olağandışı bağlantı kalıpları veya tekrarlanan ServerQuery kimlik doğrulama hataları için `journalctl -u teamspeak -f` aracılığıyla günlükleri izleyin.
- `/home/teamspeak/ts3server.sqlitedb`’nin düzenli yedeklerini alın — bu dosya tüm kanal yapılandırmalarını, sunucu gruplarını, izinleri ve istemci kimliklerini içerir. Kaybetmek, tüm sunucu yapınızı sıfırdan yeniden oluşturmak anlamına gelir.
- İkili dosyayı güncel tutun. TeamSpeak periyodik olarak güvenlik yamaları yayınlar. Sürüm duyurularına abone olun ve güncellemeler mevcut olduğunda yeni sürüm tarball’ı ile Adım 3–4’ü tekrarlayın.
Aynı VPS üzerinde birden fazla hizmet yönetiyorsanız, birleşik bir arayüzden hizmet yönetimini, izlemeyi ve zamanlanmış görevleri kolaylaştırmak için TeamSpeak örneğinizi bir VPS Control Panels çözümüyle eşleştirmeyi düşünün.
Karar Matrisi: Bu Kurulum Sizin İçin Doğru mu?
| Senaryo | Önerilen Eylem |
|---|
| — | — |
|---|
| 32’nin altında eş zamanlı kullanıcı, oyun topluluğu | Giriş seviyesi VPS, TeamSpeak ücretsiz lisansı |
|---|
| 32–512 eş zamanlı kullanıcı, organizasyon | TeamSpeak lisans yükseltmesi + 2–4 vCPU VPS |
|---|
| Tam donanım izolasyonu gerekli, 500+ kullanıcı | Dedicated sunucu, birden fazla sanal sunucu örneği |
|---|
| Yönetilen panel + TeamSpeak isteniyorsa | cPanel veya DirectAdmin ile VPS |
|---|
| Düşük gecikmeli AB/ABD yönlendirmesi gerekli | Kullanıcılara en yakın VPS veri merkezi konumunu seçin |
|---|
| Eşlik eden web varlığı gerekli | Aynı VPS’e [Shared Web Hosting](https://alexhost.com/tr/shared-hosting/) veya alt alan adı ekleyin |
|---|
| Sunucu adresi için özel alan adı gerekli | [Domain Registration](https://alexhost.com/tr/domains/) + VPS IP’ye işaret eden DNS A kaydı |
|---|
Teknik Temel Çıkarımlar
- TeamSpeak’i her zaman özel bir root olmayan kullanıcı altında çalıştırın. Bu, internete açık herhangi bir hizmet için tartışmasızdır.
- `ts3server_license_accepted` işaretleyici dosyası, daemon başlamadan önce mevcut olmalıdır — yaygın bir ilk önyükleme başarısızlık noktasıdır.
- systemd biriminde `Type=simple` değil `Type=forking` kullanın. Başlatma betiği bir arka plan süreci çatalar; `simple` systemd’nin PID’yi yanlış izlemesine neden olur.
- Ayrıcalık anahtarı token’ını ilk başlatmadan hemen sonra günlüklerden alın. İlk kullanımda tüketilir ve manuel parola sıfırlama prosedürü olmadan yeniden oluşturulamaz.
- `9987/UDP` portu, temel ses işlemi için gereken tek porttur. `10011/TCP` ve `30033/TCP` kullanım durumunuza bağlı olarak isteğe bağlıdır.
- `ts3server.sqlitedb`’ü bir programa göre yedekleyin. Tüm sunucu yapılandırması bu tek dosyada bulunur.
- Üretim dağıtımları için ServerQuery’yi localhost veya bir yönetim VLAN’ı ile kısıtlayın — IP izin listesi olmadan asla herkese açık bırakmayın.
—
Sıkça Sorulan Sorular
Ücretsiz TeamSpeak sunucu lisansında maksimum kullanıcı sayısı nedir?
Ücretsiz kar amacı gütmeyen lisans, aynı anda en fazla 32 slotu destekler. Daha büyük dağıtımlar için TeamSpeak, 64, 128, 256 veya 512 slot için yıllık lisanslar ve uygun kuruluşlar için sınırsız slotlu “Aktivasyon Lisansı” sunar.
TeamSpeak Server’ı 512 MB RAM’li bir VPS’de çalıştırabilir miyim?
Evet. TeamSpeak 3 Server daemon’ı boşta yaklaşık 25–40 MB RAM tüketir ve eş zamanlı kullanıcılarla ölçülü şekilde ölçeklenir. 512 MB VPS, 50 eş zamanlı kullanıcının altındaki topluluklar için işletim sistemi ve sistem süreçleri için rahat bir alan bırakarak yeterlidir.
Yapılandırmamı kaybetmeden TeamSpeak Server’ı nasıl güncellerim?
Servisi `systemctl stop teamspeak` ile durdurun, `teamspeak` kullanıcısı olarak yeni sürüm tarball’ını indirin, aynı dizine `–strip-components 1` ile çıkarın (yalnızca ikili dosyaların üzerine yazın), ardından servisi yeniden başlatın. `ts3server.sqlitedb` veritabanı ve `ts3server.ini` yapılandırma dosyası bu işlemle üzerine yazılmaz.
TeamSpeak sunucum neden genel sunucu listesinde görünmüyor?
Varsayılan olarak, TeamSpeak sunucuları genel sunucu listesine kaydolmaz. Listelemeyi etkinleştirmek için `machine_id=`’i ayarlayın ve `ts3server.ini`’de `serverip`’i yapılandırın, ardından ServerQuery veya istemcinin sunucu yönetim paneli aracılığıyla genel listeleme seçeneğini etkinleştirin. UDP port `9987`’nin internetten erişilebilir olduğundan emin olun.
TeamSpeak trafiği varsayılan olarak şifreli midir?
Sinyal trafiği (bağlantı kurulumu, sohbet, izinler) TLS aracılığıyla şifrelenir. TeamSpeak 3’te UDP üzerinden iletilen ses verisi varsayılan olarak şifrelenmez. Ses şifrelemesi, küçük bir CPU kullanımı artışı karşılığında sunucu ayarları aracılığıyla kanal başına veya sunucu genelinde etkinleştirilebilir. TeamSpeak 5 (şu anda geliştirme aşamasında) varsayılan olarak uçtan uca şifreleme kullanır.
