跳至內容

如何自行架設 TeamSpeak 伺服器

Table of Contents

本文將分享我自行假設 TeamSpeak 伺服器的經驗。

# 事前準備

首先,選擇一個適合的 VPS 提供商。由於語音聊天對於網路延遲非常敏感,因此最好選擇地理位置靠近你和你使用者的供應商。低於 100 毫秒是理想的延遲。

部署好 VPS 後,強化其安全性至關重要。可以參考我的先前文章來瞭解詳細步驟。

# 建立新使用者

為 TeamSpeak 建立一個專用的使用者以提升安全性。

sudo adduser teamspeak

你也可以在 adduser 後方加上 --disabled-login 參數。這個選項會禁止此使用者直接登入,使得必須從 root 等帳號切換過去。

接下來的步驟,請切換至 teamspeak 使用者。

su teamspeak

# 下載 TeamSpeak 伺服器

前往 官方下載頁面,找到最新版 Linux 伺服器的 URL。

使用 wget 下載套件。例如:

wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2

然後,解壓縮封存檔。

tar xvfj teamspeak3-server_linux_amd64-3.13.7.tar.bz2

# 同意授權並初次啟動

執行 TeamSpeak 前,我們必須建立一個特定檔案以表示同意授權協議。

touch .ts3server_license_accepted

首次執行時,我們需要產生一組權限金鑰 (privilege key)以便於授予你在新伺服器上的管理員權限。

./ts3server_startscript.sh start

完成後,複製所有輸出內容並妥善保存。最後一行顯示的權杖 (token) 就是你的權限金鑰。

# 防火牆設定

接下來,你需要在防火牆中開啟 99871001130033 連接埠。此處以 firewalld 為例。

sudo firewall-cmd --permanent --add-port=9987/udp
sudo firewall-cmd --permanent --add-port=10011/tcp
sudo firewall-cmd --permanent --add-port=30033/tcp
sudo firewall-cmd --reload

# 連線至你的伺服器

官方網站下載 TeamSpeak 客戶端。雖然之前執行的是 TeamSpeak 3 伺服器,但我們仍然可以使用新版的 TeamSpeak 6 客戶端連線。

使用 VPS IP 位址登入伺服器。當提示出現時,輸入先前儲存的權限金鑰以取得伺服器的管理員權限。

# [可選] 建立啟動腳本

為了確保 TeamSpeak 伺服器能在開機時自動啟動,並在崩潰時自動重啟,建議將其設定為 systemd 服務。

切換回 root 身分並建立一個服務檔案。

su root
vim /lib/systemd/system/teamspeak.service

複製並貼上以下內容,並將 [Your PATH] 修改為 TeamSpeak 的安裝路徑。

[Unit]
Description=Teamspeak Server Service
Wants=network.target

[Service]
WorkingDirectory=[Your PATH]
User=teamspeak
ExecStart=[Your PATH]/ts3server_minimal_runscript.sh
ExecStop=[Your PATH]/ts3server_startscript.sh stop
ExecReload=[Your PATH]/ts3server_startscript.sh restart
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

然後,啟用並啟動該服務。

systemctl enable teamspeak.service
systemctl start teamspeak.service

# [可選] 使用網域連線

透過 IP 位址連線可能不太方便。如果你擁有一個網域名稱,可以依照以下步驟進行設定。本範例將以 Cloudflare 為例,並使用 ts.example.com 作為網域名稱。

  1. A Record:

    • Type: A
    • Name: ts
    • Content: [你的 VPS IP 位址]
  2. SRV Record:

    • Type: SRV
    • Name: _ts3._udp.ts
    • Priority: 0
    • Weight: 5
    • Port: 9987
    • Target: ts.example.com