Overview
Google Cloud を触ってみたいので、試用のため貰える $300 で 7D2D サーバを建ててみる
この試用クレジットは Vultr と違って 90 日間保つ(2023/11 現在)
Architecture
-
7 Days to Die ゲームバージョン
Alpha 21.1 (b16)
リリースノート -
Google Compute Engine VM インスタンスの構成
東京リージョンはじわ高いが今回はタダなので使っていく
Column Value リージョン asia-northeast1 (東京) ゾーン asia-northeast1-a マシンファミリー 汎用 シリーズ E2 マシンタイプ e2-standard-4(4 vCPU、2 コア、16 GB メモリ) OS Ubuntu OS バージョン Ubuntu 22.04 LTS x86/64, amd64 jammy image built on 2023-10-30 ブートディスクの種類 バランス永続ディスク ディスクサイズ 20GB
Flow
前提として、Google Cloud アカウントが作成されていること
Google Cloud Console を開き、任意の名称でプロジェクトを作成し、Compute Engine API を有効化しておく
仮想マシンの作成
VPC ファイアウォールルールの追加
接続に必要な FW ルールを用意しておく
Google Cloud Console の検索窓から VPC ネットワーク を選択
default ネットワークに以下の FW ルールを追加
| Column | Value |
|---|---|
| 名前 | 任意のルール名 |
| トラフィックの方向 | 上り |
| 一致したときのアクション | 許可 |
| ターゲット | 指定されたターゲットタグ |
| ターゲットタグ | 任意のタグ名 |
| ソースフィルタ | IPv4 範囲 |
| 送信元 IPv4 範囲 | 0.0.0.0/0 |
| プロトコルとポート | 指定したプロトコルとポート |
| TCP | 8080-8082, 26900 |
| UDP | 26900-26903 |
VM インスタンスの作成
Compute Engine > VM インスタンス を選択
インスタンスを作成 をクリック
構成 を選択
ブートディスクの変更から、OS とディスク容量を変更
詳細オプション > ネットワーキング > ネットワークタグ に、
FW ルールにターゲットタグとして設定した タグ名 を設定
作成をクリック
ステータスが ✓ になったら、VM の作成は完了
サーバのインストール
SteamCMD のインストール
作成した VM インスタンスに接続する
Google Cloud の VM インスタンス一覧から、SSH を選択しブラウザコンソールを起動
作業用ユーザを作成し、パスワードを設定
sudo useradd -m steam -s /bin/bash -G sudosudo passwd steam作成した steam ユーザに変更
sudo su - steamSteamCMD をインストール
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt updatesudo apt install steamcmd7d2d サーバのインストール
引き続き steam ユーザで SteamCMD を起動
steamcmdインストール先のディレクトリを設定
force_install_dir /home/steam/7d2d_server匿名で Steam にログイン
login anonymous7 Days to Die 専用サーバをインストール
ダウンロードに 3 億年掛かるので気長に待つ
app_update 294420SteamCMD を終了
quit(上記を一括で実行する用)
steamcmd +force_install_dir /home/steam/7d2d_server +login anonymous +app_update 294420 +quitサーバの起動
7d2d サーバの設定
インストールされた 7D2D のディレクトリに移動
cd /home/steam/7d2d_server任意の設定に変更
nano serverconfig.xml下記の設定をしておけば、Web dashboard からもコンソールの利用が出来る
| Option | Values | Description |
|---|---|---|
| WebDashboardEnabled | true | Enable the web dashboard |
| EnableMapRendering | true | Enable rendering of the map to tile images while exploring it. This is used e.g. by the web dashboard to display a view of the map. |
7d2d サーバの起動
サーバを起動
初回起動時はワールド作成に 3 万年かかるため、気長に待つ
./startserver.sh -configfile=serverconfig.xmlTelnet でサーバの稼働状況が確認できる
telnet localhost 8081telnet <VM ExternalIP> 8081Web dashboard オプションを有効にしていた場合、
以下のアドレスで外部から Web dashboard に接続できる
http://<VM ExternalIP>:8080/ゲームクライアントで ゲームに参加する > IP に接続 から、
VM インスタンスの 外部 IP と、ポート(デフォルトは26900)を設定し、
クライアントからサーバを検索できるようにすることで、他の人もサーバに参加できるようになる
Mod の追加(オプション)
Mod 関連のファイルは主に <Game directory>/Mods (/home/steam/7d2d_server/Mods) 以下に格納される
詳しい Mod のインストール・設定方法は各 Mod 配布元で確認すること
以下手順では、UI 拡張 Mod の SMXcore と SMXhud、SMXmenu、SMXui を追加する
これらはサーバ・クライアントの両方に Mod が導入されている必要があるため注意
ゲームサーバが停止されている状態で、Mod の追加を行う
steam ユーザに変更
sudo su - steamzip ファイルを解凍するため、unzip をインストールする
sudo apt install unzipMod をダウンロードするディレクトリを作成し、それをカレントディレクトリにする
mkdir ~/modfiles; cd ~/modfiles各 Mod ファイルをダウンロード
wget -O SMXcore.zip https://github.com/Sirillion/SMXcore/archive/refs/heads/main.zipwget -O SMXhud.zip https://github.com/Sirillion/SMXhud/archive/refs/heads/master.zipwget -O SMXmenu.zip https://github.com/Sirillion/SMXmenu/archive/refs/heads/master.zipwget -O SMXui.zip https://github.com/Sirillion/SMXui/archive/refs/heads/master.zipダウンロードした zip ファイルを解凍
unzip SMXcore.zipunzip SMXhud.zipunzip SMXmenu.zipunzip SMXui.zip不要になった zip ファイルを削除
rm -rf *.zip解凍した Mod ファイルから、Mod 本体を Mods ディレクトリにコピー
cp -rp SMXcore-main/SMXcore /home/steam/7d2d_server/Modscp -rp SMXcore-main/0-Quartz /home/steam/7d2d_server/Modscp -rp SMXhud-master/SMXhud /home/steam/7d2d_server/Modscp -rp SMXhud-master/ZMXhudCP /home/steam/7d2d_server/Modscp -rp SMXmenu-master/SMXmenu /home/steam/7d2d_server/Modscp -rp SMXui-master/SMXui /home/steam/7d2d_server/Modscp -rp SMXui-master/ZMXuiCP /home/steam/7d2d_server/ModsMod ファイルが規定の階層に配置されたことを確認
ls -la /home/steam/7d2d_server/Modsサーバを開始する
/home/steam/7d2d_server/startserver.sh -configfile=serverconfig.xmlNote
専用サーバの設定項目
以下のページにて、各設定項目の概要を記載
サーバのシャットダウン
Telnet から shutdown コマンドを実行し、ゲームサーバをシャットダウンすることが出来る
telnet localhost 8081telnet <VM ExternalIP> 8081shutdown設定変更などをした後、初回と同様のコマンドでサーバを起動することができる
sudo su - steam/home/steam/7d2d_server/startserver.sh -configfile=serverconfig.xmlゲームデータの保存先
サーバが開始されると、ホームディレクトリ下の .local ディレクトリ配下にゲームデータが保存される
ゲームネームディレクトリ(以下の例ではMy Game)配下のデータを削除すると、そのゲームデータは削除される
また、serverconfig.xml で GameName を変更すると、新しいゲームが作成される
新しいゲームを始める際、容量に不足がなければ古いゲームデータを削除する必要はない
.local └ share └ 7DaysToDie └ Saves ├ PREGEN10k │ └ My Game │ ├ Player │ ├ Region │ └ main.ttw ├ profiles.sdf └ serveradmin.xmlなお、上記例での Windows ローカルホストでの保存先は以下のようになる
対応するディレクトリにコピーすれば、データの移管が可能
C:\Users\{username}\AppData\Roaming\7DaysToDie\Saves\PREGEN10k\My GameWeb Dashboard の利用
Web Dashboard からコンソールを利用する場合、ユーザ登録が必要
インゲームコンソールで以下コマンドを実行し、表示されるウィンドウに従って Web ユーザ登録を行う
createwebuser管理者権限の付与
インゲームコンソールや Web Dashboard から上級コマンドを実行したい場合、管理者権限と権限レベルが必要
Telnet から管理者権限を管理、操作することが出来る
権限レベルは 0 が最も高く、明示されていないプレイヤーは 1000 として扱われる
プレイヤー名で追加・削除を行う場合は、対象のプレイヤーがサーバにログインしている必要がある
Telnet で接続
telnet localhost 8081telnet <VM ExternalIP> 8081-
Admin ユーザの追加
Terminal window admin add <name / entity id / platform + platform user id> <level> -
Admin ユーザの削除
Terminal window admin remove <name / entity / platform + platform user id> -
Admin ユーザの一覧を表示
Terminal window admin list
Error
mmap(PROT_NONE) failed でサーバが異常終了する
朝起きたらゲームサーバが停止していたため、
7d2d_server/7DaysToDieServer_Data/ 以下の
output_log__yyyy-MM-dd__HH-mm-ss.txt からログを確認
mmap(PROT_NONE) failed で異常終了していたことを確認
デフォルトの vm.max_map_count 値 65530 が低すぎて足りなくなったらしい
下記コマンドで、一時的に上限値を増やす
この場合、インスタンスの停止を行うと、再起動時にはデフォルトの値に戻る
sudo sysctl -w vm.max_map_count=262144もしくは、/etc/sysctl.conf ファイルに追記して値を更新する
sudo nano /etc/sysctl.confvm.max_map_count=262144sudo sysctl -p- Bug - [solved][ il2cpp android] mmap(PROT_NONE) failed - Unity Forum
- Linux 版の Rust サーバーが mmap(PROT_NONE) failed で落ちる - Chase The Core
- パラメーター “max_map_count” とは何ですか? サーバーのパフォーマンスへの影響はありますか? - Red Hat Customer Portal
- 2.2. 永続的なチューニングパラメーターの設定 Red Hat Enterprise Linux for Real Time 7 | Red Hat Customer Portal
Ref
- 7 Days to Die | The Survival Horde Crafting Game
- SteamCMD - Valve Developer Community
- 7 Days to Die Dedicated Server - Valve Developer Community
- 7Days To Die Ubuntu を用いたサーバの建て方 気まま研究所
- GCP で無料の Minecraft サーバを立ててみた
- SIGSEGV - Bug Pool - 7 Days to Die
- ufw で複数ポートを許可する設定をするには | エクセルソフト ブログ
- 7 Days to Die サーバーをインストール (Ubuntu 18.04 LTS) | ほげぴよ.com
- Linux でユーザー追加(adduser/useradd) | Ryoma’s Blog
- 7 Days to Die - Linux Server Management
- Google Cloud の Cloud Firewall を徹底解説! - G-gen Tech Blog
- Steam Community :: Guide :: Installing Linux dedicated server for 7 days to die
- How to create a admin user for dashboard - General Support - 7 Days to Die