CentOS 7 に TeamSpeak サーバーをインストールする方法
TL;DR
CentOS 7 に TeamSpeak 3 サーバーをインストールして systemd サービスとして起動する手順を解説します。必要な依存関係の導入、専用ユーザー作成、アーカイブの展開、起動スクリプト/systemd ユニットの設定、基本的なセキュリティとトラブルシューティングのヒントを含みます。
概要
TeamSpeak は VOIP(Voice Over Internet Protocol、インターネット経由の音声通信)サーバーソフトウェアです。オンラインゲーム、教育、ビジネス会議などで広く使われています。TeamSpeak は 2001 年に最初にリリースされ、その後も開発が続いています。本稿では CentOS 7 環境に TeamSpeak 3 サーバーを導入する手順を具体的に示します。
重要な用語(1 行定義)
- VOIP: インターネット経由で音声を送受信する技術。
前提条件
- 最小限構成の CentOS 7 サーバー
- root 権限(root で操作することを前提に書かれています。sudo ユーザーなら sudo -i を実行してください)
重要: 公開サーバーで運用する場合はファイアウォールと SELinux の設定、運用ポリシーを必ず検討してください。
ベースシステムの更新
パッケージとリポジトリを最新化します。
yum -y update
更新が完了したら、依存関係をインストールします。
依存関係のインストール
TeamSpeak が正常に動作するために必要なパッケージをインストールします。
yum -y install nano wget perl tar net-tools bzip2
TeamSpeak 用ユーザー追加
TeamSpeak サーバープロセスを専用ユーザーで実行すると、システム上の他プロセスと分離できます。ホームディレクトリを /opt/teamspeak に設定してユーザーを追加します。
adduser teamspeak -d /opt/teamspeak
上記コマンドにより teamspeak ユーザーが作成され、ホームディレクトリが /opt/teamspeak になります。
TeamSpeak のインストール
TeamSpeak は主要 Linux 向けに事前ビルドされたアーカイブを提供しています。まずアーカイブをダウンロードします(例はバージョン 3.0.13.8)。最新のダウンロードリンクは公式ダウンロードページを参照してください。
wget http://dl.4players.de/ts/releases/3.0.13.8/teamspeak3-server_linux_amd64-3.0.13.8.tar.bz2
ダウンロードしたアーカイブを展開します。
tar xvf teamspeak3-server_linux_amd64*.tar.bz2
展開されたファイルを TeamSpeak ユーザーのホームディレクトリへ移動します。
mv teamspeak3-server_linux_amd64/* /opt/teamspeak
インストール用アーカイブと展開ディレクトリを削除してクリーンアップします。
rm -rf teamspeak3-server_linux_amd64*
アプリケーションファイルの所有権を teamspeak ユーザーに設定します。
chown -R teamspeak: /opt/teamspeak
これで TeamSpeak のファイルは配置されました。
TeamSpeak の起動
TeamSpeak は付属の起動スクリプトで開始・停止できます。teamspeak ユーザーに切り替えてサーバーを起動します。
su - teamspeak
./ts3server_startscript.sh start inifile=ts3server.ini
サーバーが正常に起動すると、次のような出力が表示されます(初回起動時にはサーバークエリアカウント情報や admin アカウント情報が出力されます)。
[teamspeak@centos ~]$ ./ts3server_startscript.sh start inifile=ts3server.ini
Starting the TeamSpeak 3 server
TeamSpeak 3 server started, for details please view the log file
[teamspeak@centos ~]$
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Account created
loginname= "serveradmin", password= "4CQJv1kq"
------------------------------------------------------------------
停止は次のコマンドで行います。
./ts3server_startscript.sh stop
出力例:
[teamspeak@centos ~]$ ./ts3server_startscript.sh stop
Stopping the TeamSpeak 3 server done
teamspeak ユーザーから抜けて root に戻るには exit を実行します。
systemd サービスの設定
手動でスクリプトを実行する代わりに systemd サービスユニットを作成すると、起動・停止・自動起動設定が容易になります。新しいユニットファイルを作成します。
nano /lib/systemd/system/teamspeak.service
次の内容をファイルに書き込みます(そのままコピペしてください)。
[Unit]
Description=TeamSpeak Server Service
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/teamspeak/
ExecStart=/opt/teamspeak/ts3server_startscript.sh start inifile=ts3server.ini
ExecStop=/opt/teamspeak/ts3server_startscript.sh stop
User=teamspeak
Group=teamspeak
PIDFile=/opt/teamspeak/ts3server.pid
Restart=always
RestartSec=9
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=teamspeak
[Install]
WantedBy=multi-user.target
ファイル保存後に systemd をリロードしてサービスを開始します。
systemctl daemon-reload
systemctl start teamspeak
systemctl enable teamspeak
systemctl status teamspeak
ファイアウォールとポート
TeamSpeak のデフォルトポートは主に UDP/TCP を使用します。環境に応じてファイアウォールで以下ポートを許可してください(ポートは変更可能です)。
- UDP: 9987(音声用)
- TCP: 10011(ServerQuery)
- TCP: 30033(ファイル転送)
firewalld を使う例:
firewall-cmd --zone=public --add-port=9987/udp --permanent
firewall-cmd --zone=public --add-port=10011/tcp --permanent
firewall-cmd --zone=public --add-port=30033/tcp --permanent
firewall-cmd --reload
注意: NAT 環境やクラウドプロバイダのセキュリティグループも忘れずに設定してください。
SELinux とパーミッション
CentOS のデフォルト設定で SELinux が有効な場合、/opt/teamspeak 配下の実行に問題が出ることがあります。必要であれば SELinux のコンテキストを調整するか、運用ポリシーに沿って許可を与えてください。簡易的には一時的に permissive に切り替えて動作確認を行うことがありますが、本番では適切なポリシーを作成してください。
getenforce
setenforce 0 # 一時的に無効化(本番では推奨しない)
セキュリティ強化(推奨事項)
- TeamSpeak の起動ユーザーを最小権限にする(本手順はすでに実施)。
- 最低限必要なポートのみを開放する。
- サーバーの定期的な OS セキュリティ更新を行う。
- 管理用パスワードは初回出力後に必ず変更する。
- ログ監視(/opt/teamspeak/logs)とディスク容量監視を設定する。
トラブルシューティング
- ログを確認: /opt/teamspeak/logs/ にログファイルがあります。まずはそこを確認してください。
- ポートが競合している場合: netstat や ss コマンドで 9987/10011/30033 の使用状況を確認します。
ss -ltnp | grep -E "9987|10011|30033"
- サービスが起動しない: systemctl status teamspeak と journalctl -u teamspeak でエラーメッセージを確認。
- 権限エラー: chown -R teamspeak: /opt/teamspeak を再確認。
よくある原因と対処
- ポートをファイアウォールで閉じている -> 開放する
- アーカイブの展開先が不適切 -> /opt/teamspeak 配下に正しくファイルがあるか確認
- SELinux 制約 -> 一時的に permissive にするかポリシーを調整
代替アプローチ
- Docker コンテナでの運用: 公式/コミュニティ製の TeamSpeak コンテナイメージを使うと環境依存が少なく、分離管理が容易になります。
- 仮想マシンや LXC コンテナでの分離運用: ホスト影響をさらに小さくできます。
- マネージドサービス: 自分で運用せずにマネージドホスティングを利用する方法もあります。
メリット・デメリットの概略
- 直接インストール: パフォーマンス良、管理は自分で行う必要あり。
- Docker: デプロイが容易、永続ボリュームとネットワーク設定に注意。
運用チェックリスト(役割別)
- システム管理者:
- OS とパッケージの更新をスケジュール
- ファイアウォールとバックアップを設定
- systemd ユニットの監視
- サービス管理者:
- TeamSpeak の設定(ts3server.ini)のバックアップ
- 管理アカウントの管理とローテーション
- ログ(/opt/teamspeak/logs)のローテーション
- セキュリティ担当:
- アクセスログの監視
- 不要なポートの閉鎖
テストケース / 受け入れ基準
- サーバー起動: systemctl start teamspeak 後、Active (running) となること。
- ポート確認: UDP 9987 がリッスンされていること。
- クライアント接続: TeamSpeak クライアントから接続し音声チャネルに入れること。
- ログ確認: エラーが残っていないこと(最新ログを確認)。
アップグレードとバックアップのヒント
- アップグレード前に ts3server.ini とデータディレクトリ(/opt/teamspeak)をバックアップ。
- バイナリの置き換え後、所有権とパーミッションを再確認する。
まとめ
このガイドでは CentOS 7 に TeamSpeak 3 サーバーをインストールし、systemd で管理する手順を説明しました。基本的なセキュリティ、トラブルシューティング、運用の観点もカバーしています。実運用時はログ監視とセキュリティ更新を習慣化してください。
FAQ
Q1: TeamSpeak のデータ(ユーザー・チャネル設定)はどこに保存されますか? A1: 一般的に /opt/teamspeak 配下にバイナリとデータが格納されます。設定ファイルや DB(SQLite 等)を含むディレクトリをバックアップしてください。
Q2: CentOS 7 で SELinux を無効化しても大丈夫ですか? A2: 一時確認では可能ですが、本番環境では適切なポリシーを設定して SELinux を有効にして運用することを推奨します。
Q3: Docker 化した場合の注意点は? A3: 永続ボリュームのマウントとホスト側の UDP ポート公開、ファイルパーミッションの調整が必要です。
(ファイルとログの場所の例)
- バイナリ/データ: /opt/teamspeak
- ログ: /opt/teamspeak/logs