TeamSpeak3(通称・TS3)は、IRCのようなボイスチャットです。

「IRCのような」というのは、Skypeなどのような会員登録して使うものと対比して、ということです。
自分のコンピュータに専用のソフトをインストールし、サーバのアドレスを指定して接続、同じサーバに接続している人同士がチャットできる、という仕組みなのですが、これ、IRCとそっくりだと思いませんか?

もちろんIRCと同じく、チャットするための利用者はこのページで解説する「サーバ用プログラム」のインストールは必要ありません。

このページでは、そのTS3のサーバプログラムをCentOS7にインストールします。
デーモンの管理をするのは、systemdです。systemdに登録してシステム起動時にデーモンが自動的に立ち上がるようにします。
firewalldで使うポート管理用のXMLファイルを設置し、必要なポートを開放します。

さらに、デフォルトではTS3はSQLiteにデータを保存しますが、ここではMySQL(MariaDB)にデータを格納するように設定します。クリエイターズネットワークでは他のサービスでもMySQLを使っていますので、管理するデータベースが増えても面倒ですし、データのバックアップがまとめてできるのでSQLiteではなくMySQLに保存先を変更しました。

次の環境を前提にした解説記事です。

  • CentOS7.1.1503 (64bit)
  • MySQL5.5
  • TeamSpeak3 3.0.11.3

TS3用ユーザーの作成・アーカイブのダウンロード

$ sudo useradd -r -m teamspeak -s /sbin/nologin
$ sudo su - teamspeak -s /bin/bash
$ wget <TS3のアーカイブURL>

TS3の公式サイトにあるダウンロードページから、「Linux」の「Server amd64」を選んでダウンロードします。ミラーサイトはどちらを選んでも構いません。

TS3ダウンロードページ

アーカイブ解凍・TS3の設定

$ tar zxf teamspeak3-server_linux-amd64-3.0.11.3.tar.gz
$ mv teamspeak3-server_linux-amd64 teamspeak3
$ cd teamspeak3
$ vi ts3server.ini
$ vi ts3db_mariadb.ini

machine_id=5
dbplugin=ts3db_mariadb
dbpluginparameter=ts3db_mariadb.ini
dbsqlpath=sql/
dbsqlcreatepath=create_mariadb/

各設定ファイルの詳しい項目については、解凍したファイルの「doc/server_quickstart.txt」に書かれています。

データベースのパスワードはmkpasswdコマンドなどを使ってランダムなものを生成するといいと思います。CentOS7の場合、yumでexpectパッケージをインストールすると使えるようになります。

また同じくデータベースの項目、「socket=」は空のままで問題ありません。

さて、しかしこれだけでは、ライブラリが足りないという旨のメッセージが表示され、起動することができません。ライブラリはTS3のパッケージの中に入っていますので、起動処理を行なうシェルスクリプトに手を入れてそのライブラリをリンクできるようにします。

$ vi ts3server_startscript.sh

/* 9行目を編集します。 */
-LIBRARYPATH="$(pwd)"
+LIBRARYPATH="$(pwd):$(pwd)/redist/"

これで、TS3本体の設定は完了です。試しに起動してみます。第2引数の形式がほかの多くのプログラムと違いますが、これで正常です。

$ ./ts3server_startscript.sh start inifile=ts3server.ini
  (中略)
$ ./ts3server_startscript.sh status
Server is running

正常に動作したでしょうか? 初回起動時には、管理者権限を取得するための情報(token)が表示されます。忘れずに保存しておきましょう。

FW解放とsystemdへの登録

仕上げとして、ファイアーウォールを開放しアクセスできるようにします。またシステムから動作を制御できるようにするため、systemdにサービスを登録します。
以下に、サンプルファイルを置いておきます。

[Unit]
Description=TeamSpeak3 - Voice Chat Server
Documentation=http://www.teamspeak.com/?page=teamspeak3
After=network.target

[Service]
User=teamspeak
Group=teamspeak
Type=forking
WorkingDirectory=/home/teamspeak/teamspeak3
PIDFile=/home/teamspeak/teamspeak3/ts3server.pid
ExecStart=/home/teamspeak/teamspeak3/ts3server_startscript.sh start inifile=ts3server.ini
ExecReload=/usr/bin/kill -HUP $MAINPID
ExecStop=/home/teamspeak/teamspeak3/ts3server_startscript.sh stop

[Install]
WantedBy=multi-user.target

$ sudo vi /etc/systemd/system/teamspeak3.service
$ sudo vi /etc/firewalld/services/teamspeak3.xml
$ sudo systemctl daemon-reload
$ sudo systemctl start teamspeak3
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --add-services teamspeak3 --permanent
$ sudo firewall-cmd --reload

システム起動時にTS3サーバを起動させるなら、sudo systemctl enable teamspeak3も実行します。

自分の端末にTS3クライアントをインストールし、自分のサーバにアクセスできたら完了です。