njo

Valheimの専用サーバ(LinuxGSM)で複数インスタンスを生成する

LinuxGSMを使って立ち上げたValheimのサーバは、インスタンスという単位でプロセスが立ち上がります。このインスタンスは複数立ち上げる事が可能です。
複数のValheimサーバを立てたい場合、強いスペックのマシンを用意すればそのマシン内にいくつものValheimサーバを立てられます。
サーバの検証をする時にも便利かと思います。メインで友達と遊ぶためのインスタンスを常時起動しつつ、もう一つ別の検証用のインスタンスを立ち上げて色々試したり。 LinuxGSMは、そのような複数インスタンスを立ち上げる簡単で管理しやすい方法を提供しているので、おすすめです。

njo.hatenablog.com

複数インスタンスを立ち上げる方法の公式ドキュメントはこちら。

docs.linuxgsm.com

公式ドキュメントにも書かれているように、複数のインスタンスを立ち上げる方法は、2種類あります。
一つは、各インスタンスごとに完全に別のファイルを用意してディレクトリや実行ユーザを分けてしまう方法です。各インスタンスごとにバリバリにMODなどでカスタマイズしたい場合はこちらを選びます。
Valheimは今のところそこまでサーバをカスタマイズする事はないと思うので、もう一つの方法、ファイル群を共有しつつ最小限のコンフィグファイルの分割のみで複数インスタンスを立ち上げる方法を選ぶのが良いと思います。これが「Single Installation with Multiple Instances」です。

手順

前提として、~/vhserver ですでに一つサーバが起動している状態とします。この最初のインスタンスは、 ~/vhserverスクリプトファイルを利用して、 ~/lgsm/config-lgsm/vhserver 配下のコンフィグを読み込んで起動しています。
追加でもう一つのインスタンスを作ってみましょう。

2個目のインスタンス用のファイルを生成する

~/linuxgsm.sh は簡単にもう一つのインスタンスを生成できるようになっています。下記のコマンドを実行します。

./linuxgsm.sh vhserver

実行すると Installed Valheim server as vhserver-2 と表示されます。すでに一つのインスタンスが作成されていることを認識して、 -2 とインクリメントした数字を自動的に付与して別のインスタンスを良い感じに生成してくれます。
これにより、 ~/vhserver とは別に ~/vhserver-2 が作成されたので、 ~/vhserver-2 details で様子を見てみましょう。 また、このvhserver-2インスタンス用の設定ファイル ~/lgsm/config-lgsm/vhserver/vhserver-2.cfg も生成されました。

2個目のインスタンス用の設定ファイルを編集する

一つのマシン内で複数のサーバを立ち上げるので、最初のインスタンスと2個目のインスタンスはポートが被っては当然起動できません。ポートをデフォルトから変更しつつ、必要な項目も編集しましょう。
例えばこんな感じ。

~/lgsm/config-lgsm/vhserver/vhserver-2.cfg

##################################
####### Instance Settings ########
##################################
# PLACE INSTANCE SETTINGS HERE
## These settings will apply to a specific instance.
servername="test002"
serverpassword="testpass"
gameworld="test002"
port="2458"

最初のインスタンスはデフォルトで、2456, 2457で立ち上がっていると思います。適当に2458とかにしておきましょう。
VPSクラウドサービスやLinuxファイアウォールで、UDP2458, 2459を開放するのを忘れずに!

2個目のインスタンスを立ち上げる

インスタンスを立ち上げてみます。

./vhserver-2 start

問題なく立ち上がってるか確認してみましょう。

./vhserver-2 details
./vhserver-2 monitor

あとは、crontabに設定したジョブがあると思いますが、あれにもvhserver-2用の設定追加をしましょう。

おまけ

4GBだと2つ立ち上げるだけでメモリカツカツ。

f:id:njo:20210221222719p:plain