Steamのdedicated serverを立てる#3 ソフトインストール編

事前準備

SteamCMDはSteamが配布するソフトウェアのダウンロードとインストール、アップデートが行える。今回はいよいよダウンロードしてインストールするところまで実施する。構築環境の前提条件(推奨条件)を確認する。詳細は#1, #2を参照してほしい。

CPU Intel もしくは AMDの64bit 4コア 2.5GHz
メモリ 16GB
HDD 空き領域 100GB
ネットワーク 有線
Internetの回線速度は100Mbps
静的IPマスカレードできるルーター
グローバルIPは1つ
LAN内のホストIPはIPマスカレードするため固定にする
OS Windows 2016 Server もしくは2019
SteamCMD c:\steamcmd (初期セットアップは完了していること)
VC++ runtime VC++ 再頒布可能パッケージを一通りインストールする
2015, 2017, 2019, 2022
インストール先 c:\games\アプリ名
(フォルダ名に空白や日本語名を使わないこと)

 

インストールバッチのひな型

SteamCMDの初期セットアップを行うと、SteamCMD自身の最新化と必要な環境設定が自動で行われる。これにサーバーアプリのインストールおよびアップデートのバッチファイルを作成して日々の運用保守を簡易化したい。インストールバッチのひな型の参考元はInsurgencyのフォーラムで掲載されたサンプルだったと思う。c:\steamcmd\sample.bat

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
:: DEFINE the following variables where applicable to your install
SET STEAMLOGIN=anonymous
SET INSBRANCH=アプリケーションID
:: Note, the missing qotation marks, these need to be wrapped around the entire "+app_data......"
SET InsPath=C:\games\インストール先
SET STEAMPATH=C:\steamcmd
:: ____________________________________________________
echo.

echo Dir: %InsPath%
echo Branch: %INSBRANCH%
echo.
echo Key "ENTER" To Start Download
pause
%STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %InsPath% +"app_update %INSBRANCH%" validate +quit
echo .
echo Your Empyrion is now up to date
echo key "ENTER" to exit
pause

ひな型の説明

anonymous インストール時にanonymous(匿名)でダウンロード可能な場合に使う。
ゲーム所有が条件のアプリの場合はゲーム所有のSteamアカウント名+空白+パスワードを記入する
アプリケーションID SteamのアプリケーションID #2で調べたアレだ
インストール先 サーバーアプリのインストール先フォルダ名
フォルダ名に空白や日本語名を入れないこと

これらの条件で、例えばAstroneerをインストールするバッチファイルは下記のようになる。これをc:\steamcmd フォルダにAstoroneer.batなどのわかりやすい名前で保存する。

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
:: DEFINE the following variables where applicable to your install
SET STEAMLOGIN=anonymous
SET INSBRANCH=728470
:: For stable use 728470
:: Note, the missing qotation marks, these need to be wrapped around the entire "+app_data......"
SET InsPath=C:\games\Astroneer
SET STEAMPATH=C:\steamcmd
:: ____________________________________________________
echo.
echo You are about to update Astroneer
echo Dir: %InsPath%
echo Branch: %INSBRANCH%
echo.
echo Key "ENTER" To Start Download
pause
%STEAMPATH%\steamcmd.exe +login %STEAMLOGIN% +force_install_dir %InsPath% +"app_update %INSBRANCH%" validate +quit
echo .
echo Astroneer is now up to date
echo key "ENTER" to exit
pause

インストールバッチの実行

あらかじめインストール先フォルダは作成しておく。例えば c:\games\Astroneer

次に作成したインストールバッチをc:\steamcmdの下でDOS窓もしくはPowerShellで実行すると、インストール先フォルダに展開される。あとは各サーバーアプリのコンフィグレーションを行うことになる。

アップデートも同じバッチファイルで可能だ。ただし、アップデートを行う場合は強制的にファイルを書き換えられてしまうので、サーバーアプリは事前に停止させておく必要がある。このインストールバッチを実行すると、差分チェックし異なるようならアップデートを行う。

余談だが、実行時の権限はAdministratorsグループに所属したユーザーがよいかと思う。Linuxなどはsteamcmdユーザーを作るなどが推奨されるが、Windowsの場合はたまにサービス登録するアプリがあり、管理者権限が要求されることがある。

セキュリティ設定

自宅サーバーで公開する場合、ルーター設定とWindows ファイアウォールの受信設定を変更しインバウンドパケットを当該サーバーに振り向ける必要がある。

ルーターの場合はポートフォワーディングや静的IPマスカレード、ポートマッピングなどと呼ばれる機能を設定する。語弊あるので使いたくないが、ポート開放という奴だ。意味はInternet側のグローバルIP宛で到着したパケットのうち、指定ポートであればLAN側のNAT配下にあるPCにパケット転送するという機能だ。ルーター毎に設定方法が異なるが、転送先のPCのIPアドレスに対し、TCP, UDPのポート番号範囲を指定する。したがって転送先のPCは固定IPである必要がある。DHCPで固定IP化してもよいし、DHCPの配布範囲外で設定してもよい。ポートマッピング

Windows ファイアウォールの設定はインバウンドパケット(受信)を許可することで行う。”コントロールパネル\システムとセキュリティ\Windows ファイアウォール”から詳細設定を選んで”受信の規則”で新しい規則をTCPとUDPごとに作成する。それぞれ定義するのはTCP UDP両方をひとつの操作で作成できないからだ。プロパティは”全般”で定義名を決めて、”プロトコルおよびポート”で受信ポート番号の範囲を指定する。画面どおりにいうと、プロトコルの種類をTCPかUDPのいずれかを選択し、ローカルポートに特定のポートを選んで許可するポート番号の範囲を指定する。リモートポートはすべてのポートのままでよい。アプリによってUDPのみやTCPとUDPの両方必要などあるので、それに従って作成する。

firewall

 

 

 

 

 

 

 

 

 

 

firewall2