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 - steam
SteamCMD をインストール
sudo add-apt-repository multiverse; sudo dpkg --add-architecture i386; sudo apt update
sudo apt install steamcmd
7d2d サーバのインストール
引き続き steam ユーザで SteamCMD を起動
steamcmd
インストール先のディレクトリを設定
force_install_dir /home/steam/7d2d_server
匿名で Steam にログイン
login anonymous
7 Days to Die 専用サーバをインストール
ダウンロードに 3 億年掛かるので気長に待つ
app_update 294420
SteamCMD を終了
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.xml
Telnet でサーバの稼働状況が確認できる
telnet localhost 8081
telnet <VM ExternalIP> 8081
Web 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 - steam
zip ファイルを解凍するため、unzip をインストールする
sudo apt install unzip
Mod をダウンロードするディレクトリを作成し、それをカレントディレクトリにする
mkdir ~/modfiles; cd ~/modfiles
各 Mod ファイルをダウンロード
wget -O SMXcore.zip https://github.com/Sirillion/SMXcore/archive/refs/heads/main.zip
wget -O SMXhud.zip https://github.com/Sirillion/SMXhud/archive/refs/heads/master.zip
wget -O SMXmenu.zip https://github.com/Sirillion/SMXmenu/archive/refs/heads/master.zip
wget -O SMXui.zip https://github.com/Sirillion/SMXui/archive/refs/heads/master.zip
ダウンロードした zip ファイルを解凍
unzip SMXcore.zip
unzip SMXhud.zip
unzip SMXmenu.zip
unzip 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/Mods
cp -rp SMXhud-master/SMXhud /home/steam/7d2d_server/Modscp -rp SMXhud-master/ZMXhudCP /home/steam/7d2d_server/Mods
cp -rp SMXmenu-master/SMXmenu /home/steam/7d2d_server/Mods
cp -rp SMXui-master/SMXui /home/steam/7d2d_server/Modscp -rp SMXui-master/ZMXuiCP /home/steam/7d2d_server/Mods
Mod ファイルが規定の階層に配置されたことを確認
ls -la /home/steam/7d2d_server/Mods
サーバを開始する
/home/steam/7d2d_server/startserver.sh -configfile=serverconfig.xml
Note
専用サーバの設定項目
以下のページにて、各設定項目の概要を記載
サーバのシャットダウン
Telnet から shutdown
コマンドを実行し、ゲームサーバをシャットダウンすることが出来る
telnet localhost 8081
telnet <VM ExternalIP> 8081
shutdown
設定変更などをした後、初回と同様のコマンドでサーバを起動することができる
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 Game
Web Dashboard の利用
Web Dashboard からコンソールを利用する場合、ユーザ登録が必要
インゲームコンソールで以下コマンドを実行し、表示されるウィンドウに従って Web ユーザ登録を行う
createwebuser
管理者権限の付与
インゲームコンソールや Web Dashboard から上級コマンドを実行したい場合、管理者権限と権限レベルが必要
Telnet から管理者権限を管理、操作することが出来る
権限レベルは 0
が最も高く、明示されていないプレイヤーは 1000
として扱われる
プレイヤー名で追加・削除を行う場合は、対象のプレイヤーがサーバにログインしている必要がある
Telnet で接続
telnet localhost 8081
telnet <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.conf
vm.max_map_count=262144
sudo 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