ゲームサーバーの「起動/終了/再起動/状態確認」を実行できるdiscordbot
/gssc [command] [game]
command
には実行されるコマンドを記述します。
command |
実行される内容 | 例 |
---|---|---|
start |
サーバーを起動 | /gssc start valheim |
stop |
サーバーを終了 | /gssc stop valheim |
restart |
サーバーを再起動 | /gssc restart valheim |
status |
サーバーの状態 | /gssc status valheim |
list |
サーバーの一覧表示 | /gssc list |
game
には起動するゲームサーバーのaliasを記述します。
以下のようなjson形式で記述し、game_servers.json
としてGCP上のBUCKET_NAME
バケットに配置します。
{
"valheim": {
"name": "Valheim",
"instance_name": "gcp insrance name",
"zone": "asia-northeast1-b"
},
"minecraft-vanila": {
"name": "Minecraft Vanila",
"instance_name": "gcp insrance name",
"zone": "asia-northeast1-b"
}
}
Using discord developers.
ホームディレクトリ直下にゲームサーバーを配置予定のGCPプロジェクトから取得した、google-key.json
を配置してください。
中身はサービスアカウントの認証情報です。
必要に応じてGCPの該当プロジェクト上でサービスアカウントを作成し、Compute Engineの「起動/停止/状態取得」の権限とCloud Storageの「buckt閲覧」権限を付与してください。
.envファイル内に必要な情報を埋めてください。
CLIENT_TOKEN=ディスコードのトークン
BUCKET_NAME=game_servers.jsonを配置したバケット名
PROJECT_ID=GCPのプロジェクト名
config.json の中身を自身のBOTとサーバに合わせて修正してください。
{
"token": "ディスコードのBOT TOKEN",
"clientId": "アプリケーションID",
"guildId": "ディスコードのサーバID"
}
cd src
npm i
node deploy-commands.js
次のコマンドを実行すると、BOTが起動します。
npm run prod
また、start.sh
を実行してもBOTが起動します。
必要であれば、start.sh
をsystemd
などで起動してください。
[Unit]
Description=Node.js Service
After=network-online.target
Requires=network-online.target
[Service]
Type=simple
User=実行者のユーザー名
WorkingDirectory=srcディレクトリの絶対パス
ExecStart=start.shの絶対パス
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target