見出し画像

Necesseのサーバー建てにめちゃめちゃトラブった件【完結】

※この記事は2024/1/28に原因が分かり、解決した記事です。


罪作りな神ゲー:Necesse

概要

Necesse(ネセス)っていうめちゃめちゃ面白そうなサバイバルクラフトゲームを見つけてしまったため、フレンズを招集して遊んでみた。

そしたらこのNecesseくんがとっても面白い。
NecesseはMinecraftTerrariaの長所を集めてさらに遊びやすくしたようなゲームで、それらを遊んでいたフレンズから絶大な好評を得た。
最初はシングルプレイワールドでマルチプレイをしていたものの、その場合はワールドの稼働者(私)がプレイしていないときは他のフレンズもワールドに入れないこととなる。利便性を考慮してマルチプレイ用のサーバーを立てることとなった…というか、建てさせて!ってお願いをした😘

言った本人としては「昔マイクラのサーバーも建てたことあるから大丈夫やろ!」と、500%の高をくくった上での発言だった。
そして作業を始めて紆余曲折あった結果、自分の望み通りのサーバーが建てれるまでに2週間ほどかかってしまった。

経緯

1.手順通りにやってもうまくいかなくない?

2年前ぐらいの日付ではあったものの、Necesseのマルチプレイ用サーバーを建てる記事があったため、基本的な手順はその記事のものを踏襲。手順がConohaVPSを使ってサーバーを作る方法であったため、同じくConohaVPSで開始。

基本的にその手順で問題無くサーバーの構築までは出来たものの、マルチプレイでの接続が出来ない問題が発生した。

2.原因不明なまま仮サーバーを建てる

サーバー自体は無事に起動出来ており、接続が出来ないためにファイアウォール等のネットワーク関係の問題であることはほぼ確定と判断したが、ファイアウォールの設定を弄っても改善する見込みはなかった。
ぶっちゃけるとネットワーク関係の問題は沼で、一度はまるとズブズブすることも多い。何よりも早くサーバーを建ててNecesseやりてえ気持ちがあったため、一度ここで匙を投げた。
代わりにゲームサーバーの作成・設定をしてくれるShockbyteというサービスに頼った。

Shockbyteのサイト。この時点で対応ゲームが多い

前述のConohaみたいなVPSサービスでも、Minecraft等のマルチサーバーをインストールして設定した状態でサーバーを建ててくれるサービスは割と多い。しかしNecesseは比較的新しいゲームだったこともあってか、対応している日本のVPSサービスは確認出来る限りは無かった。
一方ShockbyteではNecesseを含め、様々なゲームサーバーの作成に対応していた。サーバーを早く建てたかったこともあり、即ShockbyteでNecesseの仮サーバーを建てることとした。

3.仮サーバーの抱える問題点

Shockbyteでとても手軽にサーバーを建てれて無事Necesseのマルチプレイが出来るようになったんだけど、プレイをしている内に色々な問題点が発生していった。

  • サーバーが海外なこともあり、ラグが発生する。

  • サーバー自体がめちゃめちゃ重いことがある。
    ※重い状態でキャラクターを動かすと、マップの端まで操作不能状態で進み続ける不具合が頻発する。この問題が発生しているとまともにプレイが出来ない。

  • 前述2点により、バックアップ用のFTP通信に時間がかかる。

  • (おまけ)2024年現在円安なこともあり、サーバー利用料が結構高い。

問題点を抱えつつもプレイしていたが、ふと「OS変えたらどうだろ」とか「VPSサービスを変えてみるのアリじゃね?」など、原因をざっくり切り分けた上で試してみることとした。

4.OSの変更→失敗

前述の手順ではCentOSでサーバーを建てていたが、以前マイクラのサーバーを建てた時と同じOS(Ubuntu)を利用してサーバーを建ててみることにした。VPSサービスは変わらずConoha。

しかしOSを変えても接続は出来なかった。このため、LinuxOSの問題ではないことを確認。

5.VPSサービスの変更→成功

マイクラのサーバーを建てたときにKAGOYACLOUD VPSを利用していたため、いっちょKAGOYAの方でサーバーを建ててみた。OSはCentOSに戻した。
以前利用したときから時間が経っていてアカウントが削除されていたため、再登録するところから開始。

結論から言えば、KAGOYAのVPSでサーバーを建てることが出来た。ラグも無くサーバーが重くなることもなく、快適にNecesseをプレイ出来ている。

6.何故接続が出来たか?

ぶっちゃけ原因もよくわかっていないが、予想だけ。
詳しい人、誰か教えてください。

  • KAGOYAのCentOSイメージは後述の通り、FTPとかtar等のパッケージやサービスがインストールされていない。最低限のサービスで提供している分、ネットワーク関係の問題が発生するサービス(謎)が無かった?

  • Conohaは結構セキュリティ等の設定項目が多かった(たぶん)ため、そこの設定が問題で通信が通らなかった?

7.セキュリティグループの設定→成功 (2024/1/28追記)

ふとぼーっと調べてたときに、Conohaのセキュリティグループ機能の利用ガイドを発見した。これ自体はVPSのファイアウォールを設定するもので、デフォルトだと全てのポートが開放されている…と思っていた。

デフォルトだと全てのポートが開放されている…ように見える

でもでも、そういえばSSH接続とかFTP接続用のグループを割り当てておかないと各サービスに接続が出来なかったな…ってことを思い出して、Necesse用のグループを作成して割り当ててみると、Necesseクライアントから無事に接続することが出来た。
ConohaのVPSでNecesseをホストするにあたって足りなかった設定は、セキュリティグループ(仮想ファイアウォール)の設定だった。

14159のINポートのみ開放
作ったセキュリティグループをVPSの設定から割り当てる

総括(2024/1/28追記)

Conohaのセキュリティグループの設定について

経緯.7で考えていた「VPSのファイアウォールを設定するもの」は間違い。これはVPSに接続されている仮想ネットワークのファイアウォールを設定するもの。ややこしい。
言い換えると、VPSにファイアウォールが1個、その上流にファイアウォールが1個あった。つまり、通信を制限する門が2つあったということ。
今回の設定ではVPSの門の鍵だけ開けておいたのだけれども、もう一つの鍵を開けていなかったために、Necesseのサーバーを立てていても接続が出来なかった…ということとなる。

デフォルト(default)の設定はぱっと見全開放っぽく見える。意図された設定なのかは不明だが、このデフォルト設定はつけても付けなくても全てのポートが遮断される。
そのため、ポートを開放するときはVPSの方だけではなく、セキュリティグループの割り当てもしておくこと。

ConohaとKAGOYAのファイアウォール設定の違い

おそらく仕様的には下記の通りだと思われる。
(※想像なので間違ってたら誰か教えてください❤)

Conohaは仮想ファイアウォール設定を強制的にされる。デフォルトで全ポートが遮断される。
KAGOYAは仮想ファイアウォール設定を任意に出来る。仮想ファイアウォールを設定していなければ、デフォルトで全ポートが開放される。

一応明記しておくけど、どちらが良いとか悪いとかって話ではない。
Conohaはデフォルトで通信を遮断しておくことにより安全性を担保しているが、セキュリティグループの機能を知らないと初見殺しになり得る。KAGOYAは後述のFPSも含めて最小限の提供で、やや手間はかかるが無駄な設定が無い。Conohaと比較するとサービス料も安め。
(タイムリーなので追記、Conohaは割引キャンペーンとかクーポンの配布が若干多い印象はある)

若干KAGOYAが上級者っぽい印象はあるけど、そこまで違いは無いのでお好きな方でどうぞ!という感じ。
そしてConohaを選ぶなら、Shockbyteみたいに鯖立てからやってくれるConoha for GAMEを選んだ方がたぶん楽ちんだとは思う。ただし、今はNecesseがそもそも対応してなかったり、ついでにPalworldが人気で申し込みが殺到してるから受付停止している模様。みんな、鯖立てしようね。

おまけ:サーバー構築メモ

※①サーバーを建てるまでにやったことを思い出しつつ書き出したもので、下記の手順通りにやったらちゃんとサーバー出来るかどうかについては確認してません。ヒントにはなるかも。
ちゃんと出来ました♥

※②下記コマンドは全てrootユーザーでやってますが、セキュリティ的にはちゃんと専用のユーザーを作った方がいいらしいです。後述のFTP含めて、気にする場合はちゃんとしようね!

最終環境
KAGOYACLOUD VPS CentOS Stream9

やること(インストール編)

結構事前にインストールしなきゃいけないアプリが多くてしょんぼり。
とはいえyumコマンドでさくっとインストール出来るのは楽かも。

#glibc.i686をインストールする(SteamCMDの起動に必要)
yum install -y glibc.i686

#tarをインストールする(KAGOYAのCentOSに無い/SteamCMDの解凍に必要)
yum install -y tar

#EPELをインストールする(screenのインストールに必要)
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

#screenをインストールする(※後述)
yum install -y screen

#vsftpdをインストールする(KAGOYAのVPSにFTP機能がないので)
yum install -y vsftpd

#SteamCMDをインストールしてSteamを起動する
mkdir ~/Steam; cd ~/Steam
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
./steamcmd.sh

やること(Steam編)

ここからSteamCMD操作となり、行頭にSteam > の表示が出ます。
下記のコマンドはSteam > の次の部分から入力する必要があります。

#匿名でログイン
Steam > login anonymous

#インストールディレクトリ設定(エラーは無視)
Steam > force_install_dir /opt/Necesse

#Necesseインストール
Steam > app_update 1169370 validate

#おわり
Steam > exit

やること(ファイアウォール編)

#ファイアウォール設定(14159/UDP)
firewall-cmd --zone=public --add-port=14159/udp --permanent

#ファイアウォール適用
firewall-cmd --reload

やること(vsptfd編)

※セキュリティがものすごく低いセットアップ方法です。多人数が利用するサーバーで起動することを推奨しませんので、後述の参考リンクの記事を見てちゃんとセキュリティの高い状態でセットアップしてください。

#Viでvsftpd.confにuserlist_enable=YESがあることを確認(たぶんデフォルト?)
vi /etc/vsftpd/vsftpd.conf

#Viでuser_listのrootが書かれている行頭に#を入れてコメントアウトする
vi /etc/vsftpd/user_list

#Viでftpusersのrootが書かれている行頭に#を入れてコメントアウトする
vi /etc/vsftpd/ftpusers

#vsftpdを起動する
#※もっといいやり方がたぶんある。巷で紹介されている/etc/init.d/vsftpd startが作動しなかった。
systemctl start vsftpd.service

やること(Necesse起動編)

※後述の記事ではscreenを利用しない方法でサーバーを建てていますが、その場合Tera term等からのSSH接続を切ったら爆速でサーバーが停止します。
(VPSサービスのコントロールパネルからコンソールを操作したらどうなるかは確認してません)

cd /opt/Necesse
screen ./StartServer-nogui.sh

めちゃめちゃ参考にさせて頂いたサイト

ありがとうございました❤

今回利用させて頂いたサービス

お世話になりました❤

この記事が気に入ったらサポートをしてみませんか?