【ConoHa】VPNサーバー(CentOS)にGMODクライアントをインストールする話
いよいよ、レンタルしたサーバーにGMODのクライアントをインストールします。
ただ、今回金銭面の問題で、以前にインストール済みのサーバーで設定を進めたため、「記憶をたどりつつ、解説サイトの翻訳をする」形で執筆しております。
そのため、実際と違う部分あるかもしれませんので、何かありましたら、コメントください。
なお、本記事は以下のサイトを参考にしています。
原文(英語)が読める方はこちらを参照した方が確実かもです。
レンタルするサーバーのOSについて
まず、使用するOSについて前話では触れてなかったことについて補足。
ボクはCentOSしかわからないので、CentOSをつかっているんですが、バージョンについて一点。
CentOS9でインストールを試みた際、SteamCMDインストール時にエラーが出てました。ボクの操作ミスの可能性もありますが、CentOS7での運用を推奨します。実際、今回、GMODがうまく動いたのは、CentOS7だったし、ネット上の情報でも、大体の人はCentOS7でやってました。
ポート開放
まず、GMODで使うポートを開放します。結論から言うと、GMODで使用するポートは、起動コマンドによって自分で指定するため、どの番号でもかまいません。
ただし、デフォルトのポート番号が27015になっていますので、27015だとサーバーに入ってくる参加者がいちいちポート番号の指定しなくてもよいため、便利です。
(セキュリティ上の問題はわかりません。詳しい方いたらコメントください。)
ファイアウォールの設定を変更するには管理者権限が必要なので、suコマンドで管理者権限を得ます。(プロンプトが$から#に)
$su
Password:(パスワードを入力)
まずは、ファイアウォールを有効にします。(すでに有効にしている場合はこの操作は必要ありません。)
# systemctl start firewalld
次に、使用するポートを開放します。(デフォルトの27015を使っていますが変更してもかまいません)
# firewall-cmd --add-port=27015/tcp --permanent
# firewall-cmd --add-port=27015/udp --permanent
(tcpだけでもいいかもしれませんが、一応udpも開いてます。)
あと、これはボクが保険的にやったことなのでもしかしたら不要かもしれませんが、HTTPとHTTPSも開放しました。
# firewall-cmd --permanent --zone=public --add-service=http
# firewall-cmd --permanent --zone=public --add-service=https
追加した設定を反映させるためにファイアウォールをリロードします。
#firewall-cmd --reload
設定内容を確認しましょう。
#firewall-cmd --list-all
「services:」のところに「http」「https」
「ports:」のところに開放したポート番号があることを確認してください。
補足:追加したポート番号を閉じたい場合
以下のコマンドで開放したポートを閉じることができます。
ようするに、--addが--removeに代わっただけです。
ここから先は管理者権限いらないんで、「exit」して一般ユーザーに戻っていいです。(#が$に)
SteamCMDのインストール
基本的にSteamのクライアントをインストールするためには「SteamCMD」というソフトを使います。
最初に、SteamCMDを入れるディレクトリ(今回はSteamとしました)を作ります。
$ mkdir Steam
カレントディレクトリをSteamに移動します。
$ cd Steam
SteamCMDをダウンロードし、解凍します。
$ wget http://media.steampowered.com/client/steamcmd_linux.tar.gz
$ tar -xvzf steamcmd_linux.tar.gz
SteamCMDを起動するシェルスクリプト(Steamディレクトリ内にできる)を起動します。
$ ./steamcmd.sh
プロンプトが「Steam>」になれば成功です。
GMODとCS:Sのインストール
GMODのインストール
いよいよGmodクライアントをインストールします。
まず、anonymousでログインします。
Steam> login anonymous
つぎに、インストールするフォルダ(この場合、gmod_ds)を指定し、ダウンロード&インストールをします。
Steam> force_install_dir /home/Steam/gmod_ds/
Steam> app_update 4020 -validate
この4020っていうのが、GMODの番号と思っていてください。この番号がわかれば、他のSteamゲームもインストールできるので、この手順は覚えておくといいです。
ちなみに、この「app_update」コマンドは、クライアントをアップデートするのにも使えますので、覚えておいてください。
CS:Sのインストール
サーバーにCounter Strike:Sourceをインストールします。ボクはCS:Sを購入してるので問題ないですが、持ってないひとは購入してからの方がいいと思われます。(権利上のいかなる問題が発生しても当方は一切責任を持ちませんのであしからず)
GMOD同様、CS:Sを指定したディレクトリ(今回はcss_ds)インストールします。CS:Sの番号は232330です。
Steam> force_install_dir /home/Steam/css_ds/
Steam> app_update 232330 -validate
SteamCMDを終了します。
Steam> quit
補足:
なお、この作業でSteamディレクトリ内にgmod_dsやcss_dsができない場合(ボクはできなかった記憶があります)、事前にSteamディレクトリ内にあらかじめgmod_ds、css_dsを作っておくといいかもしれません。
# cd ~/Steam
# mkdir gmod_ds
# mkdir css_ds
CS:Sをマウントする
テキストエディタ(vim)を使って、GMODの設定ファイルを設定します。
$ vim ~/Steam/gmod_ds/garrysmod/cfg/mount.cfg
以下のようなテキストが開かれると思います。
//
// Use this file to mount additional paths to the filesystem
// DO NOT add a slash to the end of the filename
//
"mountcfg"
{
//"cstrike" "C:\mycssserver\cstrike"
//"tf" "C:\mytf2server\tf"
}
"cstrike"の前の//を削除(コメントアウトを解除)し、パスを指定します。
その結果、次のようになると思います。
//
// Use this file to mount additional paths to the filesystem
// DO NOT add a slash to the end of the filename
//
"mountcfg"
{
"cstrike" "~/Steam/css_ds/cstrike"
//"tf" "C:\mytf2server\tf"
}
設定を保存して終了します。
: wq
補足:vimの使い方
文字を変更するときは「I」キーを押して「INSERTモード」にします。
INSERTモード終了は「ESC」キー
保存/終了するときは、「:」キーを押して、以下のコマンドを打ちます。
: q(終了)#quit
: wq(保存して終了)#write and quit
サーバー設定ファイルの変更
vimでサーバー設定ファイルを変更します。
$ vim ~/Steam/gmod_ds/garrysmod/cfg/server.cfg
以下のようなテキストを貼り付け(または入力)します。
hostname "My Garrysmod Server"
sv_password ""
sv_allowdownload 0
sv_allowupload 0
sv_timeout 60log on
sv_logbans 1
sv_logecho 0
sv_logfile 1
sv_log_onefile 0sv_minrate 0
sv_maxrate 20000
sv_maxupdaterate 66
sv_minupdaterate 10//execute ban files
exec banned_ip.cfg
exec banned_user.cfg
貼り付けたら変更すべきは、hostname(GMODのリストに表示されるサーバー名)とsv_password(サーバーにログインするためのパスワード)です。
変更が終わったら、保存/終了します。
: wq
サーバーの起動
以下のコマンドでサーバーを起動します。この時、各種設定をパラメータとして渡します。
$ ~/Steam/gmod_ds/srcds_run -game garrysmod +gamemode terrortown +maxplayers 16 +map gm_flatgrass -port 27015
+gamemodeはゲームモードを指定します。
terrortownは「TTT(TTT2)」を表します。
+maxplayersはサーバーの最大参加人数を指定します。
+mapは起動するマップを指定します。
※gm_flatgrassはttt用のマップではないので、TTTでは遊べません。(武器がでないです)
-portは使用するポート番号を指定します。(前述のポート開放を見て下さい)
コレクションを指定する
使用するアドオンがある場合には、起動コマンドにコレクションをしてすると楽です。
$ ~/Steam/gmod_ds/srcds_run -game garrysmod +gamemode terrortown +maxplayers 16 +map ttt_lego -port 27015 +host_workshop_collection 2671741784
+host_workshop_collectionでコレクションをしてします。
※2671741784はボクらが公開しているTTT用のコレクションです。
Steam Workshop::【TTT2】ぎゃりーぱみゅぱみゅ公式レギュレーション
※ttt_legoはボクらがよく遊ぶマップです。
スチームアカウントを指定する
これは必須どうかわかりませんが、Steamアカウントを紐づけることもできます。ボクは一応このステップをしましたが、省略してもいいかもです。
以下のサイトでゲームサーバーアカウントを作成します。
Steam Community :: Steam Game Server Account Management
起動コマンドに+sv_setsteamaccountで発行されたトークンを記載します。
$ ~/gmod_ds/srcds_run -game garrysmod +gamemode terrortown +maxplayers 16 +map ttt_lego -port 27015 +host_workshop_collection 2671741784 +sv_setsteamaccount 発行されたトークン
起動用のシェルスクリプトを自作する
起動コマンドをいちいち入力するのがめんどうなので、ボクはシェルスクリプトを自作しました。ただし、Linux初心者の作ですので、その点はあらかじめご了承ください。
まず、シェルスクリプトを作ります。
$ vim ./gmod.sh
以下のようなスクリプトを入力します。
#!/usr/bin/bash
echo "■□■□■□■□■□■□■□■□■□■□■□■□"
echo ""
echo " ■■■ ■ ■■■ ■■■ ■ ■"
echo " ■ ■ ■ ■ ■ ■ ■ ■ ■"
echo " ■ ■■ ■ ■ ■■ ■■ ■"
echo " ■ ■ ■■■ ■ ■ ■ ■ ■"
echo " ■■■ ■ ■ ■ ■ ■ ■ ■"
echo ""
echo " ■■■ ■ ■ ■ ■ ■ ■ ■2"
echo " ■ ■ ■ ■ ■■■■ ■ ■ ■ ■"
echo " ■■■ ■ ■ ■ ■ ■ ■ ■ ■"
echo " ■ ■■■ ■ ■ ■ ■ ■"
echo " ■ ■ ■ ■ ■ ■ ■ "
echo ""
echo " GARRY PAMYU PAMYU SERVER "
echo " SINCE 2022 FEBRUARY"
echo ""
echo "■□■□■□■□■□■□■□■□■□■□■□■□"
echo ""#gamemode
#terrortown:TTTgmd=terrortown
#maxplayers
mpl=30
#workshop
wsh=2671741784
#default map
dmp=ttt_lego
if [ $# -eq 0 ]; then
sudo ~/Steam/gmod_ds/srcds_run -game garrysmod +gamemode $gmd -console -port 27015 +maxplayers $mpl +map $dmp +host_workshop_collection $wsh +sv_setsteamaccount スチームから発行されたトークンelse
echo "map:$1"
sudo ~/Steam/gmod_ds/srcds_run -game garrysmod +gamemode $gmd -console -port 27015 +maxplayers $mpl +map $1 +host_workshop_collection $wsh +sv_setsteamaccount スチームから発行されたトークンfi
※echo部分はフレーバーです。意味はまったくありません。
※前半部分のデフォルト設定で細かな設定を入力します。
※./gmod.shでデフォルトの設定での起動。
※./gmod.shのあとにスペースとマップ名を指定すると、マップのみ変更して起動します。
※シェルスクリプトは権限がないと動かないので以下のコマンドで権限を変更します。
$ chmod 755 gmod.sh
シェルスクリプトについては以下のサイトで勉強しました。
クライアントアップデート用のシェルスクリプト自作
同じく、クライアントを最新版にアップデートするやつです。
chmodも忘れずに。
!/usr/bin/bash
echo "gmod update..."
sudo ~/Steam/steamcmd.sh +login anonymous +force_install_dir ./gmod_ds +app_update 4020 validate +quit
echo "CS:S update..."
sudo ~/Steam/steamcmd.sh +login anonymous +force_install_dir ./css_ds +app_update 232330 validate +quit
サーバー設定を変更するシェルスクリプト
もはや怠惰の極み。パスを打つのもめんどくさい方向け。
GMODからマルチサーバーに入ってみる。
お気に入りに登録する
※「このアドレスをお気に入りに追加」を押します。
※ポート番号は27015の場合は省略してかまいません。
細かな役職の設定をする
基本的にF1キーで出てくる設定画面で各種設定はできる。
ただし、ULXコマンドを必要とする細かな設定(サイドキックディーグルの有無とか、ライカンスロープの能力とか)はサーバー側からコマンドを入力する必要があります。
通常のF10で出てくるコンソールからではなく、サーバーから手打ちしてやります。(ボクの場合だとTera-Termを使っているのでそっちから手打ちします。)
いかがだったでしょうか。
何分、Linux初心者かつ記憶を頼りに執筆してるので間違いあるかもしれません。
もしなにかありましたらコメントください。
なお、コメントは毎日チェックしてるわけではないので、お急ぎの方はTwitterからご連絡ください。
豆知識:Linuxのパスについてあれこれ
ほぼ自分のための備忘録ですが、Linux初心者の方のために。
個人的見解含むため、間違ってたらごめん。
./
カレントディレクトリ※内のファイルにアクセスするときのおまじない。
..
cd ..みたいにして使う。一つ上のディレクトリに行く。
~/
ホームディレクトリをあらわすおまじない。絶対パス大好きマンである筆者はよく使う。
※カレントディレクトリ
現在選択されているディレクトリ。相対パスで入力する場合には、このカレントディレクトリを起点に考える。cdコマンドで指定する。
豆知識:プロンプト
$とか#とかは、コンソール上のプロンプトを示しているので、入力する必要はないです。
$は一般ユーザー
#は管理者ユーザー
その他、SteamCMD使用時はSteam>って出る。
豆知識:ゲームモード名とマップ名
起動コマンドで使うゲームモード名とマップ名は、ワークショップで表示されている名前と若干違います。
調べるには、ゲームモードを選んで「新しいゲームを開始」から、調べたいマップを選んで、通常通りゲームを起動します。(シングルプレイヤーでもマルチプレイヤーでもなんでもいいです)
コンソール(F10)を開いて、緑色の文字列のブロックを探します。
Garry's Mod
asset://garrysmod/materials/vgui/ttt/loadingscreen/loading.vtf
terrortown #ゲームモード名
ttt_waterworld #マップ名
16 #最大プレイヤー数
76561198174104613 #SteamのID番号
この値を、起動コマンドにいれてやります。