VALHEIMを無料で短期運用するためのレンタルサーバーの立て方

Game,IT

話題だからと始めたVALHEIMですが、予想以上に面白くてハマってしまいました。
この手のゲームをフレンドと楽しむために必要となるのが、レンタルサーバーです。

レンタルサーバーを利用する際に考える必要があるのが、費用とスペックですよね。VALHEIMはまだアーリーアクセスということもあり、あまり長くはやりそうにはないと思いました。そこで、レンタルサーバーには短期間に費用をかけずに運用できる Google Cloud Platform(以下、GCP) の VMインスタンスを利用しました
このGCPを利用する方法がとても良かったので、GCPでレンタルサーバーを立てる方法や、サーバーへの参加方法について解説したいと思います。

主に下記の人向けの記事になります

  • 自宅サーバーは嫌
  • できれば無料で運用したい
  • それなりのスペックのサーバー
  • コマンドラインで操作ができる

Google Cloud Platform について

GCPは、Googleが提供しているクラウドサービスの総称です。そのサービスの一つとして、サーバーを立てることができるサービスがあります。GCPは、初期費用は必要なく、「従量課金制」のサービスになります。

GCPの新規契約時には、「90 日間$300分の無料クレジット」がついてきます。こちらを利用することで、費用をかけずに運用サーバーを立てることができます。今回利用するプランの場合、1ヶ月$31.38(安めの設定で$9.41)で運用できるので、$300分のチケットを費う前に90日間の期限がくるかと思います。

約1週間ほど運用したところ、約120円/日だったので、1ヶ月3600円くらいになりそうです。平日は3人で約3時間ほど、休日はもう少しやっていました。
無料枠が終わっても続けたい場合は、安めの設定にすると良さそうです。

それではやり方を説明していきます。

GCPにValheim用のサーバーを構築

GCP利用登録をする

GCPの利用には、下記が必要になります。

  • Googleアカウント
  • クレジット カードまたは銀行口座

これらを用意して、Google Cloud Platform にアクセスします。
無料で開始をクリックし、Googleアカウントでログインします。必要事項を入力し、コンソール画面が表示されるところまで進みます。

VMインスタンスの作成

VALHEIMをインストールするためのサーバー(VMインスタンス)を作成します。

Compute Engine > VMインスタンスをクリックする

初めての場合は、Compute Engine APIを有効化する画面が表示されるので、有効にするをクリックする

有効化が完了する(下記画面が表示される)まで待つ(約一分ほど)。有効化後、インスタンスを作成をクリックする

インスタンス情報を入力する

  • 名前: 任意の名前
  • リージョン: asia-northeast1(東京)
  • ゾーン: asia-northeast1-b

ブートディスクを設定する。まずは、変更をクリックする

ブートディスクの設定を行う前に、VALHEIMのサーバーを動かす最低限のスペックを確認すると

引用: Valheim | LinuxGSM_

となっています。そのため、ブートディスクを下記のように設定し、選択をクリックします。

  • オペレーティングシステム: Ubuntu
  • バージョン: Ubuntu 16.0.4 LTS

費用を節約したい人は、プリエンプティブル VMをオンに設定します

これをオンにすることで、値段は1/4くらいになります。ただし、インスタンスが停止される可能性があるみたいです。後から変更できないようなので、無料枠後も続ける可能性がある場合はオンにしておいた方がいいかもしれません。

プリエンプティブル VM は、通常のインスタンスよりはるかに 低価格 で作成、実行できるインスタンスです。ただし、他のタスクがリソースへのアクセスを必要とする場合、Compute Engine がこのインスタンスを停止(プリエンプト)する可能性があります。プリエンプティブル インスタンスは Compute Engine の余剰のキャパシティを利用する機能であり、使用できるかどうかは利用状況に応じて異なります。

引用: プリエンプティブル VM インスタンス  |  Compute Engine ドキュメント  |  Google Cloud

プリエンプティブル VMをオンにしない人は、下記は読み飛ばして下さい。

管理をクリックしてアコーディオンメニューを開く
可用性ポリシーのプリエンプティブをオンにする

一番下の作成をクリックして、インスタンスを作成します。

完了すると、下記画面が表示されます。

ファイアウォールの設定

クライアント(VALHEIMのゲーム)からサーバに参加できるように、ファイアウォールの設定をします。

VPCネットワーク > ファイアウォールをクリックする

ファイアウォール ルールを作成をクリックする

必要な情報を入力し、作成をクリックする

  • 名前: (任意)
  • 説明: (任意)
  • ソースIPの範囲: 0.0.0.0/0
  • Protocols and ports
    • Specified protocols and ports にチェック
    • tcp: 2456-2457,27015-27030,27036-27037
    • udp: 2456-2457,4380,27000-27031,27036

tcpとudpは、2456-2457だけでもいいかもしれません。

ゲームのインストール

GCPでVMインスタンス作成後、ゲームのインストールや起動・終了などを行うために、SSH接続をできるようにしていきます。今回はMacのターミナルからSSH接続する手順で説明します。
コマンドラインに慣れていない方にとっては難しい操作になるかと思います。Windowsの方やコマンドラインに慣れていない方は、こちらの記事が参考になるかもしれません。
GCPのCompute Engine インスタンスにSSH接続する – ゆったりWeb手帳

ssh接続設定

新しいSSH 認証鍵を作成する

ssh-keygen -t rsa -f ~/.ssh/<sshキーの名称> -C <ユーザー名>

秘密鍵の権限を読み取り専用にする

chmod 400 ~/.ssh/<sshキーの名称>

公開鍵の作成

SSH 認証鍵の公開鍵を出力する

cat ~/.ssh/<sshキーの名称>.pub

公開鍵の登録

GCPコンソールから公開鍵を登録します。
参考: GCPに共通鍵を追加する手順まとめ – Qiita

ナビゲーションメニュー > Compute Engine > メタデータをクリックする

SSH 認証鍵のタブを選択し、SSH 認証鍵を追加 をクリックする

作成しておいた公開鍵(<sshキーの名称>.pub)の内容をコピーし、こちらの欄に貼り付けて保存をクリックします。

SSHのポート番号の変更

デフォルトのポート番号の場合、不正アクセスのターゲットにされる可能性があるので変更しておくことをお勧めします。
ただし沼にハマりやすいところではあるので、SSHについてあまり詳しくはわからないよ!という方は、ひとまずスルーしておいた方がいいかと思います。遊べる環境が整った後に、チャレンジしてみるのがいいかもしれません。その際は、万が一に備えて戻せるように設定は覚えておいて下さい。
参考:
Google Cloud PlatformのGCEのsshのポート番号の変更方法 | 85’s life
GCEインスタンス構築方法 SSHポート番号変更し、接続まで|Naoki Takahashi|note

rootのパスワードを変更(設定)しておく
Google Cloud PlatformでVMインスタンスのrootのパスワードって何? | kamotora

VALHEIMをインストールするための事前準備

ゲームサーバーをインストールするために必要になるツールをインストールしていきます。

SteamCMDをインストール

SteamCMDは、普段インストールするStemのコマンドライン版です。下記コマンドを実行してインストールします。
参考: Valheim | LinuxGSM_

sudo dpkg --add-architecture i386; sudo apt update; sudo apt install 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

色々と同意を求められるので、yなどを押して進み、選択する画面が表示された際はTABを押してにカーソルが当たったらEnterを押します。そうすると下記の画面が表示されます。
↓を押して、I AGREEにカーソルを合わしてENTERを押します。

SDLをインストール

SDLという、必要な仕組みが入ってないそうなのでインストールします。

sudo dpkg --add-architecture i386; sudo apt update; sudo apt install libsdl2-2.0-0:i386

LinuxGSMをインストール

VALHEIMのサーバーを簡単に立てることができるLinuxGSMというゲームサーバー用ツールがあるので、こちらをインストールします。

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

VALHEIMのインストール

ようやくVALHEIMのサーバーをインストールします。

./vhserver install

サーバーのディレクトリの場所を聞かれるのでyを押す

サーバーの起動を確認します

./vhserver start

正常に起動すると下記のメッセージが表示されます。

[  OK  ] Starting vhserver: <サーバー名>

サーバーを停止させます

./vhserver stop

下記メッセージが表示されて停止します。

[  OK  ] Stopping vhserver: Graceful: CTRL+c: 5: OK

ワールドデータのアップロード

ワールドデータの保存場所(Windows)は、下記になります。
こちらは隠しフォルダの中なので、隠しフォルダを見れる設定にしていない場合は、見れるように変更して下さい。

C:\Users\<ユーザ名>\AppData\LocalLow\IronGate\Valheim\worlds

VMインスタンスへのアップロード先は下記になります。

/home/<ユーザ名>/.config/unity3d/IronGate/Valheim/worlds

ワールドデータをアップロードします

VMインスタンスにssh接続している場合は、exitを入力して切断しておきます。
ワールドデータをscpコマンドでアップロードします。
参考: scpコマンドでサーバー上のファイルorディレクトリをローカルに落としてくる – Qiita

scp -i ~/.ssh/<sshキーの名称> -P <sshのポート番号> -r <ワールドデータのディレクトリ> <ユーザー名>@<外部IPアドレス>:~/.config/unity3d/IronGate/Valheim/

サーバーの名前、パスワード、ワールド名の設定

再度sshで繋ぎ、サーバーの設定ファイルを編集していきます。
今回は下記コマンドを用いて、vimで設定ファイルを開いて編集します。vimで編集をしたことがない人は、下記サイトなどを参考にして下さい。
参考: 知識0から始めるVim講座 – Qiita

vim lgsm/config-lgsm/vhserver/vhserver.cfg

下記のように編集します。

##################################
####### Instance Settings ########
##################################
# PLACE INSTANCE SETTINGS HERE
## These settings will apply to a specific instance.
servername="<サーバー名>"
serverpassword="<パスワード>"
gameworld="<ワールド名>"
public="1"
  • サーバー名: 検索しやすい名前に。
  • パスワード: サーバーに接続するときに入力します(パスワードが短いとエラーになるらしいので6文字以上)
  • ワールド名: ワールドデータをアップロードしている場合は、そのワールド名を入力します。
  • public=“1”を記載することで、ゲーム起動後のサーバー選択のリストに表示されます。

以上でサーバーサイドの構築は完了です。

VALHEIMサーバーへの参加方法の設定

次にVALHEIMのサーバーへの参加方法を説明します。
こちらは、一緒にやるフレンドさんにも教える内容になります。

steamを起動し、上記タブの表示をクリックし、サーバーを選択する

サーバー画面の上記タブからお気に入りをクリックし、サーバーを追加をクリックする

サーバー追加欄に、IPアドレス(GCPのVMインスタンスの外部IP)とポート番号(2456)を入力します。

例) XXX.XXX.XXX.XXX:2456

VMインスタンスの外部IPの表示箇所は下記ピンク枠に表示されています。

このアドレスをお気に入りに追加をクリックして、お気に入りに表示されるようにする

正しくサーバーが起動していると、サーバー一覧にサーバー名が表示されます。
※サーバーを起動しておくことを忘れずに!

VALHEIMサーバーへの参加方法

接続するサーバーをクリックして、右下の接続をクリックする

VALHEIMのサーバー設定ファイルに記入したパスワードを入力し、接続をクリックする

VALHEIMのアプリケーションが起動すれば成功です。キャラクターを選択してスタートします。

ゲーム上でももう一度パスワードを聞かれるので入力する

I HAVE ARRIVED!!

ゲーム起動後の画面から参加する方法

ゲーム起動後からも参加することができます。

まず、キャラクター選択後にゲーム参加タブをクリックします。
次に、コミュニティのラジオボタンをクリックしてコミュニティのサーバー一覧を表示させ、自分のサーバー名を選択することで接続できます。(IP参加で直接IPを入力してもOKです)

注意点として、全てのサーバーが表示されるまでに少し時間がかかります。
「サーバー選択」の右に、画像では185/219という数字が表示されています。こちらは検索できたサーバー件数を表しており、少しずつ増えていきます。なので、サーバー名が表示されない場合は、この数値が増えなくなるまで一旦待ってみて下さい。
また、リロードを押すとなぜかサーバー件数が50あたりから増えなかったりします(^^;)一度この状態になるとゲームを再起動しないと直らないと思いますので、お気をつけ下さい。(2021/4/1時点)

まとめ

サーバーの立て方については初めて記載したので、分かりにくい点が多々あったかもしれません。少しでも参考になれば幸いです。

サーバーが表示されない場合は、少し待ったら表示されるかもしれません。それでも表示されない場合は、サーバー設定やファイヤーウォールの設定を見直してみて下さい。
サーバーの表示はされるけど接続がうまくいかない場合は、IPやポート、ファイヤーウォールの設定を見直してみて下さい。
それでもうまくいかないという方は、下記の参考にさせていただいた記事もご覧下さい。とても分かりやすいです。

それでは楽しいVALHEIMライフをお過ごし下さい。

参考にさせていただいた記事