さくらのゲーミングVPS【第1回】初心者でも簡単!さくらのVPSを使ったVALHEIMマルチサーバー構築

アーリーアクセスながら680万本も売れた「VALHEIM」というアクションRPGをご存知でしょうか? クラフトと探索を組み合わせたオープンワールドサバイバルゲームで広大な世界を舞台に装備作成、拠点建築に航海、ボスモンスターの狩猟をソロプレイ・マルチプレイで遊ぶことができるゲームです。

 

大人気の本ゲームですがマルチプレイで遊ぶ場合はホスト役には高スペックPCが不可欠、ホストPCは連続稼働が必要、難解なブロードバンドルーターのポート開放作業も必要という難点があります。

そこでVPSを使った快適なマルチプレイができるVALHEIMマルチサーバー(専用サーバー)を構築する方法を初心者の方にでも分かり易くご紹介します。
弊社さくらのVPSを使って説明をいたしますが、インストールに必要なコマンド操作はどのVPSでも同じですので必要に応じて読み替えて下さい。
VPSを使ったことがない入門者の方にも分かるよう解説いたしますのでご安心下さい。

なお、本稿ではVALHEIM Ver0.156.2(2021/6/29)版。LinuxGSM Version: v21.2.4を元に執筆しており将来のアップデートにより内容に相違が発生しうる点についてはご容赦下さい。

必要スペック


ここによるとCPU:4コア以上、メモリ:2GB以上、ストレージ:2GBを必要スペックとしておりますのでさくらのVPS 4GBをお勧めしますが、筆者がテストしたところさくらのVPS 2GBでも動作いたしました。

VALHEIMサーバーは非公式な方法ながらデータを丸ごとお引越しすることが可能ですので、最初は安価なVPSで構築するのも良いでしょう。
さくらのVPSは支払い方法をクレジットカード払いとすることで2週間の試用も可能で期間内に解約した場合は料金が発生しませんので、サーバー選定に活用して下さい。

OSの再インストールとファイアウォール設定

サーバーを選定したらまずOSの再インストールとファイアウォール設定(ポート開放)を行います。
VPSのコントロールパネルから契約サーバーをクリックし「OS再インストール」をクリックします。

 

OSは「Ubuntu 20.04 amd64」を指定し、「新しい管理ユーザーのパスワード」に任意の値を入力します。
「ID:ubuntu、パスワード:ここで入力した値」は忘れないよう控えておきます。・・・①

 

ファイアウォール設定(ポート開放)はiptablesを使ってサーバー側で行う方法パケットフィルタを使ってプラットフォーム側で行う方法がありますが、ここでは簡単なパケットフィルタを使います。画面下部の「パケットフィルタ設定」から設定を行います。

 

VALHEIMではTCP2456・2457・2458とUDP2456・2457・2458の6つのポート開放が必要です。
「接続可能なポートを追加」、「カスタム」の順にクリックしてプロトコルの種類とポート番号を入力して設定していきます。
許可する送信元IPアドレスはすべて許可で構いません。
6つのポートすべてを設定すると以下の表示となりますので右下の「OS再インストール」をクリックします。

 

無事にサーバーが「稼働中」となれば下準備は完了です。

シリアルコンソール操作

ここからシリアルコンソールを使いますので、コマンドの意味を解説しつつコピー&ペーストで同じよう進められるよう丁寧に解説していきます。
なお、コマンドは複数行をある程度まとめて掲載しますがコピー&ペーストする場合は一行ずつペーストしてエンターを押すようにして下さい。

まずは「コンソール」、「シリアルコンソール(β)」の順にクリックします。

 

コンソール画面が表示されるのでエンターを押し、①で控えたID(ubuntu)を入力してエンター、パスワードを入力してエンターを押してログインします。

 

ログインに成功したら最初に以下のコマンドで管理者権限を持つrootに変更します。
再度パスワードを要求されるので先ほどと同様にubuntuアカウントのパスワード(①)を入力します。
なお、rootに変更されると表示が「$」から「#」へと変わります。

sudo su -

 

次にOS上にユーザーアカウント「vhserver」を作成し、「vhserver」にパスワードを設定していきます。
New passwordと表示されますので任意の文字列を入力してエンターを2回行います。
「ID:vhserver、パスワード:ここで入力した値」は忘れないよう控えておきます。・・・②

useradd -m vhserver
passwd vhserver

 

gpasswdコマンドでユーザーアカウント「vhserver」にsudoの権限を与えたらrootでの作業は完了です。
suコマンドで作成した「vhserver」へ早速切り替えて表示を「#」から「$」へ戻します。

sudo gpasswd -a vhserver sudo
sudo su - vhserver

 

次に必要なコンポーネントたちをまとめてインストールします。
下記コマンドを入力してエンターを押し、sudo に必要なパスワード(②)を入力してエンターを押します。

sudo dpkg --add-architecture i386; sudo apt update; sudo apt install -y curl wget file tar bzip2 gzip unzip bsdmainutils python util-linux ca-certificates binutils bc jq tmux netcat lib32gcc1 lib32stdc++6 libsdl2-2.0-0:i386 steamcmd

 

stemcmdのインストール画面が表示されますのでライセンス内容を確認のうえ → を押し「Ok」にカーソルを合わせてエンターを押します。

 

ライセンス内容に同意する場合、↓ を押し「I AGREE」にカーソルを合わせ → を押し「Ok」にカーソルを合わせてエンターを押します。

 

次にゲームサーバー管理ツールの「LinuxGSM」のダウンロードとインストールを行います。
下記コマンドを入力してエンターを行うとインストールが始ますが、完了まで少し時間がかかるのでここで小休憩すると良いでしょう。

wget -O linuxgsm.sh https://linuxgsm.sh && chmod +x linuxgsm.sh && bash linuxgsm.sh vhserver
./vhserver auto-install

 

LinuxGSMのインストールが終わるとこのように表示されます。

 

続いて下記コマンドで設定ファイルを開きサーバー設定を行っていきます。

nano /home/vhserver/lgsm/config-lgsm/vhserver/vhserver.cfg

 

↓ を押してカーソルを一番下に移した後に、設定ファイルの文末に以下の一文を追記します。

servername="サーバー名"
serverpassword="サーバー接続パスワード"
gameworld="Dedicated"
public="1"

各項目の意味は以下の通りです。
「servername」タイトル画面から接続サーバー選択時に表示する名前。5文字以上、半角英数のみを推奨。
「serverpassword」このサーバーに接続する際に必要なパスワード。5文字以上、半角英数のみを推奨。
「gameworld」ワールド情報データファイルに使われるファイル名。
「public」1:サーバーリストに表示する。0:サーバーリストに表示しない(IPアドレス:ポートで指定したログインのみ)。
ここで入力したサーバー名とサーバー接続パスワードは忘れないよう控えておきます。・・・③

サーバー名とサーバー接続パスワードを任意の半角英数に変え、ダブルクォーテーション " で囲って入力して下さい。
半角スペースは使うことができましたが記号類はなるべく使わない、gameworldとpublicは上記の値をそのまま使うことをお勧めします。
本稿では以下の値を入力して説明を続けていきます。

servername="SAKURAVPS World"
serverpassword="test"
gameworld="Dedicated"
public="1"

 

設定ファイルの文末に書き足したらCtrl+O、エンターで保存しCtrl+Xでnanoを終了させます。

 

以上で遊べるようになりましたが、VALHEIMはサーバーとPCのバージョンが違うとログインできなくなる仕様のためアップデートが発生すると遊べなくなってしまいます。
また、何らかの理由でVPSサーバーに再起動が発生するとLinuxGSMを立ち上げ直さないとマルチプレイで遊ぶことができません。
そこでLinuxGSMとVALHEIMの自動アップデートとOS起動時のLinuxGSM自動起動設定をcronを使って施します。
下記コマンドでcronの編集画面を出します。

crontab -e

 

エディタ選択では最も簡単なnanoを使いますので「1」を入力してエンターを押します。

 

crontabの画面が出ますので「↓」を押して画面を一番下までスクロールさせ文末に以下の一文を追記し、Ctrl+O、エンターで保存しCtrl+Xでnanoを終了させます。
コードの意味は上から順番に以下の通りです。
・毎時15分にVALHEIMをアップデート
・AM2:00にLinuxGSMをアップデート
・AM2:30にVALHEIMのバックアップを作成
・OS起動時にLinuxGSMを起動する。

15 * * * * /home/vhserver/vhserver update > /dev/null 2>&1
0 2 * * * /home/vhserver/vhserver update-lgsm > /dev/null 2>&1
30 2 * * * /home/vhserver/vhserver backup > /dev/null 2>&1
@reboot /home/vhserver/vhserver start > /dev/null 2>&1

 

 

ついでにOS(ubuntu)の自動更新も設定しておきます。
今度はsudoを付けて実行しますので必要に応じてubuntuアカウントのパスワード(①)も入力します。

sudo crontab -e

 

こちらもエディタ選択では「1」を入力してエンターを押しcrontabの画面で文末に以下の一文を追記し、Ctrl+O、エンターで保存しCtrl+Xでnanoを終了させます。
コードの意味は上から順番に以下の通りです。
・AM3:30にパッケージ一覧リストを更新し、パッケージを更新
・AM4:00に再起動
・AM4:30に更新により不要になったパッケージを削除し、パッケージキャッシュを削除

30 3 * * * apt update && apt upgrade -y
0 4 * * * reboot
30 4 * * * apt autoremove && apt clean

 

以上でVALHEIMサーバーの準備が整いました。満を持してVALHEIMサーバー起動コマンドを使いましょう。

/home/vhserver/vhserver start

 

正常に起動できた場合はこのように表示されます。

以上でサーバー設定は完了です!

 

なお、余談ですが自動バックアップにより作成されるバックアップファイルはgzip形式で圧縮されて下記ディレクトリに最新のものが最大4個格納されます。
/home/vhserver/lgsm/backup

しかしバックアップからの復元コマンドがLinuxGSMに用意されていないため、復元作業(解凍とファイルの差し替え)は手動で行う必要がある点に注意して下さい。

VALHEIMの日本語化方法

VALHEIMはデフォルトでは全て英語ですが日本語に対応しています。
これからマルチサーバーにお友達を誘う方のために日本語化の手順についても図示して補足します。

まずはタイトル画面で「Setting」を選択し、「Misc」をクリックします。

 

Languageの欄の「>」を数回クリックして「日本語」にして「OK」を選択、その後でゲームを再起動すれば日本語表示へと切り替わります。

VALHEIMマルチサーバーへのログイン方法

念のためマルチサーバーへログインする手順についても補足します。
ワールド選択画面で右上の「ゲーム参加」をクリックします。

 

サーバー選択画面が出るのでまずは下部のボタンで表示対象を「フレンド」から「コミュニティ」へ変更します。
次に画面下部のウィンドウに先ほど設定した「サーバー名」(③)を入力して待つと、しばらくして自分のマルチサーバーが表示されます。
表示された自分のサーバーをクリック後、右下の「接続」ボタンをクリックします。

 

ログインパスワードを要求されるので先ほど設定した「サーバー接続パスワード」(③)を入力してエンターを押します。
正しいパスワードを入力すればマルチサーバーでのゲームを始めることができます。

任意seed値のワールドでマルチサーバーを遊ぶ

VALHEIMの世界はseed値を元に生成される仕組みとなっており、意図的に快適なワールドで遊びたい場合は気に入ったseed値を入力してワールドを生成します。
ソロプレイではワールド生成時にseed値を入力可能ですが、Ver0.156.2現在マルチサーバーではseed値がランダムで固定となっておりseed値を入力することができません。
任意seed値のワールドかつマルチサーバーで遊ぶことはローカルでワールドを生成しワールド情報ファイルをマルチサーバーへ移植することで可能となりますので、オマケとしてその手順を解説します。
なお、ローカル作業を行うPCはWindows10を前提に解説を進めていきます。

まずVALHEIMのワールド選択画面で「新」をクリックしワールド作成画面を出し、名前に「Dedicated」をシードに「希望するseed値」を入力して「完了」をクリックします。

 

作成したワールドに普通にソロプレイでのログイン(スタート)してすぐにログアウトします。これでワールド情報ファイルが生成されます。

 

次にPC上で以下のフォルダを開きます「アカウント名」は普段PCを使う時のアカウント名が入るため環境毎に変わります。
C:\Users\アカウント名\AppData\LocalLow\IronGate\Valheim\worlds

Dedicated.dbとDedicated.fwlをコピーしてCドライブ直下にペーストしておきます。
余談ですがDedicated.dbはワールド情報ファイル、Dedicated.fwlはゲーム進捗フラグ管理ファイルでこのファイルは二つ一組になっています。
拡張子がoldのファイルはVALHEIMが自動作成するバックアップファイルで、20分おきにDedicated.dbとDedicated.fwlがoldファイルとして複製されるようです。

 

次にLinuxGSMを一旦停止させるため再度コンソールでVPSを操作します。
必要に応じてID「vhserver」とパスワード(②)を入力し、以下のコマンドでLinuxGSMを停止させます。

/home/vhserver/vhserver stop

 

LinuxGSMを停止させるとこのような表示となります。

 

次にDedicated.dbとDedicated.fwlの送信先となる「VPSのIPアドレス」を控えます。・・・④
さくらのVPSの場合はコントロールパネルからIPアドレスを確認することができます。
Dedicated.dbとDedicated.fwlをCドライブ直下にコピー、LinuxGSMを停止、VPSのIPアドレスを確認の3つが済んだら下準備は完了です。

 

ここからPC上のPowerShellを使って差し替え作業を進めていきます。
スタートメニューから「ファイル名を指定して実行」を選び「PowerShell」と入力して「OK」をクリックます。

 

PowerShellが起動したら以下のコマンドを入力してエンターを押し、ディレクトリトップへ移動します。

cd /

 

次にscpコマンドでDedicated.dbファイルをVPSへ送信します。[IPアドレス]の部分は先ほど確認したVPSのIPアドレス(④)に置き換えて下さい。

scp Dedicated.db vhserver@[VPSのIPアドレス]:/home/vhserver/.config/unity3d/IronGate/Valheim/worlds/

 

Are you sure you want to continue connecting(接続して良いですか?)と聞かれるのでYesと手入力してエンターを押します。

 

vhserverのパスワードを要求されるのでパスワード(②)を入力してエンターを押します。

 

アップロード進捗率が100%となり、無事にアップロード完了すると、このような表示となります。

 

Dedicated.fwlも同様の手順でアップロードを済ませます。

scp Dedicated.fwl vhserver@[VPSのIPアドレス]:/home/vhserver/.config/unity3d/IronGate/Valheim/worlds/

 

※WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!が出た場合
「以前にこのVPSにPowerShellで接続したことがあるPC」から「その後OS再インストールを行ったVPS」へPowerShellで接続しようとした場合、
PowerShell側で前回自動保存していたキーとVPSサーバーのキーが一致しないためこのエラーが出ます。

 

この場合は下記コマンドでPowerShell側で保存しているキーを削除すると同エラーは出なくなり繋がるようになります。

ssh-keygen -R [VPSのIPアドレス]

 

以上でPowerShellを使ったワールドの移植は完了です。シリアルコンソールからLinuxGSMを起動させて新しいワールドを認識させましょう。

/home/vhserver/vhserver start

VALHEIMサーバーのお引越し方法

VALHEIMは非公式な方法ながらDedicated.dbとDedicated.fwlを差し替えることでサーバーの引越しが可能です。
サーバーが重いなどの理由でより高性能なVPSへ引っ越す場合は旧サーバーからDedicated.dbとDedicated.fwlをダウンロードし、新サーバーへアップロードすれば良いわけです。
アップロード方法は先ほど説明しましたので、ここではダウンロード方法を解説します。

VPSサーバー上のDedicated.dbファイルをローカルPCへダウンロードしたい場合はPowerShellで下記の通りです。
この場合はDドライブ直下にファイルが保存されますので、保存先を変更する場合はコマンドの末端を変更して下さい。

scp vhserver@[VPSのIPアドレス]:/home/vhserver/.config/unity3d/IronGate/Valheim/worlds/Dedicated.db d:

 

vhserverのパスワードを要求されるのでパスワード(②)を入力してエンターを押します。ダウンロードが完了すると、このような表示となります。

 

Dedicated.fwlも同様の手順でダウンロードを行い、VALHEIMをセットアップした新VPSへアップロードすればお引越しは完了です。

マルチサーバー作成が上手く行かなかった方へ

上手く行かなかった方のためにファイアウォール設定とシリアルコンソール操作(手順2・3に相当)を全自動でやってくれるスタートアップスクリプトをご用意いたしました。
さくらのVPSでしか使えませんが奥の手としてこちらをお試し下さい。

さくらのVPSコントロールパネルから「スクリプト」を選び「VALHEIM」で検索してスクリプトを選択します。

 

「スクリプトを使用」をクリックし、どのサーバーに使用するかを選んだら「スクリプトを利用」をクリックします。

 

新しい管理ユーザー(ubuntu)のパスワードを入力します。
「ID:ubuntu、パスワード:ここで入力した値」は忘れないよう控えておきます。・・・①

 

スタートアップスクリプト設定に設定値を入力します。
「ID:vhserver、パスワード:ここで入力した値」(②)と「サーバー名、サーバー接続パスワード」(③)は忘れずに控えておきます。

 

あとは画面下部の「OS再インストール」をクリックし、確認画面で再度「OS再インストール」をクリックするだけで完了です。

 

大体6分後にはVALHEIMサーバーがゲーム内に表示されるようになります。
表示されない場合は左下のくるくるボタンを押して再検索をかけると表示されます。

参考リンク

最後に本記事を執筆するにあたり参考にしたサイトを記載します。

 

各著作物の引用についてはこちらに準拠して執筆いたしました。

 

ここまで長々とお付き合い頂き誠にありがとうございました。本稿が皆様のお役に立てば幸いです。