VALHEIMを無料で短期運用するためのレンタルサーバーの立て方
話題だからと始めた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のサーバーを動かす最低限のスペックを確認すると
となっています。そのため、ブートディスクを下記のように設定し、選択をクリックします。
- オペレーティングシステム: 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ライフをお過ごし下さい。