SpaceEngineers専用サーバーをLinuxで管理 ~DockerもDiscordで管理~

こんにちはRcatです。
最近はまっているパルワールドも落ち着ついてきました。
実は、パルワールドの前は”Space Engineers”というタイトルをやっていました。
公式ではWindowsしかサーバーが無いようですが、調べるとDockerというのを使ってLinuxで立ち上げている例があり、Linuxでの立ち上げができました。
というわけで次の段階として、私自作の管理ツールと連携してDiscordを使って、みんなで管理できるようにしちゃいましょう。
本記事は下記汎用管理ツールでSpace Engineersサーバーをセットアップするための個別記事となります。


事前準備

環境

今回対象とするのは次の環境です。
OS : Linux (Ubuntu)
CPU : N100
MEM : 16GB
ハードウェアの詳細は次の記事をご確認ください。

サーバーをセットアップ

下記を参考にDockerを使ったサーバーを構築しておく

https://qiita.com/xx0vlucifer0xx/items/2c84537b67a19b156ec8

管理ツールのセットアップ

準備ができたら私オリジナルの管理ツールをセットアップしていきます。
この汎用管理ツールを使うことで、Discordのボットから指示を受け付けることができます。

上記の記事からツールを配布していますので、ダウンロードしてください。
また、一通り読んでいただき、サーバーの定義方法などは理解した前提でこの先進めていきます。

ダウンロードして展開したものを任意のフォルダーに格納してください。
この中で絶対に必要なのがpyファイルとHTMLになります。それ以外はなくても大丈夫です。

実行ユーザーにdockerの実行権限を与える

セットアップしたサーバーを実行しようとすると既存のユーザーでは実行できなかった。
sudo無しで実行できるように管理ツールを実行するユーザーに対してグループを追加しておき実行権限を与えておく。
こうすることでsudo無しで実行できるようになる

sudo usermod -aG docker ユーザー名

start.sh

ここから先上記記事を読了済みで理解している前提です。
また、紹介するスクリプトは管理ツールに同梱済みです。

起動スクリプトの紹介です。
二重起動の防止処理の後に、セットアップしたサーバーの起動スクリプトから必要な行だけ抜き出したものです。
一番上の"stat.sh"は後で紹介しますがサーバーの起動状態を判別するものです。
二重起動の防止処理のファイルはツールがサーバーの起動を判定するのに使うので必須です。

update.sh

不要です。起動時に毎回自動で確認するようです。

stop.sh

サーバーを停止させるスクリプトです。
起動状態チェックとステータスファイルの削除にこちらも必要な部分だけ抜き出したような感じです。

stat.sh

サーバーの起動状態をチェックするスクリプトです。
今回のdockerは起動後にプロンプトが戻ってくるので、実行行の後にステータスファイルの削除では終了の判定ができません。
そこで、別途スクリプトで稼働状態をチェックしてステータスファイルの生成を行います。

実行方法

下記記事の操作方法をご確認ください。


情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。