Cara Menginstal Server TeamSpeak di VPS (Panduan Ubuntu/CentOS)
TeamSpeak adalah platform komunikasi suara yang di-host sendiri dengan latensi rendah yang berjalan sebagai daemon server mandiri di Linux. Menginstalnya di VPS memberi Anda kontrol administratif penuh atas saluran, izin, codec, dan kebijakan keamanan — tanpa bergantung pada infrastruktur pihak ketiga atau batasan penggunaan.
Panduan ini mencakup instalasi lengkap TeamSpeak 3 Server di Ubuntu (dengan catatan untuk varian CentOS/RHEL), termasuk isolasi pengguna, konfigurasi layanan systemd, penguatan kata sandi admin, dan koneksi klien. Setiap perintah siap produksi dan telah diuji pada lingkungan 22.04 LTS yang bersih.
Mengapa Meng-host Sendiri TeamSpeak di VPS
Platform suara komersial seperti Discord memberlakukan kebijakan penyimpanan data, moderasi algoritmik, dan batas kecepatan yang tidak dapat ditimpa oleh organisasi. Instans TeamSpeak yang di-host sendiri menghilangkan batasan tersebut sepenuhnya. Anda mengontrol:
- Kualitas codec (Opus Voice, Opus Music) dan bitrate per saluran
- Sistem izin dengan ACL grup server dan grup saluran yang terperinci
- Enkripsi melalui TLS untuk pensinyalan dan enkripsi suara opsional
- Residensi data — lalu lintas suara Anda tidak pernah melewati relay pihak ketiga
- SLA uptime — terikat langsung ke penyedia VPS Anda, bukan layanan cloud bersama
Untuk klan gaming, organisasi esports, tim pengembangan jarak jauh, dan komunikasi perusahaan, ini menghasilkan keandalan yang terukur dan keunggulan kepatuhan.
Persyaratan Sistem Minimum
TeamSpeak 3 Server sangat ringan. Spesifikasi berikut mendukung sekitar 50–100 pengguna bersamaan tanpa degradasi kualitas audio:
| Sumber Daya | Minimum | Direkomendasikan (100+ pengguna) |
|---|
| — | — | — |
|---|
| Core CPU | 1 vCPU | 2 vCPU |
|---|
| RAM | 512 MB | 1 GB |
|---|
| Ruang Disk | 1 GB | 5 GB (log + DB) |
|---|
| Jaringan | 10 Mbps | 100 Mbps |
|---|
| OS | Ubuntu 20.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
|---|
| Arsitektur | x86_64 (amd64) | x86_64 (amd64) |
|---|
Paket VPS Hosting dengan 1 vCPU dan 512 MB RAM sudah cukup untuk komunitas kecil. Skalakan secara vertikal seiring bertambahnya jumlah pengguna bersamaan Anda.
Port utama yang perlu dibuka di firewall Anda:
- `9987/UDP` — data suara (default)
- `10011/TCP` — ServerQuery (raw atau SSH)
- `30033/TCP` — transfer file
Langkah 1: Persiapkan Server
Hubungkan ke VPS Anda sebagai root:
“`bash
ssh root@your_server_ip -p your_ssh_port
“`
Perbarui semua paket sistem untuk menghilangkan kerentanan yang diketahui sebelum memperkenalkan perangkat lunak baru:
“`bash
sudo apt update && sudo apt upgrade -y
“`
Instal `bzip2`, yang diperlukan untuk mengekstrak arsip TeamSpeak:
“`bash
sudo apt install bzip2 -y
“`
Di CentOS/AlmaLinux/Rocky Linux, ganti perintah di atas dengan:
“`bash
sudo dnf update -y && sudo dnf install bzip2 wget -y
“`
Langkah 2: Buat Pengguna Sistem Khusus
Menjalankan TeamSpeak sebagai root adalah kesalahan keamanan yang kritis. Jika proses tersebut pernah dieksploitasi, penyerang mendapatkan akses root langsung ke seluruh host. Selalu isolasikan di bawah pengguna yang tidak memiliki hak istimewa:
“`bash
sudo adduser teamspeak
“`
Ikuti petunjuk untuk menetapkan kata sandi. Pengguna ini akan memiliki semua biner TeamSpeak, file konfigurasi, dan database SQLite.
> Catatan keamanan: Untuk lingkungan yang diperkuat, pertimbangkan untuk membuat pengguna dengan `–disabled-login` dan menggunakan `sudo -u teamspeak` untuk semua operasi, mencegah akses shell interaktif sepenuhnya.
Langkah 3: Unduh dan Ekstrak Biner Server TeamSpeak
Beralih ke konteks pengguna `teamspeak`:
“`bash
sudo su – teamspeak
“`
Unduh rilis TeamSpeak 3 Server stabil terbaru untuk Linux 64-bit. Selalu verifikasi nomor versi saat ini di halaman unduhan resmi TeamSpeak sebelum menjalankan perintah ini, karena string versi berubah dengan setiap rilis:
“`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
“`
Ekstrak arsip dan hapus direktori tingkat atas sehingga semua file langsung berada di direktori kerja saat ini (`/home/teamspeak/`):
“`bash
tar xvfj teamspeak-server.tar.bz2 –strip-components 1
“`
Terima perjanjian lisensi TeamSpeak dengan membuat file penanda yang diperlukan. Daemon server akan menolak untuk memulai tanpanya:
“`bash
touch ~/.ts3server_license_accepted
“`
Kembali ke pengguna root:
“`bash
exit
“`
Langkah 4: Buat Unit Layanan systemd
Mengelola TeamSpeak melalui systemd memastikan proses dimulai ulang secara otomatis setelah reboot atau crash, terintegrasi dengan `journald` untuk pencatatan terpusat, dan menghormati urutan ketergantungan yang tepat selama boot.
Buka file unit layanan baru:
“`bash
nano /etc/systemd/system/teamspeak.service
“`
Tempelkan konfigurasi unit lengkap berikut:
“`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
“`
Penjelasan direktif utama:
- `After=network.target` — mencegah startup sebelum stack jaringan siap, menghindari kegagalan bind pada `9987/UDP`
- `Type=forking` — benar untuk skrip start TeamSpeak, yang mem-fork proses latar belakang
- `Restart=on-failure` — secara otomatis memulihkan dari crash yang tidak terduga tanpa intervensi manual
- `RestartSec=10s` — menambahkan penundaan singkat sebelum percobaan restart untuk mencegah loop crash yang cepat
Simpan file (`Ctrl+S`, lalu `Ctrl+X`), kemudian muat ulang daemon systemd untuk mendaftarkan unit baru:
“`bash
systemctl daemon-reload
“`
Aktifkan layanan untuk memulai saat boot dan segera mulai:
“`bash
systemctl enable –now teamspeak
“`
Verifikasi layanan aktif dan berjalan:
“`bash
systemctl status teamspeak
“`
Output yang diharapkan mencakup `Active: active (running)` dengan PID yang valid. Jika status menunjukkan `failed`, periksa log segera:
“`bash
journalctl -u teamspeak -n 50 –no-pager
“`
Langkah 5: Ambil Kunci Hak Istimewa Admin (Token)
Ketika TeamSpeak Server pertama kali dimulai, ia menghasilkan kunci hak istimewa (token) di file lognya. Token ini memberikan hak administrator server penuh kepada klien yang pertama kali terhubung. Anda harus mengambilnya sebelum orang lain terhubung.
“`bash
grep -i token /home/teamspeak/logs/*
“`
Output akan berisi baris yang mirip dengan:
“`
token=q1a2b3c4d5e6f7g8h9i0jKLMNOPQRSTUVWXYZ
“`
Salin token ini. Saat Anda terhubung melalui klien TeamSpeak untuk pertama kalinya, Anda akan diminta untuk memasukkannya. Melakukan hal ini meningkatkan klien Anda ke grup server `Server Admin`.
> Penting: Token ini hanya dapat digunakan sekali dan dikonsumsi pada penebusan pertama. Jika Anda kehilangannya sebelum menggunakannya, Anda harus menetapkan kata sandi admin baru secara manual (lihat Langkah 6). Simpan dengan aman.
Langkah 6: Tetapkan atau Reset Kata Sandi ServerAdmin
Akun `serveradmin` digunakan untuk akses ServerQuery — antarmuka TCP raw atau SSH yang memungkinkan administrasi berbasis skrip, integrasi bot, dan alat manajemen jarak jauh seperti YaTQA atau ts3admin.
Untuk menetapkan atau mereset kata sandi ini, Anda harus menghentikan layanan sementara, memulai biner server secara langsung dengan argumen kata sandi, kemudian menghentikannya lagi dan memulai ulang melalui systemd:
“`bash
systemctl stop teamspeak.service
“`
Beralih ke pengguna teamspeak dan tetapkan kata sandi:
“`bash
su – teamspeak
./ts3server_startscript.sh start serveradmin_password=YourStrongPassword
“`
Tunggu server sepenuhnya diinisialisasi (perhatikan `TeamSpeak 3 Server started successfully` dalam output), kemudian hentikan:
“`bash
./ts3server_startscript.sh stop
exit
“`
Mulai ulang layanan yang dikelola:
“`bash
systemctl start teamspeak.service
“`
Persyaratan kata sandi: Gunakan minimal 16 karakter dengan campuran huruf besar dan kecil, angka, dan simbol. Antarmuka ServerQuery terekspos di port TCP `10011` dan merupakan target brute-force yang umum jika dibiarkan dengan kata sandi yang lemah.
Langkah 7: Konfigurasi Firewall
Jika `ufw` aktif di server Anda, buka port yang diperlukan:
“`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
“`
Untuk `firewalld` (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
“`
> Tips penguatan: Jika Anda tidak memerlukan akses ServerQuery publik, batasi port `10011` hanya untuk IP manajemen tertentu. Mengeksposnya secara publik tidak diperlukan untuk operasi server suara standar.
Langkah 8: Hubungkan dari Klien TeamSpeak
- Unduh dan instal TeamSpeak 3 Client untuk OS desktop Anda (Windows, macOS, Linux).
- Buka klien dan navigasikan ke Connections > Connect.
- Masukkan alamat IP VPS Anda sebagai Server Nickname or Address.
- Biarkan port sebagai `9987` kecuali Anda mengubahnya di `ts3server.ini`.
- Pada koneksi pertama, klien akan meminta Anda untuk memasukkan kunci hak istimewa (token). Tempelkan token yang diambil di Langkah 5.
- Klien Anda sekarang menjadi administrator server.
Opsional: Gunakan Skrip Instalasi Otomatis
Untuk penerapan cepat, AlexHost menyediakan skrip instalasi otomatis yang menangani instalasi dependensi, pembuatan pengguna, unduhan biner, dan konfigurasi layanan dalam satu eksekusi:
“`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
“`
Tinjau konten skrip sebelum menjalankannya untuk memahami perubahan apa yang dilakukannya pada sistem Anda. Skrip otomatis memang praktis tetapi tidak boleh dijalankan secara membabi buta pada infrastruktur produksi.
TeamSpeak vs. Alternatif: Platform Suara yang Di-host Sendiri
| Fitur | TeamSpeak 3 | Mumble | Discord (cloud) |
|---|
| — | — | — | — |
|---|
| Di-host sendiri | Ya | Ya | Tidak |
|---|
| Penggunaan RAM (idle) | ~30 MB | ~15 MB | N/A |
|---|
| Latensi | Sangat rendah | Sangat rendah | Rendah–Sedang |
|---|
| Enkripsi | TLS (pensinyalan) | DTLS + SRTP | Proprietary |
|---|
| Sistem izin | ACL Lanjutan | Sedang | Berbasis peran |
|---|
| Ketersediaan klien | Win/Mac/Linux/Mobile | Win/Mac/Linux | Win/Mac/Linux/Mobile |
|---|
| Lisensi (server) | Gratis hingga 32 slot | Open source | N/A |
|---|
| Codec | Opus | Opus/CELT | Opus |
|---|
| ServerQuery API | Ya (TCP/SSH) | Tidak | Hanya REST API |
|---|
ServerQuery API TeamSpeak adalah pembeda yang signifikan bagi organisasi yang membutuhkan manajemen server secara terprogram — pembuatan saluran otomatis, integrasi bot, atau perubahan izin yang dipicu CI/CD.
Masalah Instalasi Umum dan Solusinya
Server gagal dimulai — "Could not bind to port 9987"
Proses lain menggunakan UDP 9987, atau layanan dimulai sebelum jaringan siap. Periksa dengan `ss -ulnp | grep 9987` dan verifikasi direktif `After=network.target` ada di unit layanan Anda.
Kesalahan file lisensi tidak ditemukan
File `.ts3server_license_accepted` harus ada di direktori home pengguna yang menjalankan proses (`/home/teamspeak/`). Konfirmasi dengan `ls -la /home/teamspeak/.ts3server_license_accepted`.
Token tidak ditemukan di log
Direktori log secara default adalah `/home/teamspeak/logs/`. Jika Anda mengekstrak arsip ke jalur yang berbeda, sesuaikan perintah grep. Token hanya muncul di log dari startup pertama kali — jika database sudah ada, tidak ada token baru yang dihasilkan.
Koneksi ServerQuery ditolak
Konfirmasi port `10011/TCP` terbuka di firewall Anda dan proses server sedang berjalan. Uji secara lokal dengan `telnet 127.0.0.1 10011` — koneksi yang berhasil mengembalikan banner `TS3`.
Penggunaan CPU tinggi dengan banyak pengguna
TeamSpeak bersifat single-threaded untuk pencampuran suara. Jika Anda melebihi ~200 pengguna bersamaan pada satu instans server virtual, pertimbangkan untuk menerapkan beberapa server virtual atau meningkatkan ke paket Dedicated Servers untuk kecepatan clock CPU yang terjamin dan tanpa persaingan noisy-neighbor.
Mengamankan Penerapan TeamSpeak Anda
Selain isolasi pengguna dan aturan firewall yang dibahas di atas, terapkan langkah-langkah penguatan berikut:
- Ubah port default di `ts3server.ini` untuk mengurangi paparan pemindaian otomatis. Perbarui aturan firewall sesuai.
- Batasi ServerQuery (`10011/TCP`) ke IP manajemen menggunakan pemfilteran sumber firewall.
- Aktifkan autentikasi kunci SSH di VPS Anda dan nonaktifkan login root berbasis kata sandi. Lihat panel kontrol VPS Anda untuk opsi manajemen kunci SSH.
- Pantau log melalui `journalctl -u teamspeak -f` untuk pola koneksi yang tidak biasa atau kegagalan autentikasi ServerQuery yang berulang.
- Pencadangan rutin dari `/home/teamspeak/ts3server.sqlitedb` — file ini berisi semua konfigurasi saluran, grup server, izin, dan identitas klien. Kehilangannya berarti membangun ulang seluruh struktur server Anda dari awal.
- Perbarui biner secara berkala. TeamSpeak merilis patch keamanan secara berkala. Berlangganan pengumuman rilis mereka dan ulangi Langkah 3–4 dengan tarball versi baru saat pembaruan tersedia.
Jika Anda mengelola beberapa layanan di VPS yang sama, pertimbangkan untuk memasangkan instans TeamSpeak Anda dengan solusi VPS Control Panels untuk menyederhanakan manajemen layanan, pemantauan, dan tugas terjadwal dari antarmuka terpadu.
Matriks Keputusan: Apakah Pengaturan Ini Tepat untuk Anda?
| Skenario | Tindakan yang Direkomendasikan |
|---|
| — | — |
|---|
| Di bawah 32 pengguna bersamaan, komunitas gaming | VPS entry-level, lisensi gratis TeamSpeak |
|---|
| 32–512 pengguna bersamaan, organisasi | Peningkatan lisensi TeamSpeak + VPS 2–4 vCPU |
|---|
| Membutuhkan isolasi hardware penuh, 500+ pengguna | Server dedicated, beberapa instans server virtual |
|---|
| Menginginkan panel terkelola + TeamSpeak | VPS dengan cPanel atau DirectAdmin |
|---|
| Memerlukan routing EU/US latensi rendah | Pilih lokasi datacenter VPS yang paling dekat dengan pengguna |
|---|
| Membutuhkan kehadiran web pendamping | Tambahkan Shared Web Hosting atau subdomain di VPS yang sama |
|---|
| Memerlukan domain kustom untuk alamat server | Registrasi Domain + DNS A record yang mengarah ke IP VPS |
|---|
Poin Teknis Utama
- Selalu jalankan TeamSpeak di bawah pengguna non-root yang khusus. Ini tidak dapat dinegosiasikan untuk layanan apa pun yang menghadap internet.
- File penanda `ts3server_license_accepted` harus ada sebelum daemon akan dimulai — titik kegagalan boot pertama yang umum.
- Gunakan `Type=forking` di unit systemd, bukan `Type=simple`. Skrip start mem-fork proses latar belakang; `simple` akan menyebabkan systemd salah melacak PID.
- Ambil token kunci hak istimewa dari log segera setelah startup pertama. Token dikonsumsi pada penggunaan pertama dan tidak dapat diregenerasi tanpa prosedur reset kata sandi manual.
- Port `9987/UDP` adalah satu-satunya port yang diperlukan untuk operasi suara dasar. `10011/TCP` dan `30033/TCP` bersifat opsional tergantung pada kasus penggunaan Anda.
- Cadangkan `ts3server.sqlitedb` secara terjadwal. Semua konfigurasi server tersimpan dalam satu file ini.
- Untuk penerapan produksi, batasi ServerQuery ke localhost atau VLAN manajemen — jangan pernah mengeksposnya secara publik tanpa allowlisting IP.
—
Pertanyaan yang Sering Diajukan
Berapa jumlah maksimum pengguna pada lisensi server TeamSpeak gratis?
Lisensi non-profit gratis mendukung hingga 32 slot bersamaan. Untuk penerapan yang lebih besar, TeamSpeak menawarkan lisensi tahunan untuk 64, 128, 256, atau 512 slot, serta "Activation License" slot tak terbatas untuk organisasi yang memenuhi syarat.
Bisakah saya menjalankan TeamSpeak Server di VPS 512 MB RAM?
Ya. Daemon TeamSpeak 3 Server mengonsumsi sekitar 25–40 MB RAM saat idle dan skalanya moderat dengan pengguna bersamaan. VPS 512 MB sudah cukup untuk komunitas di bawah 50 pengguna bersamaan, dengan ruang yang nyaman untuk OS dan proses sistem.
Bagaimana cara memperbarui TeamSpeak Server tanpa kehilangan konfigurasi saya?
Hentikan layanan dengan `systemctl stop teamspeak`, unduh tarball versi baru sebagai pengguna `teamspeak`, ekstrak dengan `–strip-components 1` ke direktori yang sama (hanya menimpa biner), kemudian mulai ulang layanan. Database `ts3server.sqlitedb` dan file konfigurasi `ts3server.ini` tidak ditimpa oleh proses ini.
Mengapa server TeamSpeak saya tidak terlihat di daftar server publik?
Secara default, server TeamSpeak tidak mendaftar ke daftar server publik. Untuk mengaktifkan listing, tetapkan `machine_id=` dan konfigurasikan `serverip` di `ts3server.ini`, kemudian aktifkan opsi listing publik melalui ServerQuery atau panel administrasi server klien. Pastikan port UDP `9987` dapat dijangkau dari internet.
Apakah lalu lintas TeamSpeak dienkripsi secara default?
Lalu lintas pensinyalan (pengaturan koneksi, obrolan, izin) dienkripsi melalui TLS. Data suara yang dikirimkan melalui UDP tidak dienkripsi secara default di TeamSpeak 3. Enkripsi suara dapat diaktifkan per saluran atau di seluruh server melalui pengaturan server, dengan biaya peningkatan kecil dalam penggunaan CPU. TeamSpeak 5 (saat ini dalam pengembangan) menggunakan enkripsi end-to-end secara default.
