SteamCMDとConoHa VPSでゲームサーバーを建てる時のメモ
2024/1/20
CoreKeeperとPalWorldでゲームサーバーを建てる機会があったので、SteamCMDとコスパの良いConoHa VPSを利用した際のメモです。どちらかというと汎用的なメモなので、各種ゲームに特化はしてません。
ConoHa VPS
ConoHa VPSを使用しない場合はこの項目は読まなくて大丈夫です。
ConoHaでのセットアップはクリック等で簡単に終わるので言うまでも無いのですが、忘れないほうが良い設定としてセキュリティグループの設定があります。
コントロールパネル ▶ セキュリティ ▶ セキュリティグループ から設定をします。
セキュリティグループ + を押下したら、覚えやすい情報を入力して保存をします。
保存をするとセキュリティグループ一覧に追加されているので、追加したものをクリックして展開します。
下の方にある + をクリックして設定を更に追加します。
ゲームサーバーそれぞれに求められているポート情報を入力します。
パルワールドであれば、UDP:8211を開ける必要があるため、以下のように入力します。
自身がConoHaで作成したサーバーの管理ページを開き、ネットワーク情報からセキュリティグループの設定の鉛筆マークを押下します。
+マークを押し、先程追加したセキュリティグループを追加して保存をします。
これでConoHa VPS側での設定は終了です。結構忘れがちでConoHa特有な感じの操作でもあるので、しっかりやっておかないとサーバー側でポート開放してるのに接続出来ないといった沼にハマる場合があります。
SteamCMD
SteamCMDはDedicated Serverなどを建てるときに主に利用されるSteamのコマンドラインツールです。
公式のインストールガイドももちろんあります。
ゲームに関しては開発者がガイドを置いている場合もあります。
他の方のブログ記事で、VPSをセットアップしてからrootのままやっているものなどありますが、ゲームサーバーのプログラムがrootでの起動を許容していない場合などがあるので、ユーザー作成を別途してから実行したほうが良いです。
環境
今回はConoHa VPS上のUbuntu 20.04を操作しています。
また、ブラウザコンソールから操作するとゲームサーバー接続用のIDなどが表示される際にコピペが出来ずにしんどい思いをすることになるので、Tera Termなどターミナルソフトウェアを経由して接続するのをオススメします。(CoreKeeperでGameIDのコピーが出来ずしんどくなったので……)
別の手段として、そういった情報が静的ファイルで生成される場合は、WinSCPなどを利用してアクセスするのも悪くないです。
ユーザーの追加
sudo useradd -m steam
sudo passwd steam
sudoersへ追加(sudo出来るようにするため)
sudo visudo
root ALL=(ALL:ALL) ALL # 元々記述されている
steam ALL=(ALL:ALL) ALL # 追記
Ctrl+Xでvisudoを抜け、保存するか聞かれるのでyを押し、ファイル名指定になるのでそのまま変更せずEnterを押下します。
ユーザー切り替え
sudo -u steam -s
cd /home/steam
SteamCMDのインストール
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
SteamCMDからサーバーファイルのインストール
以下のようにワンライナーで書くことが出来ますが、steamcmdコマンド単体を打ってから対話的に進めることも出来ます。
また、サーバークライアントのアップデートも同じ手順です。
steamcmd +login anonymous +app_update <SteamAppId> validate +quit
steamcmd
Steam > login anonymous
Steam > app_update <SteamAppId> validate
Steam > quit
サーバークライアントは以下にインストールされます。
/home/steam/Steam/steamapps/common
SteamのAppIdの調べ方
SteamDBなどで検索するとすぐに調べることが出来ます。
例えばパルワールドであれば SteamDB上でPalworldと検索 すると、PalWorld Dedicated Server といった検索結果が出てきます。
CoreKeeperの場合はこちら Corekeeperの検索結果 CoreKeeper Dedicated Server
このページにあるAPP IDがSteamCMDで入力するAppIdに該当します。
Palworldのサーバであれば2394010、CoreKeeperであれば1963720
なので、先程のワンライナーは以下のような内容になります。
steamcmd +login anonymous +app_update 2394010 validate +quit
サーバーの起動
インストールディレクトリの.shファイルを動かします。
CoreKeeperの場合
cd ~/Steam/steamapps/common/Core\ Keeper\ Dedicated\ Server/
./_launch.sh
PalWorldの場合
cd ~/Steam/steamapps/common/PalServer/
./PalServer.sh
steamclient.soが無い系のエラー
サーバーディレクトリにlinux64というディレクトリがあるので、そこからsteamclient.soを必要な場所へコピーまたはシンボリックリンクを貼ります。
場所はサーバークライアントにもよるので適宜対応する必要があります。
Corekeeper
コピーするパターン
cp linux64/steamclient.so . # _launch.shのある場所で実行
PalWorld
シンボリックリンク貼るパターン
mkdir -p /home/steam/.steam/sdk64/
ln -s /home/steam/Steam/steamapps/common/PalServer/linux64/steamclient.so /home/steam/.steam/sdk64/steamclient.so
ファイヤウォールの設定
UDP:8211を開放したいのであれば以下のように入力します。tcpであれば25565/tcpのように入力。
sudo ufw allow 8211/udp
状態を確認します。
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8211/udp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8211/udp (v6) ALLOW Anywhere (v6)
systemdへの追加
自動で再起動したりしてくれるようにサーバー実行ファイルをserviceとして追加します。something-gameは適宜置き換えます。
sudo vi /etc/systemd/system/<something-game>.service
以下はCoreKeeperでのシンプルな設定の例なので、必要に応じて書き換えてください。
[Unit]
Description=Core Keeper Dedicated Server
Wants=network-online.target
After=network.target network-online.target
[Service]
Type=simple
ExecStart="/home/steam/Steam/steamapps/common/Core Keeper Dedicated Server/_launch.sh"
WorkingDirectory=/home/steam/Steam/steamapps/common/Core Keeper Dedicated Server
Restart=always
User=steam
[Install]
WantedBy=multi-user.target
systemctl系コマンド
デーモンのリロード
sudo systemctl daemon-reload
自動起動設定(新しくファイルを作成したとき)
sudo systemctl enable <something-game>.service
起動・再起動・停止
sudo systemctl start <something-game>.service
sudo systemctl restart <something-game>.service
sudo systemctl stop <something-game>.service
状態確認
systemctl status <something-game>.service
sudo journalctl -u <something-game>.service
困ったときは大体journalctlしてChatGPTに投げれば良いと思います。(投げやり)
本記事のサムネイルの画像はConohaVPSの美雲このはちゃんです。
再使用等は禁止されています。
©GMO Internet Group, Inc.