Skip to content
/ 7dtd Public

7Days to DieのマルチプレイサーバーをAWS上に構築・Discordから操作できるようにした。

Notifications You must be signed in to change notification settings

Ry0xi/7dtd

Repository files navigation

7 Days to Die Dedicated Server On AWS

7 Days to Dieのマルチプレイサーバーを、AWS上に構築する。

Links

Directories

  • cdk: CDK関連
    • bin/cdk.ts: CDKのメイン
    • lib/*-stack.ts: スタックの設定
  • files: EC2上で利用するスクリプトなど
  • functions: Lambda関連

Usage

初期設定

bun install

事前にインストールガイドを参考に、必要なツールをインストールしてください。

コードフォーマット

コードの修正

bun run fix

コードの確認のみ

bun run check

[SHOULD] エディターの保存時の設定でPrettierとESLintを実行するのを推奨します。

デプロイ

cdkディレクトリでcdkコマンドを実行します。

cd ./cdk && cdk deploy --all

デプロイ前にLambda関数の依存関係をインストールする必要があります。

cd ./functions && npm i

デバッグ

サーバーの起動・停止

  • EC2 Spot FleetでEC2インスタンスの条件を指定
  • Spot Fleetのターゲットキャパシティを増減させることによってサーバーの起動停止を行う

CLIでサーバーの起動・停止

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/work-with-spot-fleets.html#modify-spot-fleet

起動

aws ec2 modify-spot-fleet-request --spot-fleet-request-id sfr-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --target-capacity 1

停止

aws ec2 modify-spot-fleet-request --spot-fleet-request-id sfr-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --target-capacity 0

サーバー設定ファイルの更新

サーバーの設定を変えるにはEC2インスタンス上の/mnt/game/ServerFiles/sdtdserver.xmlを更新します。

設定ファイルは手動更新せずにS3に保管して、それをサーバーから取得します。(自動化はしていない)

  1. プロジェクトルートに、現バージョンのデフォルト設定ファイル(sdtdserver-default.xml)があるので、任意の場所にXMLファイルとしてコピー
  2. 1で作成したファイルで設定を変えて保存
  3. ./discord-utils/put-server-config-file-to-s3.shを実行してS3に設定ファイルをアップロード(コマンドの引数はスクリプトファイルを参照)
  4. EC2インスタンスにSSHで接続して、/var/lib/scripts/utils.shupdate_server_configを実行する
  5. ゲームサーバーを再起動(Dockerコンテナを再度立ち上げる)

memo

7dtd GameServerの参考

Discord Botの参考

Discordbot特有のリクエスト処理とゲームサーバーの操作処理があるので、前者を処理するLambdaから後者を処理するLambdaを呼び出すようにして責務を切り分ける実装になっている。

About

7Days to DieのマルチプレイサーバーをAWS上に構築・Discordから操作できるようにした。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published